Поиск по сайту:

Как вызвать высокую загрузку процессора и стресс-тест в Linux с помощью инструмента Stress-ng


Как Системный администратор, вы можете проверять и отслеживать состояние ваших систем Linux, когда они испытывают высокую нагрузку. Это может быть хорошим способом для системных администраторов и программистов:

  1. тонкая настройка действий в системе.
  2. контролировать интерфейсы ядра операционной системы.
  3. протестируйте аппаратные компоненты Linux, такие как процессор, память, дисковые устройства и многие другие, чтобы наблюдать за их производительностью в условиях нагрузки.
  4. измерять различные энергопотребляющие нагрузки в системе.

В этом руководстве мы рассмотрим два важных инструмента: stress и stress-ng для стресс-тестирования ваших систем Linux.

1. stress – это инструмент генерации рабочей нагрузки, предназначенный для того, чтобы подвергнуть вашу систему настраиваемой нагрузке на процессор, память, операции ввода-вывода и диск.

2. stress-ng – это обновленная версия инструмента генератора стрессовой нагрузки, который проверяет вашу систему на наличие следующих функций:

  1. Вычисление процессора
  2. стресс
  3. Синхронизация ввода-вывода
  4. Канальный ввод-вывод
  5. перебор кэша
  6. Стресс ВМ
  7. нагрузка на гнездо
  8. создание и завершение процесса
  9. свойства переключения контекста

Хотя эти инструменты хороши для проверки вашей системы, их не должен использовать любой пользователь системы.

Важно. Настоятельно рекомендуется использовать эти инструменты с привилегиями пользователя root, поскольку они могут слишком быстро нагрузить ваш компьютер Linux и избежать определенных системных ошибок на плохо спроектированном оборудовании. .

Как установить инструмент «стресс» в Linux

Чтобы установить инструмент стресса в Debian и его производных, таких как Ubuntu и Mint, выполните следующую команду.

sudo apt-get install stress

Чтобы установить стресс в RHEL/CentOS и Fedora Linux, вам необходимо включить репозиторий EPEL, а затем ввести следующую команду yum, чтобы установить такой же:

yum install stress

Общий синтаксис использования стресс:

sudo stress option argument

Некоторые варианты, которые можно использовать при стрессе.

  1. Чтобы создать N рабочих, вращающихся в функции sqrt(), используйте параметр –cpu N следующим образом.
  2. Чтобы создать N рабочих, вращающихся в функции sync(), используйте параметр –io N следующим образом.
  3. Чтобы создать N рабочих процессов, вращающихся в функциях malloc()/free(), используйте параметр –vm N.
  4. Чтобы выделить память для каждого работника виртуальной машины, используйте параметр –vm-bytes N.
  5. Вместо освобождения и перераспределения ресурсов памяти вы можете перезагрязнить память, используя параметр –vm-keep.
  6. Установите для режима сна значение N секунд перед освобождением памяти с помощью параметра –vm-hang N.
  7. Чтобы создать N рабочих процессов, вращающихся в функциях write()/unlink(), используйте параметр –hdd N.
  8. Вы можете установить таймаут через N секунд, используя параметр –timeout N.
  9. Установите коэффициент ожидания N микросекунд перед началом любой работы, используя параметр –backoff N следующим образом.
  10. Чтобы отобразить более подробную информацию при стрессе, используйте параметр -v.
  11. Используйте –help, чтобы просмотреть справку по использованию стресса или просмотреть справочную страницу.

Как использовать стресс в системах Linux?

1. Чтобы проверить эффект команды при каждом ее запуске, сначала запустите команду uptime и запишите среднее значение нагрузки.

Затем запустите команду stress, чтобы создать 8 рабочих, вращающихся в sqrt() с тайм-аутом 20 секунд. После запуска стресса снова запустите команду uptime и сравните среднее значение нагрузки.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Пример вывода
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Чтобы создать 8 рабочих процессов, вращающихся в sqrt() с тайм-аутом 30 секунд и отображающих подробную информацию об операции, выполните следующую команду:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Пример вывода
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Чтобы разделить один рабочий процесс на функции malloc() и free() с таймаутом 60 секунд, выполните следующую команду.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Пример вывода
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Чтобы создать 4 рабочих процесса, вращающихся в sqrt(), 2 рабочих, вращающихся в sync(), 2 рабочих в malloc()/free(), со временем 20 секунд и выделить память 256 МБ на каждую виртуальную машину, выполните эту команду ниже.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Пример вывода
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]