dmesg | tail : cette commande permet de voir les derniers messages envoyés par le kernel.journalctl -k : affiche les erreurs kernel du dernier boot. Pour remonter dans l’historique des boots on peut utiliser l’option -b.lsoflsof donne des informations sur les fichiers ouverts par les processus. Il peut montrer des fichiers standards, un dossier, un périphérique, une librairy ou un socket.
Quelques commandes :
lsof : affiche tous les fichiers ouverts par les processuslsof -i 4 -a -p 1234 : affiche les sockets IPv4 ouverts par le processus 1234lsof /foo/bar : affiche les processus qui accèdent à /foo/barCette commande peut aider à déterminer ce qui ralentit un processus.
uptime$ uptime
09:31:47 up 22:29, 1 user, load average: 0.22, 0.22, 0.41
La commande uptime permet de voir rapidement la charge moyenne du système. Ces trois nombres représentent le nombre de processus qui s’exécutent ou attendent de s’exécuter sur le processeur ainsi que ceux qui sont en attente d’entrées/sorties (souvient lié à la mémoire de masse). Les nombres sont données à 1, 5 et 15 minutes pour suivre l’évolution.
vmstat$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 511248 396956 2344332 0 0 25 101 606 453 20 8 72 0 0
0 0 0 511140 396956 2344332 0 0 0 0 191 642 1 1 99 0 0
0 0 0 511172 396956 2344332 0 0 0 0 150 438 1 0 99 0 0
Cette commande affiche un résumé des statistiques du système. La première ligne de statistiques peut être ignorée puisqu’elle rassemble des informations depuis le démarrage de la machine.
Voici les colonnes intéressantes :
r : le nombre de processus s’exécutant ou en attente d’exécution par le CPU. Une valeur plus grande que le nombre de CPU indique une saturation.free : la quantité de mémoire libre en kilo-octets.si et so : “swap in” et “swap out”. Si ces valeurs sont différentes de zéro c’est que le système manque de mémoire vive.us, sy, id, wa et st : répartition du temps CPU en pourcentage. Les champs signifient : le temps utilisateur, système, inutilité, en attente d’I/O et le temps volé à une machine virtuelle (quand on utilise la virtualisation avec Xen par exemple).La somme des temps utilisateur et système (us + sy) peut confirmer que les CPUs sont trop occupés. Un trop grand pourcentage dans la colonne wa peut indiquer un goulot d’étranglement au niveau du stockage si celui-ci est présent constamment.
mpstat$ mpstat -P ALL 1
12:13:33 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:13:34 PM all 0.75 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 98.99
12:13:34 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
12:13:34 PM 1 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00
12:13:34 PM 2 1.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 98.00
12:13:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Cette commande affiche la répartition des temps sur chaque CPUs. Un seul processeur très utilisé peut montrer une application comportant un seul thread.
pidstatLa commande pidstat permet d’afficher des statistiques sur les processus. Par défaut, la commande affiche des statistiques sur le CPU (1 permet ici d’afficher les statistiques toutes les une seconde).
$ pidstat 1
12:11:50 PM UID PID %usr %system %guest %CPU CPU Command
12:11:51 PM 1000 5332 0.98 0.00 0.00 0.98 0 xfce4-terminal
12:11:51 PM 1000 5789 1.96 0.00 0.00 1.96 1 firefox
12:11:51 PM 1000 11105 0.98 0.98 0.00 1.96 1 pidstat
La commande permet d’afficher d’autres statistiques :
-d : I/O disque-r : défauts de page et utilisation de la mémoire-u : utilisation du CPU (par défaut)pidstat -r$ pidstat -r 1
07:34:41 AM UID PID minflt/s majflt/s VSZ RSS %MEM Command
07:34:42 AM 1000 1902 8.91 0.00 4188 1480 0.04 i3blocks
07:34:42 AM 1000 8453 674.26 0.00 2246952 596292 15.13 firefox
07:34:42 AM 1000 24406 287.13 0.00 6288 2340 0.06 pidstat
minflt/s : nombre de défauts de page mineurs fait par seconde. La page a été initialisée à 0 ou a été chargée depuis le cache de la mémoire de massemajflt/s : nombre de défauts de page majeurs fait par seconde. Le chargement de cette page est fait depuis la mémoire de masseVSZ (ou VIRT dans htop) représente la quantité mémoire virtuelle du processus (en Ko)RSS (ou RES dans htop) représente la quantité mémoire vive utilisée par le processus (en Ko). Cette valeur n’inclut pas la swapfree$ free -m
total used free shared buff/cache available
Mem: 3855 1009 45 197 2800 2587
Swap: 4095 0 4095
La mémoire dans la colonne “buff/cache” représente de la mémoire qui est utilisé par Linux mais qui restent à dispositions pour les applications. La mémoire “buffers” est utilisé comme tampon pour les I/O des périphériques de type block. La mémoire cache est utilisé par les systèmes de fichiers pour la mise en cache des pages.
La colonne “available” est une estimation de la mémoire qui est disponible pour démarrer de nouvelles applications sans utiliser la mémoire swap.
iostat$ iostat -xz 1
avg-cpu: %user %nice %system %iowait %steal %idle
13.37 0.01 5.00 0.07 0.00 81.54
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.33 1.55 0.92 1.90 17.42 73.47 64.51 0.01 4.17 0.50 5.95 0.89 0.25
dm-0 0.00 0.00 1.25 3.18 17.31 73.47 40.91 0.01 3.36 0.86 4.35 0.57 0.25
dm-1 0.00 0.00 0.00 0.00 0.01 0.00 48.19 0.00 1.86 1.86 0.00 1.35 0.00
dm-2 0.00 0.00 0.00 0.00 0.01 0.00 48.19 0.00 1.23 1.23 0.00 0.60 0.00
dm-3 0.00 0.00 0.00 0.00 0.01 0.00 51.91 0.00 2.47 2.47 0.00 1.44 0.00
iostat est un outils permettant de surveiller la charge de travail et les performances des périphériques de type block.
r/s, w/s, rkB/s et wkB/s : ces colonnes correspondent respectivement au nombre de lecture/écriture par seconde ainsi qu’au nombre d’octets lu et écrit par seconde. On utilise ces valeurs pour regarder la charge sur les périphériques. Un problème de performance peut être simplement du à une trop grande charge de travail.await : c’est le temps moyen d’une I/O. Les applications sont directement impactées par ce délais. Une valeur trop grande peut indiquer que le périphérique est trop utilisé ou qu’il y a un problème sur celui-ci.avgqu-sz : le nombre moyen de requête à traiter par le périphérique. Une valeur supérieure à 1 indique une saturation du périphérique.%util : le taux d’utilisation du périphérique. Des valeurs supérieures à 60% indiquent des performances assez faible tandis que des valeurs proches de 100% indiquent une saturation.sar -n DEV 1$ sar -n DEV 1
02:12:46 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
02:12:47 PM wlp4s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:12:47 PM enp0s25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:12:47 PM lo 10.00 10.00 0.95 0.95 0.00 0.00 0.00 0.00
Cette commande permet de voir la charge sur les interfaces réseaux notamment avec les colonnes rxkB/s et txkB/s qui permettent de voir les débits entrant et sortant.
| Commande | Package | Utilisation |
|---|---|---|
free |
procps-ng |
Mémoire |
iostat |
sysstat |
Disque |
mpstat |
sysstat |
CPU |
sar |
sysstat |
CPU/Mémoire/Réseau/Disque |
uptime |
procps-ng |
CPU |
vmstat |
procps-ng |
CPU/RAM/Disque |