Non è necessario installare alcun pacchetto aggiuntivo, la tua buona vecchia shell è in grado di farlo da sola.
Questo one-liner caricherà i tuoi quattro core 1 al 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Come funziona è abbastanza semplice, inizia quattro cicli infiniti. Ognuno di loro sta ripetendo l'istruzione null ( :
). Ogni loop è in grado di caricare un core della CPU al 100%.
Se si utilizza bash
, ksh93
e altre shell di supporto gamme, (cioè non dash
o più ksh
), è possibile utilizzare questa sintassi non portatile:
for i in {1..4}; do ...
Sostituisci 4
con il numero di CPU che desideri caricare se diverso da 4
.
Supponendo che non fosse già in esecuzione alcun processo in background quando è stato avviato uno di questi loop, è possibile interrompere la generazione del carico con quel 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 consente anche di specificare un timeout (predefinito 60 secondi.) A Control- Cucciderà anche tutti i loop in fuga. 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
)
}
1 Notare che con le CPU che supportano più di un thread per core (Hyper-threading), il sistema operativo invierà il carico a tutte le CPU virtuali. In tal caso, il comportamento del carico dipende dall'implementazione (ogni thread potrebbe essere segnalato come occupato al 100% o meno). .
cat
contemporaneamente?