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.