Как вызвать высокую загрузку процессора и стресс-тест в Linux с помощью инструмента Stress-ng
Как Системный администратор, вы можете проверять и отслеживать состояние ваших систем Linux, когда они испытывают высокую нагрузку. Это может быть хорошим способом для системных администраторов и программистов:
- тонкая настройка действий в системе.
- контролировать интерфейсы ядра операционной системы.
- протестируйте аппаратные компоненты Linux, такие как процессор, память, дисковые устройства и многие другие, чтобы наблюдать за их производительностью в условиях нагрузки.
- измерять различные энергопотребляющие нагрузки в системе.
В этом руководстве мы рассмотрим два важных инструмента: stress и stress-ng для стресс-тестирования ваших систем Linux.
1. stress – это инструмент генерации рабочей нагрузки, предназначенный для того, чтобы подвергнуть вашу систему настраиваемой нагрузке на процессор, память, операции ввода-вывода и диск.
2. stress-ng – это обновленная версия инструмента генератора стрессовой нагрузки, который проверяет вашу систему на наличие следующих функций:
- Вычисление процессора
- стресс
- Синхронизация ввода-вывода
- Канальный ввод-вывод
- перебор кэша
- Стресс ВМ
- нагрузка на гнездо
- создание и завершение процесса
- свойства переключения контекста
Хотя эти инструменты хороши для проверки вашей системы, их не должен использовать любой пользователь системы.
Важно. Настоятельно рекомендуется использовать эти инструменты с привилегиями пользователя root, поскольку они могут слишком быстро нагрузить ваш компьютер Linux и избежать определенных системных ошибок на плохо спроектированном оборудовании. .
Как установить инструмент «стресс» в Linux
Чтобы установить инструмент стресса в Debian и его производных, таких как Ubuntu и Mint, выполните следующую команду.
sudo apt-get install stress
Чтобы установить стресс в RHEL/CentOS и Fedora Linux, вам необходимо включить репозиторий EPEL, а затем ввести следующую команду yum, чтобы установить такой же:
yum install stress
Общий синтаксис использования стресс:
sudo stress option argument
Некоторые варианты, которые можно использовать при стрессе.
- Чтобы создать N рабочих, вращающихся в функции sqrt(), используйте параметр –cpu N следующим образом.
- Чтобы создать N рабочих, вращающихся в функции sync(), используйте параметр –io N следующим образом.
- Чтобы создать N рабочих процессов, вращающихся в функциях malloc()/free(), используйте параметр –vm N.
- Чтобы выделить память для каждого работника виртуальной машины, используйте параметр –vm-bytes N.
- Вместо освобождения и перераспределения ресурсов памяти вы можете перезагрязнить память, используя параметр –vm-keep.
- Установите для режима сна значение N секунд перед освобождением памяти с помощью параметра –vm-hang N.
- Чтобы создать N рабочих процессов, вращающихся в функциях write()/unlink(), используйте параметр –hdd N.
- Вы можете установить таймаут через N секунд, используя параметр –timeout N.
- Установите коэффициент ожидания N микросекунд перед началом любой работы, используя параметр –backoff N следующим образом.
- Чтобы отобразить более подробную информацию при стрессе, используйте параметр -v.
- Используйте –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]