Я хотел бы протестировать ложную нагрузку на сервер, я ищу какую-нибудь утилиту командной строки для выжигания или тестирования производительности, которая создала бы нагрузку на процессор в системе.
Я хотел бы иметь возможность прожигать только ЦП (без нагрузки на жесткий диск, сеть и прочее) и чтобы я мог установить период, в течение которого будет выполняться нагрузка. Это означает, что мне нужно что-то, что могло бы работать: загрузка процессора в течение 10 минут в системе.
Любые идеи?
Вы можете скачать и установить "стрессовую" утилиту ... Она позволяет генерировать нагрузку на ЦП, память, диск и ввод-вывод из командной строки.
Домашняя страница: http://people.seas.harvard.edu/~apw/stress/
ВОПРОСЫ-ОТВЕТЫ: http://people.seas.harvard.edu/~apw/stress/FAQ
Я предпочитаю операции с плавающей запятой:
for i in `seq 64`; do perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $sqrt = sqrt($j) for (1..9999); }' & done
Обратите внимание на номер вашего процессора :-)
Я часто хочу этим заниматься. Но у меня нет хорошего способа сделать это. Я просто пишу небольшой Perl-скрипт, который будет зацикливаться столько секунд, сколько я хочу.
Например. (на 10 минут):
perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $j *= 1.1 for (1..9999); }'
Конечно, если у вас есть п процессоров, вы можете добавить цикл bash для создания такого количества процессов:
#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
perl -e .... &
done
wait
Я рекомендую использовать стресс-нг, он имеет гораздо больше функций, чем стресс, и может работать с гораздо большей частью операционной системы.
Вот чистая оболочка (хотя бы bash
& ksh
) способом, который я уже писал в ответ на аналогичный вопрос Вот
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}