Вопрос: Как я могу получить высокую загрузку процессора на сервере Linux?
Я сейчас в процессе отладка установки кактусов и хотите создать загрузку процессора для отладки графиков использования процессора.
Я попытался просто запустить cat /dev/zero > /dev/null
, который отлично работает, но использует только 1 ядро:

Есть ли лучший способ тестирования / расширения системных ресурсов под нагрузкой?
Связанный: Как я могу получить высокую загрузку процессора в Windows?
138
2018-06-30 17:13
Источник
Ответы:
Пытаться stress
Это в значительной степени эквивалент Windows consume.exe
:
oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd
157
2018-06-30 17:27
Нет необходимости устанавливать какой-либо дополнительный пакет, ваша хорошая старая оболочка может сделать это в одиночку.
Этот однострочный сканер загрузит ваши четыре ядра на 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
Комментарий Answering @ underscore_d, вот расширенная версия, которая упрощает много остановки загрузки, а также позволяет указать тайм-аут (по умолчанию 60 секунд). A контроль-С также убьет все беглые петли. Эта функция оболочки работает по крайней мере в 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
)
}
82
2017-07-01 14:55
Я сделал простой скрипт python, который делает то же самое. Вы можете контролировать количество ядер процессора, которые вы хотите загрузить. Хорошая вещь в этом заключается в том, что он не будет потреблять другой ресурс, кроме процессора. (Я думаю, что идея джонсона будет потреблять много ресурсов ввода-вывода, что здесь нежелательно).
from multiprocessing import Pool
def f(x):
# Put any cpu (only) consuming operation here. I have given 1 below -
while True:
x * x
# decide how many cpus you need to load with.
no_of_cpu_to_be_consumed = 3
p = Pool(processes=no_of_cpu_to_be_consumed)
p.map(f, range(no_of_cpu_to_be_consumed))
Просто запустите этот скрипт из терминала $ python temp1.py
, Вам нужно убить скрипт, когда закончите.
Здесь, мой расход процессора, когда я загружаю 3 своих ядра.

18
2018-06-30 17:56
Одним из альтернативных способов было бы
openssl speed -multi $(grep -ci processor /proc/cpuinfo)
или (если присутствует nproc)
openssl speed -multi $(nproc --all)
OpenSSL почти всегда присутствует на современных дистрибутивах, поэтому дополнительных пакетов не требуется.
12
2017-09-08 11:19
Начните два
sha1sum /dev/zero &
команд для каждого ядра вашей системы.
Остановиться
killall sha1sum
или
kill sha1sum
8
2017-11-01 21:31
Я обычно беру cpuburn suite:
sudo apt-get install cpuburn
for i in {1..4}; do burnK7 & done
Замените 4 количеством сердечников / HT-нитей, которые вы хотите или хотите подчеркнуть.
Примечание. Это одновременно увеличивает как можно большую площадь микросхемы, поэтому она запрограммирована на максимальное рассеивание мощности. Я должен был написать этот пост во второй раз, мне как-то не понравилась моя машина :-(
Вы также можете делать cpuburn в последовательности:
burnP6 & burnP6 & burnP6 & burnP6 &
[1] 28520
[2] 28521
[3] 28522
[4] 28523
И когда вы хотите их остановить:
killall burnP6
Вы также можете умножить burnP6 &
чтобы соответствовать количеству ядер процессора в вашей системе.
7
2017-07-25 21:33
Я развиваю стресс-нг, обновленный инструмент стресса, который может подчеркнуть широкий спектр аспектов системы Linux. Для получения дополнительной информации см. http://kernel.ubuntu.com/~cking/stress-ng/
Использование похоже на стресс
$ stress-ng --cpu 4 --vm 2 --fork 8 --switch 4 --timeout 1m
stress-ng: info: [32254] dispatching hogs: 4 cpu, 8 fork, 4 switch, 2 vm
stress-ng: info: [32254] cache allocate: default cache size: 8192K
Установите с
sudo apt-get install stress-ng
5
2017-09-06 20:11