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:
- 20 Nástroje příkazového řádku pro sledování výkonu Linuxu – část 1
- 13 Nástroje pro sledování výkonu systému Linux – část 2
- Perf – nástroj pro sledování a analýzu výkonu pro Linux
- 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é.