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, ksh93y otros shells que admiten rangos (es decir, no dasho anteriores ksh), puede usar esta sintaxis no portátil:
for i in {1..4}; do ...
Reemplace 4con 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 bashy 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). .
catsimultánea?