Comprendre les moyennes de charge Linux et surveiller les performances de Linux

Dans cet article, nous expliquerons l’une des tâches critiques de l’administration système Linux – la surveillance des performances en ce qui concerne la charge système/CPU et les moyennes de charge.

Avant d’aller plus loin, comprenons ces deux phrases importantes dans tous les systèmes de type Unix :

  • Charge système/Charge CPU – est une mesure de la sur-utilisation ou sous-utilisation du CPU dans un système Linux ; le nombre de processus qui sont exécutés par le CPU ou dans un état d’attente.
  • Moyenne de charge – est la charge système moyenne calculée sur une période donnée de 1, 5 et 15 minutes.

En Linux, la moyenne de charge est techniquement considérée comme une moyenne mobile des processus dans sa file d’exécution (noyau) étiquetés comme en cours d’exécution ou non interruptible.

Notez que :

  • Tous, sinon la plupart des systèmes alimentés par Linux ou d’autres systèmes de type Unix, afficheront probablement les valeurs de la moyenne de charge quelque part pour un utilisateur.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Presque tous les systèmes de type Unix ne comptent que les processus dans les états d’exécution ou d’attente. Mais ce n’est pas le cas avec Linux, il inclut les processus dans les états de sommeil non interruptible ; ceux qui attendent d’autres ressources système comme les E/S disque, etc.

Comment surveiller la moyenne de charge du système Linux

Il existe de nombreuses façons de surveiller la moyenne de charge du système, y compris uptime qui montre depuis combien de temps le système fonctionne, 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 la sortie ci-dessus signifie que :

  • la moyenne de charge au cours de la dernière 1 minute est 1,98
  • La charge moyenne des 5 dernières minutes est de 2,15
  • La charge moyenne des 15 dernières minutes est de 2,21

Des charges élevées impliquent qu’un système est surchargé ; de nombreux processus attendent du temps CPU.

Nous aborderons cela dans la prochaine section en relation avec le nombre de cœurs CPU. De plus, nous pouvons également utiliser d’autres outils bien connus tels que top et glances qui affichent l’état en temps réel d’un système Linux en cours d’exécution, ainsi que de nombreux autres outils :

Commande Top

$ top
Display Running Linux Processes
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 Glances

$ glances
Glances – Linux System Monitoring Tool
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 charges moyennes affichées par ces outils sont lues dans le fichier /proc/loadavg, que vous pouvez consulter en utilisant la commande cat comme ci-dessous :

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Pour surveiller les charges moyennes sous forme de graphique, consultez : ttyload – Affiche un graphique en couleur de la charge moyenne Linux dans le terminal

Sur les machines de bureau, il existe des outils d’interface utilisateur graphique que nous pouvons utiliser pour visualiser les charges moyennes du système.

Compréhension de la charge moyenne du système par rapport au nombre de CPU

Nous ne pouvons pas expliquer la charge du système ou les performances du système sans éclairer l’impact du nombre de cœurs de CPU sur les performances.

Multi-processeur Vs Multi-cœur

  • Multi-processeur – c’est lorsque deux processeurs physiques ou plus sont intégrés dans un seul système informatique.
  • Processeur multi-cœur – c’est un seul processeur physique qui a au moins deux cœurs séparés ou plus (ou ce que nous pouvons également appeler des unités de traitement) qui travaillent en parallèle. Cela signifie qu’un double cœur a 2 unités de traitement, un quadruple cœur a 4 unités de traitement, et ainsi de suite.

De plus, 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ée hyperthreading.

Sous l’hyperthreading, un seul cœur de CPU physique apparaît comme deux cœurs de CPU logiques pour un système d’exploitation (mais en réalité, il y a un seul composant matériel physique).

Notez qu’un seul cœur de CPU ne peut exécuter qu’une tâche à la fois, c’est pourquoi des technologies telles que les CPU/processeurs multiples, les CPU multi-cœurs et l’hyperthreading ont été créées.

Avec plus d’un CPU, plusieurs programmes peuvent être exécutés simultanément. Les CPU Intel actuels utilisent une combinaison de plusieurs cœurs et de la technologie d’hyperthreading.

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

Un autre moyen de trouver le nombre d’unités de traitement en utilisant la commande grep comme indiqué.

$ grep 'model name' /proc/cpuinfo | wc -l

4

Maintenant, pour mieux comprendre la charge du système, nous allons faire quelques hypothèses. Disons que nous avons des moyennes de charge inférieures à :

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Sur un système monocœur, cela signifierait :
  • Le processeur était entièrement (100 %) utilisé en moyenne ; 1 processus s’exécutait sur le processeur (1,00) au cours de la dernière minute.
  • Le processeur était inactif à 60 % en moyenne ; aucun processus n’attendait du temps processeur (0,40) au cours des 5 dernières minutes.
  • Le processeur était surchargé de 235 % en moyenne ; 2,35 processus attendaient du temps processeur (3,35) au cours des 15 dernières minutes.
Sur un système double cœur, cela signifierait :
  • Un des processeurs était inactif à 100 % en moyenne, un processeur était utilisé ; aucun processus n’attendait du temps processeur (1,00) au cours de la dernière minute.
  • Les processeurs étaient inactifs à 160 % en moyenne ; aucun processus n’attendait du temps processeur (0,40) au cours des 5 dernières minutes.
  • Les processeurs étaient surchargés de 135 % en moyenne ; 1,35 processus attendaient du temps processeur (3,35) au cours des 15 dernières minutes.

Vous pourriez également aimer :

  1. 20 Outils en Ligne de Commande pour Surveiller les Performances de Linux – Partie 1
  2. 13 Outils de Surveillance des Performances Linux – Partie 2
  3. Perf- Un outil de surveillance et d’analyse des performances pour Linux
  4. Nmon: Analyser et surveiller les performances du système Linux

En conclusion, si vous êtes un administrateur système, les moyennes de charge élevées sont réelles à craindre. Lorsqu’elles sont élevées, au-dessus du nombre de cœurs de CPU, cela signifie une forte demande pour les CPU, et des moyennes de charge faibles en dessous du nombre de cœurs de CPU nous indiquent que les CPU sont sous-utilisés.

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/