Vyhledávání na webu

Pochopte průměry zatížení Linuxu a sledujte výkon Linuxu


V tomto článku vysvětlíme jeden z kritických úkolů správy systému Linux – sledování výkonu s ohledem na zatížení systému/CPU a průměry zatížení.

Než se posuneme dále, pojďme pochopit tyto dvě důležité fráze ve všech systémech podobných Unixu:

  • Zatížení systému/Zatížení CPU – je měření nadměrného nebo nedostatečného využití CPU v systému Linux; počet procesů, které jsou vykonávány CPU nebo ve stavu čekání.
  • Průměrné zatížení – je průměrné zatížení systému vypočtené za dané časové období 1, 5 a 15 minut.

V Linuxu je průměr zatížení technicky považován za průběžný průměr procesů ve frontě provádění (jádra) označených jako běžící nebo nepřerušitelné.

Poznámka:

  • Všechny, ne-li většina systémů poháněných Linuxem nebo jinými systémy podobnými Unixu, možná někde pro uživatele zobrazí průměrné hodnoty zatížení.
  • Vyloženě nečinný systém Linux může mít průměrnou zátěž nula, s výjimkou nečinného procesu.
  • Téměř všechny systémy podobné Unixu počítají pouze procesy v běžícím nebo čekajícím stavu. To ale není případ Linuxu, ten zahrnuje procesy ve stavech nepřerušitelného spánku; kteří čekají na další systémové prostředky, jako jsou diskové I/O atd.

Jak sledovat průměrné zatížení systému Linux

Existuje mnoho způsobů monitorování průměrného zatížení systému včetně doby provozuschopnosti, která ukazuje, jak dlouho systém běží, počet uživatelů spolu s průměry zatížení:

uptime

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

Čísla se čtou zleva doprava a výše uvedený výstup znamená, že:

  • průměrná zátěž za poslední 1 minutu je 1,98
  • průměrná zátěž za posledních 5 minut je 2,15
  • průměrná zátěž za posledních 15 minut je 2,21

Vysoké průměry zatížení znamenají, že systém je přetížen; mnoho procesů čeká na čas CPU.

To odhalíme v další části ve vztahu k počtu jader CPU. Kromě toho můžeme také použít další dobře známé nástroje, jako jsou top a pohledy, které zobrazují stav běžícího systému Linux v reálném čase, plus mnoho dalších nástrojů:

Vrchní příkaz

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

Nástroj Pohledy

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

Průměry zatížení zobrazené těmito nástroji jsou čteny v souboru /proc/loadavg, který můžete zobrazit pomocí příkazu cat, jak je uvedeno níže:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Chcete-li sledovat průměry zatížení ve formátu grafu, podívejte se na: ttyload – zobrazuje barevně kódovaný graf průměrného zatížení Linuxu v terminálu

Na stolních počítačích existují nástroje grafického uživatelského rozhraní, které můžeme použít k zobrazení průměrů zatížení systému.

Pochopení průměrného zatížení systému ve vztahu k počtu CPU

Nemůžeme vysvětlit zatížení systému nebo výkon systému, aniž bychom osvětlili dopad počtu jader CPU na výkon.

Víceprocesorový versus vícejádrový

  • Víceprocesorový – v něm jsou dva nebo více fyzických procesorů integrovány do jednoho počítačového systému.
  • Vícejádrový procesor – je jeden fyzický procesor, který má alespoň dvě nebo více samostatných jader (nebo to, co můžeme také označit jako procesorové jednotky), které pracují paralelně. To znamená, že dvoujádro má 2 dvě procesorové jednotky, čtyřjádro má 4 procesorové jednotky a tak dále.

Kromě toho existuje také technologie procesoru, kterou společnost Intel poprvé představila s cílem zlepšit paralelní výpočty, označovaná jako hyper threading.

Při hypervláknění se jedno fyzické jádro CPU jeví operačnímu systému jako jádro dvou logických CPU (ve skutečnosti však existuje jedna fyzická hardwarová komponenta).

Všimněte si, že jedno jádro CPU může vykonávat pouze jeden úkol najednou, takže technologie jako více CPU/procesorů, vícejádrové CPU a hyper-threading byly uvedeny do života.

S více než jedním CPU lze současně provádět několik programů. Současné procesory Intel využívají kombinaci více jader a technologie hyper-threading.

Pro zjištění počtu procesorových jednotek dostupných v systému můžeme použít následující příkazy nproc nebo lscpu:

nproc
4

OR
lscpu

Další způsob, jak zjistit počet jednotek zpracování pomocí příkazu grep, jak je znázorněno.

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

4

Nyní, abychom lépe porozuměli zatížení systému, vezmeme několik předpokladů. Řekněme, že máme průměry zatížení níže:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Na jednom základním systému by to znamenalo:
  • CPU bylo v průměru plně (100 %) využito; Za poslední 1 minutu běžel na CPU 1 proces (1,00).
  • CPU byl v průměru nečinný o 60 %; žádné procesy nečekaly na čas CPU (0,40) za posledních 5 minut.
  • CPU bylo přetíženo v průměru o 235 %; 2.35 procesů čekalo na čas CPU (3.35) za posledních 15 minut.
Na dvoujádrovém systému by to znamenalo:
  • Jeden CPU byl v průměru 100% nečinný, jeden CPU byl používán; žádné procesy za poslední 1 minutu nečekaly na čas CPU (1,00).
  • CPU byly nečinné v průměru o 160 %; žádné procesy nečekaly na čas CPU. (0,40) za posledních 5 minut.
  • CPU byly přetíženy v průměru o 135 %; Procesy 1.35 čekaly na čas CPU. (3.35) za posledních 15 minut.

Mohlo by se Vám také líbit:

  1. 20 Nástroje příkazového řádku pro sledování výkonu Linuxu – část 1
  2. 13 Nástroje pro sledování výkonu systému Linux – část 2
  3. Perf – nástroj pro sledování a analýzu výkonu pro Linux
  4. Nmon: Analyzujte a monitorujte výkon systému Linux

Závěrem lze říci, že pokud jste správcem systému, pak je třeba se obávat vysokého průměrného zatížení. Když jsou vysoké, nad počtem jader CPU, znamená to vysokou poptávku po CPU a nízké průměrné zatížení pod počtem jader CPU nám říká, že CPU jsou nevyužité.