Non c'è bisogno di installare alcun pacchetto extra, il vostro buon vecchio shell è in grado di farlo da solo.
Questo one-liner caricherà i vostri quattro core1 al 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Come funziona è abbastanza semplice, avvia quattro loop infiniti. Ognuno di essi ripete l'istruzione nulla (:). Ogni loop è in grado di caricare un core di CPU al 100%.
Se si utilizza bash, ksh93 e altre shell che supportano le gamme, (cioè non dash o più vecchie ksh), è possibile utilizzare questa sintassi non portatile:
for i in {1..4}; do ...
Sostituire 4 con il numero di CPU che si desidera caricare se diverso da 4.
Supponendo che non aveste un lavoro in background già in esecuzione quando avete lanciato uno di questi loop, potete fermare la generazione del carico con questo comando:
for i in 1 2 3 4; do kill %$i; done
Rispondendo al commento di @underscore_d, ecco una versione migliorata che semplifica molto l'arresto del carico e che permette anche di specificare un timeout (default 60 secondi.) Un Control-C ucciderà anche tutti i loop in runaway. Questa funzione di shell funziona almeno sotto bash e 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
)
}
``` &001
1Notare che con CPU che supportano più di un thread per core (Hyper-threading), il sistema operativo invierà il carico a tutte le CPU virtuali. In questo caso, il comportamento del carico dipende dall'implementazione (ogni thread potrebbe essere segnalato come occupato al 100% o meno)...