Forstå Linux-belastningsgjennomsnitt og overvåk ytelsen til Linux
I denne artikkelen vil vi forklare en av de kritiske Linux-systemadministrasjonsoppgavene - ytelsesovervåking med hensyn til system/CPU-belastning og belastningsgjennomsnitt.
Før vi går videre, la oss forstå disse to viktige setningene i alle Unix-lignende systemer:
- Systembelastning/CPU-belastning – er en måling av CPU-over- eller underutnyttelse i et Linux-system; antall prosesser som blir utført av CPU eller i ventetilstand.
- Belastningsgjennomsnitt – er den gjennomsnittlige systembelastningen beregnet over en gitt tidsperiode på 1, 5 og 15 minutter.
I Linux antas belastningsgjennomsnittet teknisk sett å være et løpende gjennomsnitt av prosesser i dens (kjerne) utførelseskø merket som kjører eller uavbrutt.
Merk at:
- Alle om ikke de fleste systemer drevet av Linux eller andre Unix-lignende systemer vil muligens vise belastningsgjennomsnittsverdiene et sted for en bruker.
- Et rent inaktivt Linux-system kan ha et belastningsgjennomsnitt på null, unntatt inaktive prosessen.
- Nesten alle Unix-lignende systemer teller bare prosesser i kjørende eller ventende tilstand. Men dette er ikke tilfelle med Linux, det inkluderer prosesser i uavbrutt hviletilstand; de som venter på andre systemressurser som disk I/O osv.
Slik overvåker du gjennomsnittlig systembelastning for Linux
Det er mange måter å overvåke systembelastningsgjennomsnitt på, inkludert oppetid som viser hvor lenge systemet har kjørt, antall brukere sammen med belastningsgjennomsnitt:
uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
Tallene leses fra venstre mot høyre, og utdataene ovenfor betyr at:
- belastningsgjennomsnittet det siste 1 minuttet er 1,98
- belastningsgjennomsnittet de siste 5 minuttene er 2,15
- belastningsgjennomsnittet de siste 15 minuttene er 2,21
Høye lastgjennomsnitt innebærer at et system er overbelastet; mange prosesser venter på CPU-tid.
Vi vil avdekke dette i neste avsnitt i forhold til antall CPU-kjerner. I tillegg kan vi like godt bruke andre kjente verktøy som topp og blikk som viser sanntidstilstanden til et Linux-system som kjører, pluss mange andre verktøy:
Toppkommando
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
....
Blikkverktøy
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
...
Belastningsgjennomsnittene som vises av disse verktøyene er lest /proc/loadavg-filen, som du kan se ved å bruke cat-kommandoen som nedenfor:
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
For å overvåke belastningsgjennomsnitt i grafformat, sjekk ut: ttyload – Viser en fargekodet graf av Linux-belastningsgjennomsnitt i terminal
På stasjonære maskiner er det grafiske brukergrensesnittverktøy som vi kan bruke til å vise systembelastningsgjennomsnitt.
Forstå systemgjennomsnittlig belastning i forhold til antall CPUer
Vi kan umulig forklare systembelastning eller systemytelse uten å belyse virkningen av antall CPU-kjerner på ytelsen.
Multi-prosessor vs multi-core
- Multi-prosessor – er der to eller flere fysiske prosessorer er integrert i et enkelt datasystem.
- Multi-core prosessor – er en enkelt fysisk prosessor som har minst to eller flere separate kjerner (eller det vi også kan referere til som prosesseringsenheter) som fungerer parallelt. Det betyr at en dual-core har 2 to prosesseringsenheter, en quad-core har 4 prosesseringsenheter og så videre.
Videre er det også en prosessorteknologi som først ble introdusert av Intel for å forbedre parallell databehandling, referert til som hyperthreading.
Under hyperthreading vises en enkelt fysisk CPU-kjerne som to logiske CPU-kjerner til et operativsystem (men i virkeligheten er det én fysisk maskinvarekomponent).
Merk at en enkelt CPU-kjerne bare kan utføre én oppgave om gangen, og dermed ble teknologier som flere CPUer/prosessorer, multi-core CPUer og hyper-threading ført til live.
Med mer enn én CPU kan flere programmer kjøres samtidig. Dagens Intel CPUer bruker en kombinasjon av både flere kjerner og hyper-threading-teknologi.
For å finne antall tilgjengelige behandlingsenheter på et system, kan vi bruke nproc- eller lscpu-kommandoene som følger:
nproc
4
OR
lscpu
En annen måte å finne antall behandlingsenheter ved å bruke grep-kommandoen som vist.
grep 'model name' /proc/cpuinfo | wc -l
4
Nå, for å forstå systembelastningen ytterligere, vil vi ta noen antagelser. La oss si at vi har lastgjennomsnitt nedenfor:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
På et enkelt kjernesystem vil dette bety:
- CPU-en ble fullt ut (100 %) brukt i gjennomsnitt; 1 prosesser kjørte på CPU (1.00) i løpet av det siste 1 minuttet.
- CPU-en var inaktiv med 60 % i gjennomsnitt; ingen prosesser ventet på CPU-tid (0,40) i løpet av de siste 5 minuttene.
- CPU-en ble overbelastet med 235 % i gjennomsnitt; 2,35 prosesser ventet på CPU-tid (3,35) i løpet av de siste 15 minuttene.
På et dual-core system vil dette bety:
- Den ene prosessoren var 100 % inaktiv i gjennomsnitt, én prosessor ble brukt; ingen prosesser ventet på CPU-tid (1.00) i løpet av det siste 1 minuttet.
- CPU-ene var inaktive med 160 % i gjennomsnitt; ingen prosesser ventet på CPU-tid. (0,40) i løpet av de siste 5 minuttene.
- CPU-ene ble overbelastet med 135 % i gjennomsnitt; 1,35 prosesser ventet på CPU-tid. (3.35) i løpet av de siste 15 minuttene.
Du kommer kanskje også til å like:
- 20 kommandolinjeverktøy for å overvåke Linux-ytelse – del 1
- 13 Verktøy for Linux Ytelsesovervåking – Del 2
- Perf- Et ytelsesovervåkings- og analyseverktøy for Linux
- Nmon: Analyser og overvåk Linux-systemytelse
Avslutningsvis, hvis du er systemadministrator, er høye belastningsgjennomsnitt reelle å bekymre seg for. Når de er høye, over antall CPU-kjerner, betyr det høy etterspørsel etter CPU-ene, og lave belastningsgjennomsnitt under antall CPU-kjerner forteller oss at CPU-er er underutnyttet.