No es necesario instalar ningún paquete adicional, su viejo y buen shell puede hacerlo solo.
Este one-liner cargará sus cuatro núcleos 1 al 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Cómo funciona es bastante simple, inicia cuatro bucles sin fin. Cada uno de ellos está repitiendo la instrucción nula ( :
). Cada ciclo puede cargar un núcleo de CPU al 100%.
Si usa bash
, ksh93
y otros shells que admiten rangos (es decir, no dash
o anteriores ksh
), puede usar esta sintaxis no portátil:
for i in {1..4}; do ...
Reemplace 4
con el número de CPU que le gustaría cargar, si es diferente 4
.
Suponiendo que ya no tenía un trabajo en segundo plano ejecutándose cuando lanzó uno de estos bucles, puede detener la generación de carga con ese comando:
for i in 1 2 3 4; do kill %$i; done
Respondiendo al comentario de @ underscore_d, aquí hay una versión mejorada que simplifica mucho la detención de la carga y que también permite especificar un tiempo de espera (predeterminado de 60 segundos). A Control: Ctambién matará todos los bucles fuera de control. Esta función de shell funciona al menos bajo bash
y 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 Tenga en cuenta que con las CPU que admiten más de un subproceso por núcleo (Hyper-threading), el sistema operativo enviará la carga a todas las CPU virtuales. En ese caso, el comportamiento de la carga depende de la implementación (cada subproceso puede informarse como 100% ocupado o no). .
cat
simultánea?