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:
- 20 komandų eilutės įrankių, skirtų „Linux“ našumui stebėti, 1 dalis
- 13 „Linux“ našumo stebėjimo įrankių - 2 dalis
- Perf- „Linux“ našumo stebėjimo ir analizės įrankis
- 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.