Comprendre les moyennes de charge Linux et surveiller les performances de Linux
Dans cet article, nous allons expliquer l’une des tâches critiques de l’administration du système Linux : la surveillance des performances en ce qui concerne la charge du système/processeur et les moyennes de charge.
Avant d’aller plus loin, comprenons ces deux phrases importantes dans tous les systèmes de type Unix :
- Charge du système/Charge du processeur : mesure de la surutilisation ou de la sous-utilisation du processeur dans un système Linux ; le nombre de processus en cours d’exécution par le processeur ou en attente.
- Charge moyenne – est la charge moyenne du système calculée sur une période de temps donnée de 1, 5 et 15 minutes.
Sous Linux, la load-average est techniquement considérée comme une moyenne courante des processus dans sa file d’exécution (noyau) étiquetés comme en cours d’exécution ou ininterruptibles.
Notez que :
- Si ce n’est pas le cas, la plupart des systèmes fonctionnant sous Linux ou d’autres systèmes de type Unix afficheront peut-être les valeurs moyennes de charge quelque part pour un utilisateur.
- Un système Linux carrément inactif peut avoir une charge moyenne de zéro, à l’exclusion du processus inactif.
- Presque tous les systèmes de type Unix ne comptent que les processus en cours d’exécution ou en attente. Mais ce n’est pas le cas avec Linux, il inclut des processus dans des états de veille ininterrompus ; ceux qui attendent d’autres ressources système comme les E/S de disque, etc.
Comment surveiller la charge moyenne du système Linux
Il existe de nombreuses façons de surveiller la charge moyenne du système, y compris le temps de disponibilité qui indique la durée de fonctionnement du système, le nombre d’utilisateurs ainsi que les moyennes de charge :
$ uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
Les chiffres sont lus de gauche à droite, et le résultat ci-dessus signifie que :
- La charge moyenne sur les 1 dernière minute est de 1,98
- La charge moyenne sur les 5 dernières minutes est de 2,15
- La charge moyenne sur les 15 dernières minutes est de 2,21
Des moyennes de charge élevées impliquent qu’un système est surchargé ; de nombreux processus attendent du temps CPU.
Nous le découvrirons dans la section suivante en ce qui concerne le nombre de cœurs de processeur. De plus, nous pouvons également utiliser d’autres outils bien connus tels que top et glances qui affichent un état en temps réel d’un système Linux en cours d’exécution, ainsi que de nombreux autres outils :
Commande supérieure
$ top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26
Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache
KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6265 tecmint 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset
2301 tecmint 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio
2459 tecmint 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon
2957 tecmint 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox
3208 tecmint 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal-
3272 tecmint 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome
6220 tecmint 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset
1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
....
Outil Regards
$ glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06
CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1%
user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G
system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M
idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G
NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0 525Kb 31Kb
lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 tecmint 0 S 51:49.10 0 40K /usr/lib/firefox/firefox
7.4 2.2 1.16G 176M 6265 tecmint 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 tecmint 0 R 7:12.18 0 0 cinnamon --replace
ram0 0 0 4.2 0.2 625M 13.0M 2301 tecmint -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog
ram1 0 0 4.2 1.3 1.52G 105M 6220 tecmint 0 S 3:42.64 0 0 /usr/lib/Headset/Headset
ram10 0 0 2.9 0.8 409M 66.7M 6240 tecmint 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12 0 0 2.6 0.3 79.3M 23.8M 9651 tecmint 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances
ram13 0 0 1.6 4.8 1.45G 382M 3272 tecmint 0 S 6:25.30 0 4K /opt/google/chrome/chrome
...
Les moyennes de charge affichées par ces outils sont le fichier read /proc/loadavg, que vous pouvez afficher à l’aide de la commande cat comme ci-dessous :
$ cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Pour surveiller les moyennes de charge au format graphique, consultez : ttyload - Affiche un graphique codé en couleur de la moyenne de charge Linux dans le terminal
Sur les ordinateurs de bureau, il existe des outils d’interface utilisateur graphique que nous pouvons utiliser pour afficher les moyennes de charge du système.
Comprendre la charge moyenne du système par rapport au nombre de processeurs
Nous ne pouvons pas expliquer la charge ou les performances du système sans mettre en lumière l’impact du nombre de cœurs de processeur sur les performances.
Multiprocesseur Vs multicœur
- Multiprocesseur : deux processeurs physiques ou plus sont intégrés dans un seul système informatique.
- Processeur multicœur – est un processeur physique unique qui a au moins deux cœurs distincts ou plus (ou ce que nous pouvons également appeler des unités de traitement) qui fonctionnent en parallèle. Cela signifie qu’un double cœur a 2 deux unités de traitement, un quad-core a 4 unités de traitement et ainsi de suite.
En outre, il existe également une technologie de processeur qui a été introduite pour la première fois par Intel pour améliorer le calcul parallèle, appelé hyper threading.
Dans le cadre de l’hyperthreading, un seul cœur de processeur physique apparaît comme deux cœurs de processeur logiques pour un système d’exploitation (mais en réalité, il existe un composant matériel physique).
Notez qu’un seul cœur de processeur ne peut effectuer qu’une seule tâche à la fois, c’est pourquoi des technologies telles que plusieurs processeurs/processeurs, des processeurs multicœurs et l’hyper-threading ont pris vie.
Avec plus d’un processeur, plusieurs programmes peuvent être exécutés simultanément. Les processeurs Intel actuels utilisent une combinaison de plusieurs cœurs et de la technologie hyper-threading.
Pour trouver le nombre d’unités de traitement disponibles sur un système, nous pouvons utiliser les commandes nproc ou lscpu comme suit :
$ nproc
4
OR
lscpu
Une autre façon de trouver le nombre d’unités de traitement à l’aide de la commande grep comme indiqué.
$ grep 'model name' /proc/cpuinfo | wc -l
4
Maintenant, pour mieux comprendre la charge du système, nous allons prendre quelques hypothèses. Disons que nous avons des moyennes de charge ci-dessous :
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
Sur un système à cœur unique, cela signifierait :
- Le processeur a été entièrement utilisé (100 %) en moyenne ; 1 processus étaient en cours d’exécution sur le processeur (1,00) au cours de la dernière minute.
- Le processeur était inactif à 60 % en moyenne ; aucun processus n’attendait de temps CPU (0,40) au cours des 5 dernières minutes.
- Le processeur était surchargé de 235 % en moyenne ; 2,35 processus attendaient du temps CPU (3,35) au cours des 15 dernières minutes.
Sur un système à double cœur, cela signifierait :
- Le processeur était inactif à 100 % en moyenne, un processeur était utilisé ; aucun processus n’attendait le temps CPU (1,00) au cours de la dernière minute.
- Les processeurs étaient inactifs à 160 % en moyenne ; aucun processus n’attendait de temps CPU. (0,40) au cours des 5 dernières minutes.
- Les processeurs étaient surchargés de 135 % en moyenne ; 1.35 processus attendaient du temps CPU. (3.35) au cours des 15 dernières minutes.
Vous aimerez peut-être aussi :
- 20 outils en ligne de commande pour surveiller les performances de Linux - Partie 1
- 13 Outils de surveillance des performances Linux - Partie 2
- Perf - Un outil de surveillance et d’analyse des performances pour Linux
- Nmon : Analyser et surveiller les performances du système Linux
En conclusion, si vous êtes un administrateur système, il faut s’inquiéter des moyennes de charge élevées. Lorsqu’ils sont élevés, au-dessus du nombre de cœurs de processeur, cela signifie une forte demande pour les processeurs, et les moyennes de charge faibles inférieures au nombre de cœurs de processeur nous indiquent que les processeurs sont sous-utilisés.