Como gerar carga da CPU no servidor Linux

12

Eu gostaria de testar a carga falsa no servidor, estou procurando algum utilitário de linha de comando de burn-in ou benchmark que geraria carga de CPU no sistema.

Eu gostaria de poder gravar somente CPU (sem carga de disco rígido, rede e co) e que eu seria capaz de definir o período em que a carga será executada. Significa que eu quero algo que possa ser executado: carga da CPU por 10min no sistema.

Alguma idéia?

    
por Maxim Veksler 07.12.2010 / 09:48

6 respostas

12

Você pode baixar e instalar o utilitário "stress" ... Ele permite gerar carga de CPU, memória, disco e E / S a partir da linha de comando.

Homepage: link

FAQ: link

    
por 07.12.2010 / 11:22
6

Eu prefiro ops de ponto flutuante:

for i in 'seq 64'; do perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $sqrt = sqrt($j) for (1..9999); }' & done

Esteja ciente do seu número de CPU: -)

    
por 08.12.2010 / 16:00
2

Isso é algo que eu frequentemente quero fazer. Mas eu não tenho uma boa maneira de fazer isso. Acabei de escrever um pequeno script em Perl que irá apenas fazer um loop por quantos segundos eu quiser.

Por exemplo (por 10 minutos):

perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $j *= 1.1 for (1..9999); }'

Claro que se você tiver processadores n você pode querer adicionar um laço bash para criar muitos processos:

#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
    perl -e .... &
done
wait
    
por 07.12.2010 / 09:55
1

Eu recomendo usar o stress-ng, ele tem muito mais recursos do que o estresse e pode exercitar muito mais do sistema operacional.

link

    
por 26.11.2015 / 21:12
1

Aqui está uma forma de shell puro (pelo menos, bash & ksh ) que já publiquei como resposta a uma pergunta semelhante aqui

# 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
  )
}
    
por 26.11.2015 / 21:42