Não é necessário instalar nenhum pacote extra, a sua boa e velha shell é capaz de o fazer sozinha.
Esta linha única irá carregar os seus quatro núcleos1 a 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
Como funciona é bastante simples, inicia quatro loops infinitos. Cada um deles repete a instrução nula (:
). Cada laço é capaz de carregar um núcleo de CPU a 100%.
Se utiliza bash
, ksh93
e outros shells que suportam gamas, (ou seja, não dash
ou mais antigos ksh
), pode utilizar esta sintaxe não portátil:
for i in {1..4}; do ...
Substitua 4
pelo número de CPUs que gostaria de carregar se fosse diferente de 4
.
Assumindo que não tinha nenhum trabalho de fundo já em execução quando lançou um destes loops, pode parar a geração de carga com esse comando:
for i in 1 2 3 4; do kill %$i; done
Resposta @underscore_d’s comment, aqui está uma versão melhorada que simplifica muito a paragem da carga e que também permite especificar um tempo limite (por defeito 60 segundos.) Um Control-C matará também todos os loops em execução. Esta função shell funciona pelo menos sob 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
)
}
1Nota que com as CPUs suportando mais do que um fio por núcleo (Hyper-threading), o sistema operativo irá enviar a carga para todas as CPUs virtuais. Nesse caso, o comportamento da carga depende da implementação (cada rosca pode ser reportada como 100% ocupada ou não).