Назад | Перейти на главную страницу

Как создать нагрузку на ЦП на сервере Linux

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

Я хотел бы иметь возможность прожигать только ЦП (без нагрузки на жесткий диск, сеть и прочее) и чтобы я мог установить период, в течение которого будет выполняться нагрузка. Это означает, что мне нужно что-то, что могло бы работать: загрузка процессора в течение 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

Я рекомендую использовать стресс-нг, он имеет гораздо больше функций, чем стресс, и может работать с гораздо большей частью операционной системы.

http://kernel.ubuntu.com/~cking/stress-ng/

Вот чистая оболочка (хотя бы 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
  )
}