Des outils de test pour stresser votre système

Le développement logiciel nécessite des phases de test et de validation qui sont souvent menées sur des machines non chargées. Je vous propose donc de découvrir, dans ce billet, une série de petits logiciels permettant de simuler une charge sur votre système et qu'il faudra donc lancer en parallèle de vos applications à valider. J'ai uniquement sélectionné des logiciels libres, légers, en ligne de commande et disponible dans les dépôts Ubuntu standards.

Comment stresser une machine ?

Plusieurs leviers permettent de "stresser" une machine:

  • consommation CPU
  • utilisation de la mémoire MEM
  • entrée/sortie IO
  • lecture/écriture disque DISK
  • entrée/sortie réseau NET

L'utilisation conjointe de ces leviers permet de simuler une charge sur une machine cible. L'amplitude des paramètres appliquées à ces leviers est bien sûr à adapter à votre configuration hardware et système.

Note: l'utilisation des logiciels décrits si-dessous peut entraîner le plantage pure et simple de votre machine (cela m'est arrivé pendant mes tests...). Je vous conseille donc vivement de ne pas les appliquer sur une machine en production...

Fuzz

Le premier logiciel est Fuzz. Contrairement aux autres solutions, ce dernier ne génère pas de "stress" par lui même mais demande à d'autres programmes de le faire.

Ainsi, la ligne de commande suivante:

va lancer 10.000 fois la commande "grep foo" en lui donnant en entrée des données factices. Ainsi votre machine va chercher la chaîne de caractère foo dans un flot de données. Nous pouvons donc voir, grâce à Glances (un peu de pub...),  que la charge CPU (recherche de sous-chaine) et IO (entrée-sortie disque) augmentent.

Le nombre d’exécution (-r par défaut 10.000) et le time-out (-t par défaut 120 secondes) sont bien-sur paramétrable en ligne de commande (voir le man).

Si vous connaissez les applications qui tourneront en parallèle de la votre, il est facile de simuler votre environnement cible. Il manque par contre un peu de finesse pour tester votre application avec des contraintes pré-définies (par exemple avec une charge CPU de 75%).

Spew

Développé par HP et mis à disposition de la communauté, Spew est spécialisé sur le stress par entrée-sortie disque. Il permet d'écrire et/ou de lire des fichiers de test sur votre disque.

Pour générer un fichier de 5 Go nommé /tmp/bibi:

La même commande mais en forçant la relecture du fichier à la fin de l'écriture:

On peut voir une montée en charge globale de la machine (LOAD) mais juste avec des entrées/sorties (IO):

Note: pensez à supprimer vos fichiers de test (/tmp/bibi)...

Stress et StressAppTest

Deux logiciels qui font fonctionnellement la même chose (jouer sur l'ensemble des leviers permettant de stresser une machine) mais de manière différente...

Stress est une application permettant de générer des processus (worker) ayant des caractéristiques communes:

  • CPU (consommation de la CPU grâce à l’exécution de la commande sqrt)
  • MEM (avec exécution des commandes malloc et free)
  • IO (avec execution de la commande sync)
  • DISK (execuiyon des commandes read et write)

Avec la commande suivante:

On se retrouve donc avec 10 processus consommant chacun 512 Mo:

Contrairement à Stress, StressAppTest ne génère par défaut qu'un seul processus qui va regrouper les caractéristiques de stress souhaitées.

Ainsi, la commande:

Donne:

Je vous invite à consulter la documentation officielle du projet pour y découvrir les nombreuses options.

Pour finir...

Cette liste est très loin d'être exhaustive. L'idée étant de partager votre savoir...

Quel logiciel utilisez vous pour faire vos test de performances sur des machines chargées ?

Avez-vous des solutions multi-plateforme ?

A vos claviers :)

  • Pingback: Des outils de test pour stresser votre système | formation 2.0 | Scoop.it

  • Pingback: Des outils de test pour stresser votre système | Pays Glazik, Informatique,...apprendre ,découvrir, ...s'amuser,.......................se perfectionner | Scoop.it

  • Apo

    Super, je cherchais un équivalent à OCCT (windows) pour linux. Vraiment sympa cet article, continue comme ça ;)

  • https://www.youtube.com/watch?v=C3wAbr7nMVU franceschini

    Salut, bon retour …
    Nos machines ont-elles des oreilles?
    Enjoy, bonne écoute.
    @ndré

  • dacrovinunghi

    Un test ? le plugin flash
    il fait chauffer mes proc à 80°
    soit autant que cpuburn.
    Pour les stress disk j’utilise dd (je test mes clef usb avec aussi)
    dd bs=4096 avec time

    cpuburn (k6 P …) en laissant 1 seul proc libre pour voir le comportement (voire aucun libre)
    On peut forker (avec un sleep) :(){ :|:& };:

    • http://quentinloos.be Kent

      Pourquoi pas utiliser phoronix-test-suite ? :)
      J’suis en train de l’utiliser pour un projet (et j’essaie de faire un début d’article), c’est vraiment sympathique (mais un peu instable)

  • Pingback: Des outils de test pour stresser votre système | Monkey's cage | Scoop.it

  • Pingback: Des outils de test pour stresser votre système | Le CM associatif | Scoop.it

  • Renaud

    Salut Nico !

    Super article, il va bien me servir !

    Que penserais-tu d’un article expliquant comment faire un benchmark de son serveur ? En effet, j’ai un serveur physique et un serveur dédié faisant tourner une application Java. Bien que le serveur dédié ait de meilleurs perfs que le physique, je sens des ralentissements…

    Comment pourrais-je “benchmarker” ceci :

    Puissance CPU
    Entrée/sortie IO
    Lecture/écriture disque DISK
    Entrée/sortie réseau NET

    Merci et bonne continuation !

  • http://quentinloos.be Kent

    Pourquoi pas utiliser phoronix-test-suite ? :)
    J’suis en train de l’utiliser pour un projet (et j’essaie de faire un début d’article), c’est vraiment sympathique (mais un peu instable)

  • Edouard

    Pour ma part j’adore FIO pour les benchs IO (disques principalement), très personnalisable (permet de simuler à peu près tout). Après ya les classiques cpuburn, iozone, iperf pour le reste (cpu/disk/net). On lance tout ça en même temps, on surveille avec glances, et ça donne une bonne idée de la robustesse machine/OS.

  • Pingback: [Veille] Zapping on ze web du 20-09-2012 » SynerGeek.fr

  • KoHead

    Il fautdrait continuer sur cette lancer, pourquoi ne pas faire une liste d’outils pour stresser des logiciels réseaux (php? apache, mysql ?)

    explain ?

  • http://www.aexm.fr/informatique-professionnel/ test burn machine

    En général (même si pas le même besoin et environnement), c’est un coup de prime 95, de vidéo (flash) en streaming (full screen).

    Ça permet de tester le son, la vidéo, le net, en condition exigeante (CPU, mem, temp full load), et le fonctionnement correct des pilotes.

    Sebastien

  • Pingback: Nono’s Vrac 81 « m0le'o'blog

  • Pingback: [Veille] Zapping on ze web du 20-09-2012SynerGeek.fr

  • http://www.0x0ff.info/ 0x0ff.info

    Merci pour cet article ! Une modeste contribution qui j’espère ne sort pas trop des clous de l’article, voici un outil de Stress Testing DHCP : http://www.0x0ff.info/2013/stress-testing-dhcpig/