Wyszukiwanie w witrynie

Poznaj średnie obciążenie systemu Linux i monitoruj wydajność systemu Linux


W tym artykule wyjaśnimy jedno z najważniejszych zadań administracyjnych systemu Linux – monitorowanie wydajności w odniesieniu do obciążenia systemu/procesora i średniego obciążenia.

Zanim przejdziemy dalej, zrozummy te dwa ważne wyrażenia we wszystkich systemach uniksowych:

  • Obciążenie systemu/obciążenie procesora – jest miarą nadmiernego lub niedostatecznego wykorzystania procesora w systemie Linux; liczba procesów wykonywanych przez procesor lub znajdujących się w stanie oczekiwania.
  • Średnie obciążenie – to średnie obciążenie systemu obliczone w danym okresie 1, 5 i 15 minut.

W Linuksie technicznie uważa się, że średnie obciążenie jest średnią bieżącą procesów w kolejce wykonawczej (jądra) oznaczonych jako działające lub nieprzerywalne.

Pamiętaj, że:

  • Wszystkie, jeśli nie większość systemów zasilanych przez Linuksa lub inne systemy podobne do Uniksa, prawdopodobnie pokaże gdzieś użytkownikowi średnie wartości obciążenia.
  • Całkowicie bezczynny system Linux może mieć średnie obciążenie równe zero, z wyłączeniem bezczynnego procesu.
  • Prawie wszystkie systemy uniksowe zliczają tylko procesy w stanie uruchomionym lub oczekującym. Ale tak nie jest w przypadku Linuksa, obejmuje on procesy w nieprzerwanych stanach uśpienia; te oczekujące na inne zasoby systemowe, takie jak we/wy dysku itp.

Jak monitorować średnie obciążenie systemu Linux

Istnieje wiele sposobów monitorowania średniego obciążenia systemu, w tym czasu pracy, który pokazuje, jak długo system działa, liczbę użytkowników wraz ze średnimi obciążeniami:

uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Liczby odczytywane są od lewej do prawej, a powyższy wynik oznacza, że:

  • średnie obciążenie w ciągu ostatniej 1 minuty wynosi 1,98
  • średnie obciążenie w ciągu ostatnich 5 minut wynosi 2,15
  • średnie obciążenie w ciągu ostatnich 15 minut wynosi 2,21

Wysokie średnie obciążenie oznacza, że system jest przeciążony; wiele procesów czeka na czas procesora.

Odkryjemy to w następnej sekcji w odniesieniu do liczby rdzeni procesora. Dodatkowo możemy również skorzystać z innych dobrze znanych narzędzi, takich jak top i spojrzenia, które wyświetlają w czasie rzeczywistym stan działającego systemu Linux, a także wielu innych narzędzi:

Najwyższe dowództwo

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   
....

Narzędzie Spojrzenia

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 
...

Średnie obciążenie wyświetlane przez te narzędzia jest odczytywane z pliku /proc/loadavg, który można wyświetlić za pomocą polecenia cat w następujący sposób:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Aby monitorować średnie obciążenie w formie wykresu, sprawdź: ttyload – pokazuje kolorowy wykres średniego obciążenia Linuksa w terminalu

Na komputerach stacjonarnych dostępne są narzędzia graficznego interfejsu użytkownika, za pomocą których możemy wyświetlić średnie obciążenie systemu.

Zrozumienie średniego obciążenia systemu w relacji liczba procesorów

Nie jesteśmy w stanie wyjaśnić obciążenia systemu ani jego wydajności bez rzucenia światła na wpływ liczby rdzeni procesora na wydajność.

Wieloprocesor kontra wielordzeniowy

  • Wieloprocesorowy – ma miejsce, gdy dwa lub więcej fizycznych procesorów jest zintegrowanych w jednym systemie komputerowym.
  • Procesor wielordzeniowy – to pojedynczy fizyczny procesor, który ma co najmniej dwa lub więcej oddzielnych rdzeni (lub to, co możemy również nazwać jednostkami przetwarzającymi), które działają równolegle. Oznacza to, że dwurdzeniowy ma 2 dwie jednostki przetwarzające, czterordzeniowy ma 4 jednostki przetwarzające i tak dalej.

Co więcej, istnieje również technologia procesorowa, wprowadzona po raz pierwszy przez firmę Intel w celu usprawnienia obliczeń równoległych, zwana hiperwątkowością.

W przypadku hiperwątkowości pojedynczy fizyczny rdzeń procesora pojawia się jako dwa logiczne rdzenie procesora w systemie operacyjnym (ale w rzeczywistości istnieje jeden fizyczny komponent sprzętowy).

Należy pamiętać, że pojedynczy rdzeń procesora może wykonywać tylko jedno zadanie na raz, dlatego powołano do życia technologie takie jak wiele procesorów/procesorów, procesory wielordzeniowe i hiperwątkowość.

W przypadku więcej niż jednego procesora można jednocześnie wykonywać kilka programów. Współczesne procesory Intel wykorzystują kombinację zarówno wielu rdzeni, jak i technologii hiperwątkowości.

Aby znaleźć liczbę jednostek przetwarzających dostępnych w systemie, możemy użyć poleceń nproc lub lscpu w następujący sposób:

nproc
4

OR
lscpu

Inny sposób znalezienia liczby jednostek przetwarzających za pomocą polecenia grep, jak pokazano.

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

4

Teraz, aby lepiej zrozumieć obciążenie systemu, przyjmiemy kilka założeń. Załóżmy, że mamy poniżej średnie obciążenie:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
W systemie jednordzeniowym oznaczałoby to:
  • Procesor był średnio w pełni (100%) wykorzystany; W ciągu ostatniej minuty na procesorze działał 1 proces (1.00).
  • Procesor był bezczynny średnio o 60%; żaden proces nie czekał na czas procesora (0,40) w ciągu ostatnich 5 minut.
  • Procesor był przeciążony średnio o 235%; W ciągu ostatnich 15 minut na czas procesora (3,35) czekało 2,35 procesów.
W systemie dwurdzeniowym oznaczałoby to:
  • Jeden procesor był średnio w 100% bezczynny, jeden procesor był używany; żaden proces nie czekał na czas procesora (1,00) w ciągu ostatniej 1 minuty.
  • Procesory były bezczynne średnio o 160%; żaden proces nie czekał na czas procesora. (0,40) w ciągu ostatnich 5 minut.
  • Procesory były przeciążone średnio o 135%; 1,35 procesów czekało na czas procesora. (3,35) w ciągu ostatnich 15 minut.

Może ci się spodobać również:

  1. 20 narzędzi wiersza poleceń do monitorowania wydajności systemu Linux – część 1
  2. 13 Narzędzia do monitorowania wydajności systemu Linux – część 2
  3. Perf – narzędzie do monitorowania i analizy wydajności dla systemu Linux
  4. Nmon: analizuj i monitoruj wydajność systemu Linux

Podsumowując, jeśli jesteś administratorem systemu, naprawdę należy się martwić średnim obciążeniem. Gdy są wysokie, powyżej liczby rdzeni procesora, oznacza to duże zapotrzebowanie na procesory, a średnie obciążenie przy niskim obciążeniu poniżej liczby rdzeni procesora mówi nam, że procesory są niedostatecznie wykorzystywane.