Je hoeft geen extra pakket te installeren, je goede oude schil kan het alleen.
Deze one-liner laadt je vier kernen1 op 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Hoe het werkt is vrij eenvoudig, het start vier eindeloze lussen. Elk van deze lussen herhaalt de null instructie (:). Elke lus is in staat om een CPU kern op 100% te laden.
Als je bash, ksh93 en andere shells ondersteunende bereiken gebruikt, (dus niet dash of oudere ksh), kun je deze niet-overdraagbare syntax gebruiken:
for i in {1..4}; do ...
Vervang 4 met het aantal CPU’s dat je wilt laden als het anders is dan 4.
In de veronderstelling dat je geen achtergrond job had die al draaide toen je een van deze lussen lanceerde, kan je het laden stoppen met dat commando:
for i in 1 2 3 4; do kill %$i; done
Antwoorden @underscore_d’s commentaar, hier is een verbeterde versie die veel vereenvoudigen bij het stoppen van het laden en die ook het opgeven van een time-out (standaard 60 seconden.) Een Control-C zal ook alle weggelopen lussen doden. Deze shell functie werkt tenminste onder bash en 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
)
}
1Note dat met CPU’s die meer dan één thread per core ondersteunen (Hyper-threading), het OS de load naar alle virtuele CPU’s zal sturen. In dat geval is het loadgedrag afhankelijk van de implementatie (elke thread kan als 100% bezet worden gerapporteerd of niet).