Recherche de site Web

Comment imposer une charge CPU élevée et un test de stress sous Linux à l'aide de l'outil « Stress-ng »


En tant qu'Administrateur système, vous souhaiterez peut-être examiner et surveiller l'état de vos systèmes Linux lorsqu'ils sont soumis à une charge élevée. Cela peut être un bon moyen pour les administrateurs système et les programmeurs de :

  1. affiner les activités sur un système.
  2. surveiller les interfaces du noyau du système d’exploitation.
  3. testez vos composants matériels Linux tels que le processeur, la mémoire, les périphériques de disque et bien d'autres pour observer leurs performances sous contrainte.
  4. mesurer différentes charges consommatrices d’énergie sur un système.

Dans ce guide, nous examinerons deux outils importants, stress et stress-ng pour les tests de stress sous vos systèmes Linux.

1. stress : est un outil générateur de charge de travail conçu pour soumettre votre système à une mesure configurable du stress du processeur, de la mémoire, des E/S et du disque.

2. stress-ng – est une version mise à jour de l'outil générateur de charge de travail de stress qui teste votre système pour les fonctionnalités suivantes :

  1. Calcul du processeur
  2. conduire le stress
  3. Synchronisations d'E/S
  4. E/S de canalisation
  5. destruction du cache
  6. Stress de la machine virtuelle
  7. mise en tension de la douille
  8. création et terminaison du processus
  9. propriétés de changement de contexte

Bien que ces outils soient utiles pour examiner votre système, ils ne doivent pas être utilisés uniquement par n’importe quel utilisateur du système.

Important : Il est fortement recommandé d'utiliser ces outils avec les privilèges d'utilisateur root, car ils peuvent surcharger votre machine Linux si rapidement et pour éviter certaines erreurs système sur du matériel mal conçu. .

Comment installer l'outil « stress » sous Linux

Pour installer l'outil de stress sur Debian et ses dérivés tels que Ubuntu et Mint, exécutez la commande suivante.

sudo apt-get install stress

Pour installer stress sur un RHEL/CentOS et Fedora Linux, vous devez activer le référentiel EPEL, puis taper la commande yum suivante pour installer le même:

yum install stress

La syntaxe générale pour utiliser le stress est :

sudo stress option argument

Quelques options que vous pouvez utiliser avec le stress.

  1. Pour générer N travailleurs tournant sur la fonction sqrt(), utilisez l'option –cpu N comme suit.
  2. Pour générer N travailleurs tournant sur la fonction sync(), utilisez l'option –io N comme suit.
  3. Pour générer N travailleurs tournant sur les fonctions malloc()/free(), utilisez l'option –vm N.
  4. Pour allouer de la mémoire par travailleur vm, utilisez l'option –vm-bytes N.
  5. Au lieu de libérer et de réaffecter des ressources mémoire, vous pouvez rediriger la mémoire en utilisant l'option –vm-keep.
  6. Réglez la veille sur N secondes avant de libérer de la mémoire à l'aide de l'option –vm-hang N.
  7. Pour générer N Workers tournant sur les fonctions write()/unlink(), utilisez l'option –hdd N.
  8. Vous pouvez définir un délai d'expiration après N secondes en utilisant l'option –timeout N.
  9. Définissez un facteur d'attente de N microsecondes avant le début de tout travail en utilisant l'option –backoff N comme suit.
  10. Pour afficher des informations plus détaillées lors de l'exécution d'un stress, utilisez l'option -v.
  11. Utilisez –help pour afficher l'aide sur l'utilisation de stress ou consulter la page de manuel.

Comment utiliser le stress sur les systèmes Linux ?

1. Pour examiner l'effet de la commande à chaque fois que vous l'exécutez, exécutez d'abord la commande uptime et notez la charge moyenne.

Ensuite, exécutez la commande stress pour faire apparaître 8 travailleurs tournant sur sqrt() avec un délai d'attente de 20 secondes. Après avoir exécuté le stress, exécutez à nouveau la commande uptime et comparez la charge moyenne.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Exemple de sortie
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Pour générer 8 workers tournant sur sqrt() avec un délai d'attente de 30 secondes, affichant des informations détaillées sur l'opération, exécutez cette commande :

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Exemple de sortie
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Pour générer un travailleur des fonctions malloc() et free() avec un délai d'attente de 60 secondes, exécutez la commande suivante.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Exemple de sortie
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Pour faire tourner 4 Workers sur sqrt(), 2 Workers sur sync(), 2 Workers sur malloc()/free(), avec un temps de 20 secondes et allouer une mémoire de 256 Mo par travailleur vm, exécutez cette commande ci-dessous.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Exemple de sortie
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]