Стресс тест процессора и памяти (VM) на Linux
Я хочу проверить свой сервер Linux, OpenBSD, FreeBSD и Unix как он выдержит большую нагрузку и как он будет работать в такой ситуации. Какими средствами я буду тестировать нагрузку на память, процессор и подсистему ввода-вывода в Linux или Unix-подобных?
Администратор может попробовать любой из следующих инструмент для формирования определенной нагрузки. Случаи, в которых это полезно включать в себя те, в которых системный администратор хочет, чтобы выполнить настройки ядра или программист желает оценить при каких условиях произойдет отказ сервиса, и проверить свои системы исключительно на высокой нагрузке с мониторингом состояния и т.д. Также эти утилиты полезны системным администраторам, системным интеграторам и оверклокерам, которые хотят проверить оборудования в условиях высокой нагрузки и контролировать стабильность и среду.
- Stress: Это простой генератор рабочей нагрузки для систем POSIX. Имеет конфигурируемый количество ЦП, памяти, ввода-вывода и дискового стресса в системе. Написано на C, и является свободным программным обеспечением под лицензией GPLv2. Это не тест, а скорее инструмент, предназначенный
- Stress-ng: Это обновленная версия инструмента stress, и он может провести стресс-тест сервера для следующих функций:
- CPU
- Cache
- Тестирования привода
- Синхронизация ввода / вывода
- VM тест
- Тест Socket,
- Переключение контекста
- Создание процесса и прекращение
- Он включает в себя более 60 различных стресс-тестов, более 50 процессоров конкретных стресс-тестов, которые осуществляют с плавающей точкой, целое число, манипуляции с битами и контроль потока, более 20 виртуальных стресс-тестов памяти.
Предупреждение: Запуск следующего инструмента рекомендуется с root привилегиями что бы избежать ошибок памяти и других. Кроме того, обратите внимание, что средства будут использовать ресурсы сервера быстро, так что используйте следующую команду рассудительно.
Инструмент # 1: Начало работы с инструментом stress
Эта программа проста в использовании и рекомендуется для новичков администраторов. Инструмент как известно, работает на платформах x86 и Linux и FreeBSD / OpenBSD, PowerPC AIX и Linux, SPARC Solaris, Compaq Alpha Tru64 UNIX, и многие другие.
Установите пакет stress
Вы можете установить stress как часть дистрибутива.
Установка на CentOS, RHEL, и Fedora Linux
Во-первых, нужно включить epel repo , а затем введите следующую команду , чтобы установить пакет:
1 |
sudo yum install stress |
Установка на Debian и Ubuntu Linux
Введите следующую команду что бы установить пакет:
1 |
apt-get install stress |
Установка на FreeBSD
Введите следующую команду PKG, чтобы установить пакет stress с помощью бинарного метода:
1 2 3 |
pkg install stress ## OR ## pkg install sysutils/stress |
Установка на OpenBSD
Введите следующую команду pkg_add установить инструмент stress с помощью бинарного метода:
1 2 |
export PKG_PATH=http://ftp.usa.openbsd.org/pub/OpenBSD/`uname -r`/packages/`arch -s` pkg_add stress |
Как использовать инструмент stres?
Во-первых, запишите текущие средние нагрузки в системе, введя следующую команду:
1 |
# uptime |
Затем выполните любое из следующих команду, чтобы увидеть нагрузку на экране:
1 |
# watch uptime |
ИЛИ использовать команду Tload :
1 |
# tload |
Синтаксис выглядит следующим образом:
1 2 3 4 5 |
stress [OPTION] ## Stress using CPU-bound task stress -c 4 ## Stress using IO-bound task stress -i 2 |
Например, мы указываем параметры чтобы создать нагрузку на сервер:
1 2 3 |
# uptime # stress -c 2 -i 1 -m 1 --vm-bytes 128M -t 10s # uptime |
- -c 2 : Spawn two workers spinning on sqrt()
- -i 1 : Spawn one worker spinning on sync()
- -m 1 : Spawn one worker spinning on malloc()/free()
- --vm-bytes 128M : Malloc 128MB per vm worker (default is 256MB)
- -t 10s : Таймаут после 10 сек
- -v : Развернутый вывод
Инструмент # 2: Начало работы с stress-ng
Инструмент stress-ng тестирует компьютерную систему различными выбираемыми способами.
Устаноdка stress-ng на Linux или Unix-подобных системах
Введите следующую команду, чтобы загрузить stress-ng архив с помощью команды Wget:
1 2 |
$ cd /tmp $ wget http://kernel.ubuntu.com/~cking/tarballs/stress-ng/stress-ng-0.03.11.tar.gz |
Распакуйте архив следующим способом:
1 |
$ tar zxvf stress-ng-0.03.11.tar.gz |
Устанавливаем пакет как обычно
1 2 |
$ cd stress-ng-0.03.11 $ make |
Как использовать инструмент stress-ng?
Синтаксис:
1 2 3 4 |
stress-ng [options] stress-ng -c 2 stress-ng -c 4 -t 10 -v stress-ng -c 4 --metrics-brief |
Примеры
Для запуска в течение 60 секунд с 4 CPU, 2 IO и 1 VM использующей 1 Гб виртуальной памяти, введите
1 |
stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief |
Пример вывода команды:
В этом примере, используется 16 процессоров стресса и останавливается после 900 000 операций:
1 |
stress-ng --cpu 16 --cpu-ops 900000 |
Чтобы запустить 4 одновременных экземпляры всех стрессоров последовательно один за другим, каждый в течение 6 минут и резюме с показателями производительности в конце:
1 |
stress-ng --sequential 4 --timeout 6m --metrics |
Для запуска 2 FFT ЦПУ теста, остановка после 5000 операций и получения резюме только за результаты FFT:
1 |
stress-ng --cpu 2 --cpu-method fft --cpu-ops 5000 --metrics−brief |
Для выполнения теста CPU на всех доступных CPU, в течение 2 часов:
1 |
stress−ng --cpu 0 --cpu-method all -t 2h |
Для запуска 2 экземпляров всех стрессоров в течение 10 минут:
1 |
stress-ng --all 2 --timeout 10m |
Чтобы запустить 128 стрессоров, которые выбираются случайным образом из всех имеющихся:
1 |
stress-ng --random 128 |
Для запуска 64 экземпляров всех различных стрессовых факторов CPU в течение 5 минут с резюме в конце:
1 |
stress-ng --cpu 64 --cpu−method all --verify -t 5m --metrics−brief |
Чтобы запустить все тесты один за другим в течение 5 минут, с количеством экземпляров каждого стрессора соответствует числу онлайн-процессоров:
1 |
stress-ng --sequential 0 -t 5m |
Если полученные результаты тестов оказались не удовлетворительными и ваш сервер начинает тормозить при малейших нагрузках, его необходимо оптимизировать. Обращайтесь и мы выполним для вас оптимизацию сервера.