Surveiller les ressources système avec pidstat

Le pidstat fait partie de la suite d'outils sysstat, utilisé pour surveiller l'utilisation des ressources système telles que le CPU, la mémoire, les threads et les E/S par processus.

Lors de son premier lancement, pidstat affiche les statistiques depuis le démarrage du système. Les exécutions suivantes montrent les statistiques depuis la dernière exécution. L'utilisateur peut spécifier le nombre de fois et la période pour obtenir les informations souhaitées.

Syntaxe de pidstat :

pidstat --aide
Usage: pidstat [ options ] [ <intervalle> [ <compteur> ] ]
Options sont:
[ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ <utilisateur> ] ] [ -u ]
[ -V ] [ -w ] [ -C <commande> ] [ -p { <pid> [,...] | SOI | TOUT } ]
[ -T { TACHE | FILS | TOUT } ]

Détails des paramètres :

-u : Affiche l'utilisation du CPU par processus.
-r : Montre l'utilisation de la mémoire par processus.
-d : Indique l'utilisation des E/S par processus.
-p : Spécifie l'identifiant du processus.
-w : Affiche les changements de contexte par processus.
-t : Fournit des informations supplémentaires sur les threads sélectionnés.
-T { TACHE | FILS | TOUT }
Ce paramètre détermine ce que pidstat surveille. TACHE signifie rapporter chaque tâche indépendamment, FILS inclut tous les fils du processus, et TOUT inclut tout.
-V : Version du logiciel.
-h : Affiche toutes les activités sur une seule ligne pour faciliter le parsing par d'autres programmes.
-I : Dans un environnement SMP, calcule l'utilisation du CPU par tâche divisée par le nombre de cœurs.
-l : Affiche le nom de la commande et tous ses arguments.

1. Consommation CPU de tous les processus

pidstat  (affiche par défaut l'utilisation du CPU de tous les processus)

pidstat -u -p TOUT
10:29:56 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Commande
10:29:56 AM     0         1    0.01    0.09    0.00    0.10     1  systemd
10:29:56 AM     0         2    0.00    0.00    0.00    0.00     0  kthreadd
10:29:56 AM     0         3    0.00    0.01    0.00    0.01     0  ksoftirqd/0

Explication des sorties

PID : Identifiant du processus
%usr : Pourcentage de temps CPU utilisé en espace utilisateur.
%system : Pourcentage de temps CPU utilisé en espace noyau.
%guest : Pourcentage de temps CPU utilisé dans une machine virtuelle.
%CPU : Pourcentage global d'utilisation du CPU.
CPU : Numéro du processeur gérant le processus.
Commande : Nom de la commande correspondante au processus.

2. Statistiques de mémoire (-r)

pidstat -r  | tri -k  8  -nr  
Linux 3.10.0-1160.15.2.el7.centos.plus.x86_64 (serveur044) 12/11/2021 _x86_64_ (32 CPU)
10:19:20 AM   UID      PID     minflt/s majflt/s VSZ      RSS     %MEM Commande
10:14:31 AM  1000     31446     66.97      0.00 34636692 18231824  13.84  java
10:14:31 AM   999     16234      0.17      0.00 5102264 4678960   3.55  redis-server
10:14:31 AM     0     19357      0.33      0.00  776200 429988   0.33  weed

Explication des sorties

PID : Identifiant du processus
Minflt/s: Erreurs secondaires par seconde, pas nécessitant de chargement depuis le disque.
Majflt/s: Erreurs principales par seconde, nécessitant un chargement depuis le disque.
VSZ : Taille de l'espace d'adressage virtuel en Ko.
RSS : Taille résidente en Ko, mémoire non échangeable.
Commande : Nom de la commande du processus.

3. Utilisation des E/S par procesus (-d)

#pidstat -d
Linux 3.10.0-693.el7.x86_64 (racine) 	10/21/2020 	_x86_64_	(3 CPU)

10:40:51 AM   UID       PID   kB_lu/s   kB_ec/s kB_ccwr/s  Commande
10:40:51 AM     0         1     20.29      0.80      0.09  systemd
10:40:51 AM     0       279      0.00      0.00      0.00  kworker/u256:2
10:40:51 AM     0       418      0.03      0.00      0.00  xfsaild/dm-0

Explication des sorties

PID : Identifiant du processus
kB_lu/s : Nombre de kilo-octets lus par seconde depuis le disque.
kB_ec/s : Nombre de kilo-octets écrits par seconde vers le disque.
kB_ccwr/s : Nombre de kilo-octets annulés lors de l'écriture, lorsque des pages sales sont tronquées.
Commande : Nom de la commande du processus.

4. Changements de contexte par processus (-w)

pidstat -w -p 1406  (processus spécifique)
Linux 3.10.0-693.el7.x86_64 (racine)     10/21/2020     _x86_64_    (3 CPU)

10:43:06 AM   UID       PID   cswch/s nvcswch/s  Commande
10:43:06 AM     0      1406      0.01      0.00  nginx

Explication des sorties

PID: Identifiant du processus
Cswch/s: Nombre de changements de contexte volontaires par seconde.
Nvcswch/s: Nombre de changements de contexte involontaires par seconde.
Commande: Nom de la commande du processus.

5. Informations supplémentaires sur les threads (-t)

#pidstat -t -p 1406
Linux 3.10.0-693.el7.x86_64 (racine) 	10/21/2020 	_x86_64_	(3 CPU)

10:44:45 AM   UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Commande
10:44:45 AM     0      1406         -    0.00    0.00    0.00    0.00     0  nginx
10:44:45 AM     0         -      1406    0.00    0.00    0.00    0.00     0  |__nginx

Explication des sorties

TGID: Identification du thread principal.
TID: Identifiant du thread.
%usr : Pourcentage de temps CPU utilisé en espace utilisateur.
%system : Pourcentage de temps CPU utilisé en espace noyau.
%guest : Pourcentage de temps CPU utilisé dans une machine virtuelle.
%CPU : Pourcentage global d'utilisation du CPU.
CPU : Numéro du processeur gérant le processus.
Commande : Nom de la commande du processus.

6. Options -T

pidstat -T TACHE
pidstat -T FILS
pidstat -T TOUT

TACHE rapporte les tâches indépendantes. FILS inclut les fils du processus. TOUT inclut tout.

Notez que les statistiques globales des tâches et sous-processus ne correspondent pas à l'intervalle actuel; elles sont collectées uniquement quend les sous-processus terminent ou sont tués.

#pidstat -T TOUT -p 1406
Linux 3.10.0-693.el7.x86_64 (racine) 	10/21/2020 	_x86_64_	(3 CPU)

10:47:30 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Commande
10:47:30 AM     0      1406    0.00    0.00    0.00    0.00     0  nginx

10:47:30 AM   UID       PID    usr-ms system-ms  guest-ms  Commande
10:47:30 AM     0      1406        10        30         0  nginx

Explication des sorties

PID: Identifiant du processus
Usr-ms: Temps passé par la tâche et ses fils en mode utilisateur en millisecondes.
System-ms: Temps passé par la tâche et ses fils en mode système en millisecondes.
Guest-ms: Temps passé par la tâche et ses fils dans une machine virtuelle en millisecondes.
Commande: Nom de la commande du processus.

Étiquettes: sysstat pidstat ressources_systeme surveillances_processes

Publié le 7 octobre à 11h11