Comment générer une charge CPU sur un serveur Linux


13

Je voudrais tester une fausse charge sur le serveur, je recherche un utilitaire de ligne de commande de brûlage ou de référence qui générerait une charge CPU sur le système.

Je voudrais pouvoir graver uniquement du CPU (pas de charge de disque dur, de réseau et de co) et que je serais en mesure de définir la période pendant laquelle la charge s'exécutera. Ce qui signifie que je veux quelque chose qui pourrait fonctionner: charge du processeur pendant 10 minutes sur le système.

Des idées?

Réponses:



6

Je préfère les opérations en virgule flottante:

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 :-)


comment est- timece que je peux cela?
Sébastien

2

C'est quelque chose que je veux souvent faire. Mais je n'ai pas un bon moyen de le faire. J'écris juste un petit script Perl qui va 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 voudrez peut-être ajouter une boucle bash pour créer autant de processus:

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

4
Point mineur: cette forboucle ne fonctionnera-t-elle pas en série plutôt qu'en parallèle? Je pense que (perl -e '...' &)les détacher de la coque ferait l'affaire.
SmallClanger

Tu as raison. Je vais corriger mon message. Merci d'avoir fait remarquer cela.
PP.



1

Voici une manière pure shell (au moins bash& ksh) que j'ai déjà postée comme 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
  )
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.