V tomto příspěvku se bude diskutovat o řadě základních profilovacích nástrojů, které jsou standardně součástí většiny systémů Linux. Nástroje představené v tomto příspěvku, vmstat, sar, iostat a mpstat, jsou relativně jednoduché, ale poskytují základní údaje, které mohou být velmi užitečné při analýze výkonu systému. Pro většinu příkladů budeme používat počítač CentOS 8.
vmstat:Statistika virtuální paměti
Jedním z nejužitečnějších nástrojů při řešení problémů s výkonem souvisejících s pamětí je vmstat. Příkaz vmstat je součástí procps-ng balíček, který obsahuje další užitečné příkazy pro analýzu výkonu, jako je free a top.
Pokud příkaz vmstat nezadá žádné argumenty, vytiskne průměry různých systémových statistik od spuštění. Příkaz vmstat přijímá dva argumenty. První je zpoždění , a druhý je počet . Zpoždění je hodnota v sekundách mezi výstupem. Počet je počet iterací statistiky, které se mají hlásit. Pokud není zadán žádný počet, vmstat bude průběžně hlásit statistiky.
Statistiky paměti jsou uvedeny v KiB ve výchozím stavu. Možnost —S umožňuje tuto změnu změnit na hlášení v KB, MB nebo MiB s -S k , -S m a -S M , respektive.
První řádek výstupu vmstat je vždy průměrem od spuštění, takže při shromažďování metrik odstraňte první řádek a použijte následující řádky. První dva řádky výstupu jsou informace záhlaví a třetí je průměrná doba provozuschopnosti. Následující příklad ukazuje výstup vmstat začínající na čtvrtém řádku výstupu:
# vmstat 10 | tail -n +4 1 0 0 479748 1044 570784 0 0 0 5 90 132 0 0 100 0 0 0 0 0 475952 1044 570912 0 0 0 0 81 130 0 0 100 0 0 0 0 0 479456 1044 570856 0 0 0 52 87 137 0 0 100 0 0 ...
Přehled sloupců vmstat
příklady vmstat
1. Pokud příkaz vmstat nezadá žádné argumenty, vytiskne průměry různých systémových statistik od spuštění:
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 424444 1044 615940 0 0 89 14 58 78 1 0 98 1 0
2. Zde je příklad, kdy vmstat bude vydávat statistiky každých 10 sekund až do přerušení:
# vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 426440 1044 615872 0 0 88 14 58 78 1 0 98 1 0 0 0 0 426072 1044 615872 0 0 0 1 92 137 0 0 100 0 0 0 0 0 426072 1044 615872 0 0 0 5 74 116 0 0 100 0 0 ...
3. Pokud chcete, aby se vmstat po vytištění čtyř zpráv ukončil, přidejte argument počtu:
# vmstat 10 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 425236 1044 616252 0 0 86 13 58 78 1 0 98 1 0 0 0 0 424936 1044 616252 0 0 0 1 85 129 0 0 100 0 0 0 0 0 424876 1044 616252 0 0 0 15 70 111 0 0 100 0 0 0 0 0 423360 1044 616252 0 0 0 1 89 130 0 0 100 0 0
sar:reportér aktivity systému
Příkaz sar je víceúčelový analytický nástroj, který je součástí balíčku sysstat. Funguje ve dvou režimech. Dokáže číst data shromážděná úlohou cron každých 10 minut, nebo jej lze použít ke shromažďování okamžitých dat o stavu systému.
Poznámka :Úloha cron je nainstalována jako /etc/cron.d/sysstat , který spouští příkazy /usr/lib64/sa/sa1 a /usr/lib64/sa/sa2, které shromažďují data pomocí /usr/lib64/sa/sadc a sar. Tato data jsou uložena v /var/log/sa/sadd, kde dd je dvoumístný den v měsíci.Poznámka :Stejně jako příkaz vmstat lze sar spustit se zpožděním a argumenty počítání, aby se hlásily statistiky pro určitý počet iterací a se zadanou dobou zpoždění mezi každou iterací.Než začnete, ujistěte se, že je nainstalován sar. Pokud není nainstalován, nainstalujte jej pomocí yum:
# yum install sysstat
Po instalaci nakonfigurujte sar tak, aby shromažďoval data v 5minutových intervalech:
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
Nejlepších výsledků při používání sar dosáhnete, když nastavíte národní prostředí pomocí LANG proměnná prostředí, která poskytuje 24hodinovou časovou podporu. Pokud například třídíte data sar podle prvního sloupce (časový sloupec), cs_US.UTF-8 locale bude umístěno 13:00:00 před 02:00:00. To pravděpodobně povede ke zkreslení datových bodů a graf bude bezcenný. Národní prostředí c je takové, které splňuje tento požadavek na třídění. Při práci s daty sar přepište národní prostředí takto:
# LANG=C sar -q Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/21 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Ve skutečnosti lze pro sar jednoduše vytvořit alias. Přidejte následující řádek do /etc/bashrc nebo ~/.bashrc :
alias sar='LANG=C sar'
sar lze použít ke čtení jednoho ze souborů protokolu (nebo obecně jakéhokoli datového souboru sar) pomocí volby -f.
# sar -q -f /var/log/sa/sa09 Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/2021 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Některé konfigurace lze provést v /etc/sysconfig/sysstat soubor. Změňte například HISTORII proměnnou pro nastavení počtu dní, po které jsou archivy uchovávány pro sar.
příklady sar
1. Vytvořte celosystémový alias pro sar, který nutí sar hlásit pomocí 24hodinového času. Zdroj to do aktuálního shellu.
# echo "alias sar='LANG=c sar'" >> /etc/bashrc # source /etc/bashrc
2. Udržujte archivy 60 dní místo 28. Změňte proměnnou HISTORY v /etc/sysconfig/sysstat.
# vim /etc/sysconfig/sysstat HISTORY=60
3. Oznamte statistiku I/O a přenosové rychlosti:
# sar -b Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 38.16 31.03 7.14 1655.33 390.20 12:20:01 AM 12.11 5.81 6.30 280.99 239.08 12:30:01 AM 8.40 2.34 6.06 105.99 229.95 12:40:01 AM 7.38 1.62 5.76 23.48 211.41 12:50:01 AM 8.69 2.64 6.04 125.33 230.58 01:00:01 AM 8.09 2.26 5.83 77.72 227.70 01:10:02 AM 12.25 6.10 6.15 215.14 235.73 ... Average: 12.81 6.41 6.40 343.31 255.49
4. Nahlaste využití CPU0:
# sar -P 0 Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM 0 11.69 0.00 2.96 0.28 0.06 85.01 12:20:01 AM 0 9.87 0.00 2.53 0.12 0.04 87.44 12:30:01 AM 0 9.96 0.00 2.48 0.09 0.04 87.43 12:40:01 AM 0 9.59 0.00 2.43 0.06 0.04 87.88 12:50:01 AM 0 9.80 0.00 2.46 0.09 0.05 87.59 ... Average: 0 10.00 0.02 2.60 0.14 0.15 87.08
5. Nahlaste statistiku síťového zařízení z aktuálního souboru protokolu.
# sar -n DEV Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... Average: dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ...
6. Nakonfigurujte další úlohu cron pro shromažďování dat o spotřebě energie kromě dat na disku. Upravte následující v souboru /etc/sysconfig/sysstat:
SADC_OPTIONS="-S POWER"
iostat a mpstat
Stejně jako sar jsou iostat a mpstat součástí balíčku sysstat. Iostat i mpstat podporují argumenty zpoždění a počtu stejně jako příkaz vmstat. iostat hlásí CPU a I/O statistiky pro zařízení. oddíly a síťové systémy souborů (NFS).
Příkaz mpstat hlásí statistiky související s CPU. Podobně jako u sar může být nutné nakonfigurovat LANG na 24 hodin.
příklady iostat a mpstat
1. Zobrazit rozšířený výstup pro /dev/sda.
# iostat -x sda Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.12 0.08 2.85 0.09 0.24 88.63 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 1.76 7.13 3.55 4.17 122.57 93.88 56.07 0.00 0.83 0.71 0.93 0.88 0.68
2. Zobrazit statistiku CPU pro CPU0:
# LANG=C mpstat -P 0 Linux 5.4.10-x86_64-linode132 (mywebserver.com) 02/09/21 _x86_64_ (1 CPU) 06:32:13 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:32:13 0 8.12 0.08 2.37 0.09 0.22 0.25 0.24 0.00 0.00 88.63