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
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
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 :
- 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, 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/