[ Linux ] Créer une charge CPU / LOAD
Hello les geeks !
J’avais besoin de faire des tests de charge sur un serveur, pour valider le fonctionnement d’une chaine de connexion à un backend HTTP.
Le but n’était pas de le crasher ( simple à faire avec un fork bomb ), mais de le faire charger suffisament de manière à le rendre instable.
J’ai fais quelques recherches sur la toile afin de garder que les meilleurs que j’ai bien évidemment testé sur un serveur de dev ( machine virtuelle ).
Je ne vous fait plus attendre !
Via la commande « dd » :
dd if=/dev/zero of=/dev/null
Dans le cas ou vous avez plusieurs CPU ( ici 4 CPU, toujours via la commande « dd » ) :
fullcpu() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fullcpu; read; killall dd
Via un while ( un ou plusieurs CPU ) :
while [1]; do echo $((13**99)) 1> /dev/null 2>&1; done
Toujours via un while ( utilisation CPU à 50% ) :
while true; do true; done while true; do /bin/true; done
Toujours via un while ( utilisation CPU à 100% ) :
while true; do echo; done
Avec la méthode de fork bombe :
:(){ :|:& };:
Via la commande « cat » :
cat /dev/urandom > /dev/null
Via la commande « bc » ( calculatrice pour ceux qui ne connaisse pas ) :
for ((i=0;i<$NUMCPU;i++));do echo 'scale=100000;pi=4*a(1);0' | bc -l & done ; sleep 4; killall bc
Via la commande « stress » ( outil spécialisé ) :
stress -c 40 -timeout 10s
La ligne ci-dessous permet de charger l’ensemble de vos CPU avec 40 threads ( l’option -c 40 ) dont chacun va exécuter un calcul complexe sur des nombres générés aléatoirement.
L’autre option ( -timeout 10s ) vous permet de définir un délai d’attente sur le processus.
L’outil est différente de la commande « dd » car il permet de faire réellement du calcul. L’outil « dd » quand à lui va beaucoup travailler sur les IO, ce qui fera monter en charge votre poste mais pas de la même manière…
Si vous connaissez d’autres commandes, les commentaires sont disponibles !
Chacune des commandes sera bien évidemment testée et rajouter dans cet article avec le « pseudo » de la personne l’ayant postée.
Et maintenant ? A vos claviers !
A bientôt