Нет необходимости устанавливать какой-либо дополнительный пакет, ваш старый добрый шелл может сделать это самостоятельно.
Этот однострочный загрузит ваши четыре ядра 1 на 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Как это работает, довольно просто, он запускает четыре бесконечных цикла. Каждый из них повторяет нулевую инструкцию ( :
). Каждый цикл способен загружать ядро процессора на 100%.
Если вы используете bash
, ksh93
и другие оболочки поддерживаете диапазоны, (т.е. не dash
старше ksh
), вы можете использовать это не портативный синтаксис:
for i in {1..4}; do ...
Замените 4
на количество процессоров, которые вы хотите загрузить, если отличается от 4
.
Предполагая, что при запуске одного из этих циклов у вас уже не было фоновой работы, вы можете остановить генерацию нагрузки с помощью этой команды:
for i in 1 2 3 4; do kill %$i; done
Отвечая на комментарий @ underscore_d, вот улучшенная версия, которая значительно упрощает остановку загрузки, а также позволяет указать тайм-аут (по умолчанию 60 секунд.) A Control- Cтакже уничтожит все циклы разгона. Эта функция оболочки работает как минимум под 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
)
}
1 Обратите внимание, что с процессорами, поддерживающими более одного потока на ядро (Hyper-threading), ОС распределяет нагрузку на все виртуальные процессоры. В этом случае поведение загрузки зависит от реализации (для каждого потока может быть указано, что он занят на 100% или нет). ,
cat
одновременно?