Sie brauchen kein zusätzliches Paket zu installieren, Ihre gute alte Shell kann das alleine tun.
Dieser Einzeiler lädt Ihre vier Cores1 zu 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Wie das funktioniert, ist ganz einfach, er startet vier Endlosschleifen. Jede dieser Schleifen wiederholt die Null-Anweisung (:
). Jede Schleife ist in der Lage, einen CPU-Kern zu 100% zu laden.
Wenn Sie bash
, ksh93
und andere Shells verwenden, die Bereiche unterstützen (d.h. nicht dash
oder ältere ksh
), können Sie diese nicht portable Syntax verwenden:
for i in {1..4}; do ...
Ersetzen Sie 4
durch die Anzahl der CPUs, die Sie laden möchten, wenn sie sich von 4
unterscheidet.
Angenommen, Sie hatten keinen Hintergrund-Job, der bereits lief, als Sie eine dieser Schleifen gestartet haben, dann können Sie die Lastgenerierung mit diesem Befehl stoppen:
for i in 1 2 3 4; do kill %$i; done
Auf den Kommentar von @underscore_d antwortend, hier ist eine verbesserte Version, die das Stoppen der Last sehr vereinfacht und die es auch erlaubt, einen Timeout anzugeben (Voreinstellung 60 Sekunden. Diese Shell-Funktion funktioniert mindestens unter bash
und 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
)
}
1Hinweis: Bei CPUs, die mehr als einen Thread pro Kern unterstützen (Hyper-Threading), wird das Betriebssystem die Last an alle virtuellen CPUs verteilen. In diesem Fall ist das Lastverhalten implementierungsabhängig (jeder Thread kann als zu 100% ausgelastet oder nicht ausgelastet gemeldet werden).