MyTetra Share
Делитесь знаниями!
Создание искусственной нагрузки на диск и процессор в Linux
Время создания: 29.12.2020 09:33
Текстовые метки: linux, создание, генерация, нагрузка, затормозить, диск, процессор, микропроцессор
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1609223593eqd2uw9ge3/text.html на raw.github.com

Иногда для моделирования нагруженных условий работы программы или информационной системы, нужно уметь создавать искуственную нагрузку.



Создание нагрузки с помощью стандартных утилит


В Linux сделать такую нагрузку можно с помощью следующей команды:



while true; do dd if=/dev/urandom count=10M bs=1 | bzip2 -9 > /tmp/random.bin ; rm -f /tmp/random.bin ; done



Эта команда создаст как нагрузку на дисковую подсистему ввода-вывода за счет работы с большим генерируемым файлом, так и нагрузку на процессор за счет использования алгоритма упаковки. Если у bzip2 задана опция -9, то нагрузка больше распределяется на процессор, если задать опцию -1, то сильнее нагрузится HDD.


Если нужно нагрузить только процессор, то реальный файл /tmp/random.bin можно заменить /dev/null, и тогда команда будет выглядеть так:



while true; do dd if=/dev/urandom count=10M bs=1 | bzip2 -9 > /dev/null ; done



Если нужно нагрузить сразу несколько ядер, то можно запустить данную команду в нескольких терминалах.


Если надо создать нагрузку только на диск, то из команды можно исключить архиватор, чтобы скорость копирования не упиралась в возможности CPU, и вытягивать из файла рандомайзера большие куски данных (bs=50000):



while true; do dd if=/dev/urandom count=10000 bs=50000 > /tmp/random.bin ; rm -f /tmp/random.bin ; done



- данная команда будет работать с генерируемыми файлами размером 500Mb.



Создание нагрузки с помощью специализированной утилиты


Но для удобства можно воспользоваться утилитой stress, если она есть в репозитарии дистрибутива. Данной утилитой достаточно просто можно создать нагрузку на заданное количество ядер:



stress --cpu 4



С помощью опции --io <N> можно создать несколько "веркеров", которые будут генерировать нагрузку на дисковую систему ввода-вывода. А с помощью опции --vm <N> можно создать несколько "веркеров", генерирующих нагрузку на память вычислительного устройства.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования