No hay necesidad de instalar ningún paquete extra, tu vieja y buena cáscara es capaz de hacerlo sola.
Esta línea cargará tus cuatro núcleos1 al 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
La forma en que funciona es bastante simple, inicia cuatro bucles interminables. Cada uno de ellos repite la instrucción nula (:). Cada bucle es capaz de cargar un núcleo de CPU al 100%.
Si utilizas bash, ksh93 y otros shells que soporten rangos, (es decir, no dash o más antiguo ksh), puedes utilizar esta sintaxis no portátil:
for i in {1..4}; do ...
Reemplaza 4 con el número de CPUs que te gustaría cargar si es diferente de 4.
Asumiendo que no tenías ningún trabajo de fondo ya ejecutándose cuando lanzaste uno de estos bucles, puedes detener la generación de la 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 (por defecto 60 segundos.) Un Control-C matará todos los bucles que se escapen también. Esta función del 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
)
}
1Nota que con CPUs que soporten más de un hilo por núcleo (Hyper-threading), el SO despachará la carga a todas las CPUs virtuales. En ese caso, el comportamiento de la carga depende de la implementación (cada hilo puede ser reportado como 100% ocupado o no)..