Supraskite „Linux“ apkrovos vidurkius ir stebėkite „Linux“ našumą


Šiame straipsnyje paaiškinsime vieną iš svarbiausių „Linux“ sistemos administravimo užduočių - našumo stebėjimą atsižvelgiant į sistemos/procesoriaus apkrovą ir apkrovos vidurkius.

Prieš žengdami toliau, supraskime šias dvi svarbias frazes visose „Unix“ tipo sistemose:

  • Sistemos apkrova/CPU apkrova - tai procesoriaus per didelio ar nepakankamo naudojimo Linux sistemoje matavimas; procesorių, kuriuos vykdo procesorius arba laukimo būsena, skaičius.
  • Apkrovos vidurkis - vidutinė sistemos apkrova, apskaičiuota per tam tikrą laikotarpį 1, 5 ir 15 minučių.

Techniškai manoma, kad sistemoje „Linux“ apkrovos vidurkis yra jo (branduolio) vykdymo eilės procesų, pažymėtų kaip veikiantis arba nepertraukiamas, procesų vidurkis.

Prisimink tai:

  • Visos, jei ne dauguma „Linux“ ar kitų į „Unix“ panašių sistemų, gali rodyti vidutines apkrovos vertes vartotojui.
  • Viso neveikiančios „Linux“ sistemos apkrovos vidurkis gali būti lygus nuliui, išskyrus tuščiosios eigos procesą.
  • Beveik visos „Unix“ tipo sistemos skaičiuoja tik procesus veikiančiose arba laukiančiose būsenose. Bet tai nėra „Linux“ atvejis, jis apima nepertraukiamo miego būsenos procesus; tie, kurie laukia kitų sistemos išteklių, pvz., disko įvesties/išvesties ir pan

Kaip stebėti „Linux“ sistemos apkrovos vidurkį

Yra daugybė būdų stebėti sistemos apkrovos vidurkį, įskaitant veikimo laiką, kuris parodo sistemos veikimo trukmę, vartotojų skaičių ir apkrovos vidurkius:

$ uptime

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

Skaičiai skaitomi iš kairės į dešinę, o išvestis aukščiau reiškia, kad:

  • apkrovos vidurkis per pastarąsias 1 minutę yra 1,98
  • apkrovos vidurkis per pastarąsias 5 minutes yra 2,15
  • apkrovos vidurkis per pastarąsias 15 minučių yra 2,21

Didelės apkrovos vidurkiai reiškia, kad sistema yra perkrauta; daugelis procesorių laukia procesoriaus laiko.

Tai atskleisime kitame skyriuje, susijusiame su procesoriaus branduolių skaičiumi. Be to, mes taip pat galime naudoti kitus gerai žinomus įrankius, tokius kaip žvilgsniai, rodantys veikiančios „Linux“ sistemos būseną realiuoju laiku, ir daugelį kitų įrankių:

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

Šių įrankių rodomi apkrovos vidurkiai yra skaitymo/proc/loadavg failas, kurį galite peržiūrėti naudodami komandą cat taip:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Norėdami stebėti apkrovos vidurkius grafiko formatu, patikrinkite: ttyload - rodo spalvotą „Linux“ apkrovos vidurkio grafiką terminale

Stalinėse mašinose yra grafinių vartotojo sąsajos įrankių, kuriuos galime naudoti sistemos apkrovos vidurkiams peržiūrėti.

Suprasti sistemos vidutinę apkrovą santykyje su centriniais procesoriais

Negalime paaiškinti sistemos apkrovos ar sistemos našumo, neišaiškindami procesoriaus branduolių skaičiaus įtakos našumui.

  • Daugiafunkcinis procesorius - tai du ar daugiau fizinių procesorių yra integruoti į vieną kompiuterio sistemą.
  • Daugelio branduolių procesorius - tai vienas fizinis procesorius, turintis mažiausiai du ar daugiau atskirų branduolių (arba tai, ką mes taip pat galime vadinti procesoriais), kurie veikia lygiagrečiai. Tai reiškia, kad dviejų branduolių procesorius turi 2 du procesorius, keturių branduolių - 4 procesorius ir pan.

Be to, taip pat yra procesoriaus technologija, kurią pirmą kartą įdiegė „Intel“, kad pagerintų lygiagrečią skaičiavimą, vadinamą „hipersriegiu“.

Taikant hipersriegį, vienas fizinis procesoriaus branduolys operacinei sistemai atrodo kaip du logiški procesoriaus branduoliai (tačiau iš tikrųjų yra vienas fizinis aparatinės įrangos komponentas).

Atkreipkite dėmesį, kad vienas centrinio procesoriaus branduolys vienu metu gali atlikti tik vieną užduotį, taigi tokios technologijos kaip keli procesoriai/procesoriai, kelių branduolių procesoriai ir hipersriegiai buvo atgaivinti.

Turint daugiau nei vieną procesorių, kelias programas galima vykdyti vienu metu. Dabartiniai „Intel“ procesoriai naudoja kelių branduolių ir hiperinio gijų technologijos derinį.

Norėdami rasti sistemoje galimų apdorojimo vienetų skaičių, galime naudoti komandas nproc arba lscpu taip:

$ nproc
4

OR
lscpu

Kitas būdas rasti apdorojimo vienetų skaičių naudojant komandą grep, kaip parodyta.

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

4

Dabar, norėdami geriau suprasti sistemos apkrovą, mes padarysime keletą prielaidų. Tarkime, kad apkrovos vidurkiai yra žemiau:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35

  • Procesorius buvo visiškai (100%) išnaudotas vidutiniškai; Per pastarąją 1 minutę procesoriuje (1.00) vyko 1 procesas.
  • CPU vidutiniškai neveikė 60%; nė vienas procesas per paskutines 5 minutes nelaukė procesoriaus laiko (0,40).
  • CPU buvo perkrautas vidutiniškai 235%; Per pastarąsias 15 minučių procesoriaus laiko laukė 2,35 procesai (3,35).

  • Vienas centrinis procesorius vidutiniškai neveikė 100%, buvo naudojamas vienas procesorius; nė vienas procesas per paskutinę 1 minutę nelaukė procesoriaus laiko (1,00).
  • Centriniai procesoriai neveikė vidutiniškai 160%; procesoriai nelaukė procesoriaus laiko. (0,40) per paskutines 5 minutes.
  • Procesoriai buvo perkrauti vidutiniškai 135%; Procesoriaus laiko laukė 1,35 procesai. (3.35) per pastarąsias 15 minučių.

Tau taip pat gali patikti:

  1. 20 komandų eilutės įrankių, skirtų „Linux“ našumui stebėti, 1 dalis
  2. 13 „Linux“ našumo stebėjimo įrankių - 2 dalis
  3. Perf- „Linux“ našumo stebėjimo ir analizės įrankis
  4. Nmon: analizuokite ir stebėkite „Linux“ sistemos našumą

Apibendrinant galima pasakyti, kad jei esate sistemos administratorius, dėl didelių apkrovos vidurkių tikrai reikia jaudintis. Kai jie yra dideli, viršija procesoriaus branduolių skaičių, tai reiškia didelę procesorių paklausą, o mažos apkrovos vidurkiai, mažesni už procesoriaus branduolių skaičių, rodo, kad procesoriai yra nepakankamai naudojami.