Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

3 года назад
Открыть в
Когда настраиваешь мониторинг на ненагруженных машинах, хочется дать какую-то среднюю нагрузку, чтобы посмотреть, как выглядят получившиеся графики и дашборды. Для стресс тестов есть специальные утилиты, типа stress. Но чаще всего не хочется что-то устанавливать для этого. Для этих целей в Linux часто используют псевдоустройства /dev/urandom или /dev/zero, направляя куда-нибудь их вывод. Вот простой пример: # while true; do dd if=/dev/urandom count=30M bs=1 \ | bzip2 -9 > /tmp/tempfile  ; rm -f /tmp/tempfile  ; done Получилась универсальная нагрузка, которая идёт как на дисковую подсистему, так и на процессор. Изменяя размер файла (30M) и степень сжатия (-9) можно регулировать эту нагрузку. Чем больше размер файла, тем больше нагрузка на диск, чем больше уровень сжатия, тем больше нагрузка на процессор. Можно только диски нагрузить и проверить скорость записи. Эту команду я постоянно использую, чтобы быстро оценить, с какими дисками я имею дело: # sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync Увеличивая размер блока данных (1M) или количество этих блоков (1024) можно управлять характером нагрузки и итоговым объёмом записываемых файлов. Если хотите нагрузить только CPU, то достаточно вот такой простой конструкции: # dd if=/dev/zero of=/dev/null Она загрузит только одно ядро. Для двух можно запустить их в паре: # cpuload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; \ cpuload; read; pkill dd Процессы запустятся в фоне, по нажатию Enter в консоли, завершатся. Если у вас нет pkill, используйте killall. Процессор нагрузить проще всего. Можно также использовать что-то типа такого: # sha1sum /dev/zero Это так же нагрузит одно ядро. Для нескольких, запускайте параллельно в фоне несколько процессов расчёта. Вот ещё один вариант нагрузки на 4 ядра с ограничением времени. В данном случае 10 секунд: # seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null Причём эта нагрузка будет в большей степени в пространстве ядра. А показанная выше с sha1sum в пространстве пользователя. Пример на 2 ядра: # seq 2 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero Если убрать timeout, то нагрузка будет длиться до тех пор, пока вы сами её не остановите по Ctrl-C. Для загрузки памяти в консоли быстрее всего воспользоваться python3: # python3 -c 'a="a"*1024**3; input()' Съели 1G памяти. #bash #linux #terminal