web-dev-qa-db-fra.com

Comment générer la charge CPU sur Linux Server

Je voudrais tester une fausse charge sur le serveur, je cherche un utilitaire de ligne de commande de grincement ou de référence de référence qui générerait une charge de processeur sur le système.

J'aimerais pouvoir brûler uniquement la CPU (sans charge de disque dur, réseau et CO) et que je serais en mesure de définir la période dans laquelle la charge fonctionnera. Ce qui signifie que je veux quelque chose qui serait capable de courir: charge CPU pendant 10min sur le système.

Des idées?

13
Maxim Veksler

Vous pouvez télécharger et installer l'utilitaire "Stress" ... Il vous permet de générer une CPU, une mémoire, un disque et IO Charge à partir de la ligne de commande.

Page d'accueil: http://people.seas.harvard.edu/~apw/stress/

FAQ: http://people.seas.harvard.edu/~apw/stress/faq

12
ewwhite

Je préfère Floter Point Ops:

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

Soyez conscient de votre numéro de CPU :-)

6
user62968

C'est quelque chose que je veux souvent faire. Mais je n'ai pas de bonne façon de le faire. Je viens d'écrire un petit script Perl qui va simplement boucler pendant autant de secondes que je veux.

Par exemple. (pendant 10 minutes):

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

Bien sûr, si vous avez n processeurs, vous souhaiterez peut-être ajouter une boucle Bash pour créer de nombreux processus:

#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
    Perl -e .... &
done
wait
2
PP.

Je recommande d'utiliser Stress-NG, il a beaucoup plus de fonctionnalités que le stress et peut exercer beaucoup plus du système d'exploitation.

http://kernel.ubuntu.com/~cking/stress-ng/

1
Colin King

Voici une coquille pure (au moins bash & ksh) de manière que j'ai déjà posté une réponse à une question similaire ici

# 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
jlliagre