Si vous recherchez un utilitaire de ligne de commande que vous pouvez utiliser pour accéder aux informations sur les processus, l'activité du processeur, la mémoire, etc., vous serez heureux de savoir que vmstat le fait pour vous.
Dans cet article, nous aborderons les bases de cet outil à l'aide d'exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples de cet article ont été testés sur une machine Ubuntu 20.04 LTS, mais cela fonctionnera également sur CentOS et Debian.
Commande Linux vmstat
La commande vmstat sous Linux fournit des statistiques sur la mémoire virtuelle. Voici sa syntaxe :
vmstat [options] [delay [count]]
Et voici comment la page de manuel de l'outil l'explique :
vmstat reports information about processes, memory, paging, block IO,
traps, disks and cpu activity.
The first report produced gives averages since the last reboot. Addi?
tional reports give information on a sampling period of length delay.
The process and memory reports are instantaneous in either case.
Voici quelques exemples sous forme de questions-réponses qui devraient vous donner une meilleure idée du fonctionnement de la commande vmstat :
Q1. Comment utiliser vmstat ?
Pour une utilisation de base, exécutez simplement "vmstat" sans aucune option.
vmstat
Par exemple, dans mon cas, la commande ci-dessus a produit le résultat suivant :
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 401160 100252 1307468 0 0 5 17 49 70 0 0 100 0 0
Comme l'indique la première ligne, la sortie est divisée en six sections. La page de manuel de l'outil contient des informations détaillées sur ces valeurs. Voici l'extrait :
Procs
r: The number of runnable processes (running or waiting for run time).
b: The number of processes in uninterruptible sleep.
Memory
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
Q2. Comment faire en sorte que vmstat mette automatiquement à jour sa sortie ?
Par défaut, vmstat produit une sortie une seule fois. Cependant, si vous souhaitez que vmstat mette automatiquement à jour sa sortie, vous pouvez le faire en spécifiant une valeur numérique en entrée de la commande.
Cette valeur numérique agit comme un délai (en secondes) après lequel la sortie est mise à jour. Par exemple :
vmstat 3
De cette façon, la sortie vmstat sera actualisée toutes les 3 secondes.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 410928 100276 1307480 0 0 5 17 49 70 0 0 100 0 0
0 0 0 410920 100284 1307480 0 0 0 181 108 143 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 7 92 132 0 0 100 0 0
0 0 0 410920 100292 1307480 0 0 0 0 87 124 0 0 100 0 0
...
...
...
Q3. Comment faire en sorte que vmstat affiche slabinfo ?
Pour slabinfo, vous devez utiliser l'option de ligne de commande -m. Notez que le noyau de votre distribution Linux doit prendre en charge slabinfo pour que cette option fonctionne. Si l'assistance existe, vous devez exécuter la commande avec les autorisations sudo.
sudo vmstat -m
Par exemple, dans mon cas, voici un extrait de la sortie produite :
Cache Num Total Size Pages
ufs_inode_cache 0 0 808 40
qnx4_inode_cache 0 0 680 48
hfsplus_attr_cache 0 0 3840 8
hfsplus_icache 0 0 896 36
hfs_inode_cache 0 0 832 39
minix_inode_cache 0 0 672 48
ntfs_big_inode_cache 0 0 960 34
ntfs_inode_cache 0 0 296 55
jfs_ip 0 0 1280 25
xfs_dqtrx 0 0 528 31
xfs_dquot 0 0 496 33
xfs_buf 0 0 384 42
xfs_rui_item 0 0 696 47
xfs_rud_item 0 0 176 46
xfs_inode 0 0 1024 32
xfs_efd_item 0 0 440 37
xfs_buf_item 0 0 272 30
xfs_trans 0 0 232 35
xfs_da_state 0 0 480 34
xfs_btree_cur 0 0 224 36
...
...
...
Q4. Comment faire en sorte que vmstat rapporte les statistiques récapitulatives de l'activité du disque ?
Utilisez l'option de ligne de commande -D pour cela.
vmstat -D
Voici le résultat produit par cette commande sur mon système :
10 disks
2 partitions
15066 total reads
5937 merged reads
1272794 read sectors
20063 milli reading
155026 writes
103687 merged writes
4602472 written sectors
105279 milli writing
0 inprogress IO
126 milli spent IO
Q5. Comment faire en sorte que vmstat ajoute un horodatage à chaque ligne de sortie ?
Pour vous assurer que la commande vmstat ajoute un horodatage à chaque ligne de sortie, utilisez la ligne de commande -t :
vmstat -t
$ vmstat 2 -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st UTC
2 0 0 410116 100432 1308160 0 0 5 17 49 70 0 0 100 0 0 2020-05-08 09:40:05
0 0 0 410116 100432 1308160 0 0 0 88 100 136 0 0 100 0 0 2020-05-08 09:40:07
0 0 0 410116 100440 1308160 0 0 0 18 90 139 0 0 100 0 0 2020-05-08 09:40:09
0 0 0 410116 100440 1308160 0 0 0 0 93 126 0 0 100 0 0 2020-05-08 09:40:11
0 0 0 410368 100448 1308160 0 0 0 10 107 144 0 0 100 0 0 2020-05-08 09:40:13
0 0 0 410368 100448 1308160 0 0 0 0 86 122 0 0 100 0 0 2020-05-08 09:40:15
0 0 0 410368 100448 1308160 0 0 0 0 101 135 0 0 100 0 0 2020-05-08 09:40:17
Les entrées en surbrillance affichent l'horodatage inclus dans chaque ligne.
Conclusion
Selon le type de travail que vous effectuez sur la ligne de commande Linux, la commande vmstat peut s'avérer très utile. Outre les options décrites ici, cet outil propose de nombreuses autres options de ligne de commande. Rendez-vous ici pour en savoir plus.