Vyhledávání na webu

Cpustat - monitoruje využití CPU spuštěnými procesy v Linuxu


Cpustat je výkonný program pro měření výkonu systému pro Linux, napsaný pomocí programovacího jazyka Go. Pokouší se odhalit vytížení a saturaci CPU efektivním způsobem pomocí metody USE (Utilization Saturation and Errors) (metodika pro analýzu výkonu libovolného systému).

Extrahuje vzorky s vyšší frekvencí každého procesu prováděného v systému a poté tyto vzorky shrnuje na nižší frekvenci. Dokáže například měřit každý proces každých 200 ms a každých 5 sekund tyto vzorky shrnout, včetně minimálních/průměrných/maximálních hodnot pro určité metriky.

Doporučená četba: 20 nástrojů příkazového řádku pro sledování výkonu Linuxu

Cpustat vydává data dvěma možnými způsoby: čistě textovým seznamem souhrnného intervalu a barevným rolovacím panelem každého vzorku.

Jak nainstalovat Cpustat v Linuxu

Abyste mohli používat cpustat, musíte mít na svém systému Linux nainstalovanou aplikaci Go (GoLang), klikněte na odkaz níže a postupujte podle kroků instalace GoLang, pokud nemáte nainstalovalo se:

  1. Nainstalujte GoLang (Go Programming Language) v Linuxu

Jakmile nainstalujete Go, zadejte níže příkaz go get a nainstalujte jej, tento příkaz nainstaluje binární soubor cpustat do vašeho GOBIN proměnná:

go get github.com/uber-common/cpustat

Jak používat Cpustat v Linuxu

Po dokončení procesu instalace spusťte cpustat následujícím způsobem s právy root pomocí příkazu sudo, což je, pokud ovládáte systém jako uživatel bez oprávnění root, jinak se zobrazí chyba, jak je uvedeno:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Poznámka: Chcete-li spustit cpustat a všechny ostatní programy Go, které jste nainstalovali do systému, jako jiné příkazy, zahrňte GOBIN ve vaší proměnné prostředí PATH. Otevřete odkaz níže a zjistěte, jak nastavit proměnnou PATH v Linuxu.

  1. Naučte se, jak trvale nastavit proměnné PATH v systému Linux

Takto funguje cpustat; je dotazován adresář /proc, aby se získal aktuální seznam ID procesů pro každý interval, a:

  • pro každý PID přečtěte /proc/pid/stat a poté vypočítejte rozdíl od předchozího vzorku.
  • v případě, že se jedná o nový PID, přečtěte si /proc/pid/cmdline.
  • pro každý PID odešlete zprávu netlink pro načtení statistik úloh, vypočítejte rozdíl od předchozího vzorku.
  • načtením /proc/stat získáte celkové systémové statistiky.

Opět platí, že každý interval spánku je upraven tak, aby zohlednil množství času spotřebovaného při načítání všech těchto statistik. Kromě toho každý vzorek také zaznamenává dobu, kterou trvalo provedení měřítka každého měření podle skutečné doby uplynulé mezi vzorky. To se pokouší vysvětlit zpoždění samotného cpustatu.

Při spuštění bez jakýchkoli argumentů cpustat ve výchozím nastavení zobrazí následující: interval vzorkování: 200 ms, interval souhrnu: 2 s (10 vzorků), zobrazení 10 nejlepších procesů, uživatelský filtr: vše, filtr pid: vše jako zobrazeno na snímku obrazovky níže:

sudo $GOBIN/cpustat 

Z výše uvedeného výstupu jsou následující významy celosystémových souhrnných metrik zobrazených před poli:

  • usr – minimální/průměrná/maximální doba běhu uživatelského režimu jako procento CPU.
  • sys – minimální/průměrná/max doba běhu systému v procentech CPU.
  • pěkné – minimální/průměrný/max uživatelský režim s nízkou prioritou doby běhu jako procento CPU.
  • idle – minimální/průměrná/maximální doba běhu uživatelského režimu jako procento CPU.
  • iowait – minimální/průměrné/maximální zpoždění čekání na vstup disku.
  • prun – minimální/prům./max. počet procesů v provozuschopném stavu (stejný jako průměr zatížení).
  • pblock – min/prům/max počet procesů blokovaných na IO disku.
  • pstart – počet procesů/vláken spuštěných v tomto souhrnném intervalu.

Stále z výše uvedeného výstupu pro daný proces různé sloupce znamenají:

  • name – běžný název procesu z /proc/pid/stat nebo /proc/pid/cmdline.
  • pid – ID procesu, také označované jako „tgid“.
  • min – nejnižší vzorek času uživatele a systému pro pid, měřeno z /proc/pid/stat. Měřítko je procento CPU.
  • max – nejvyšší vzorek času uživatele a systému pro tento pid, měřeno také z /proc/pid/stat.
  • usr – průměrný uživatelský čas pro pid za souhrnné období, měřeno z /proc/pid/stat.
  • sys – průměrný systémový čas pro pid za souhrnné období, měřený z /proc/pid/stat.
  • nice – označuje aktuální „hezčí“ hodnotu pro proces, měřenou z /proc/pid/stat. Vyšší znamená „hezčí“.
  • runq – čas, kdy je proces a všechna jeho vlákna spuštěna, ale čekají na spuštění, měřeno ze statistik úloh přes netlink. Měřítko je procento CPU.
  • iow – čas strávený procesem a všemi jeho vlákny blokovanými vstupem a výstupem disku, měřeno ze statistik úloh přes netlink. Měřítko je procento CPU, zprůměrované za souhrnný interval.
  • swap – čas, který proces a všechna jeho vlákna strávil čekáním na výměnu, měřeno ze statistik úloh přes netlink. Měřítko je procento CPU, zprůměrované za souhrnný interval.
  • vcx a icx – celkový počet dobrovolných přepnutí kontextu procesem a všemi jeho vlákny během souhrnného intervalu, měřeno ze statistik úloh přes netlink.
  • rss – aktuální hodnota RSS načtená z /proc/pid/stat. Je to množství paměti, kterou tento proces používá.
  • ctime – součet času CPU uživatele + sys spotřebovaného čekáním na děti, které odešly během tohoto souhrnného intervalu, měřeno z /proc/pid/stat.

Všimněte si, že dlouho běžící podřízené procesy mohou toto měření často zmást, protože čas je hlášen pouze při ukončení podřízeného procesu. To je však užitečné pro měření dopadu častých úloh cron a kontrol stavu, kdy čas CPU často spotřebovává mnoho podřízených procesů.

  • thrd – počet vláken na konci intervalu souhrnu, měřeno z /proc/pid/stat.
  • sam – počet vzorků pro tento proces zahrnutý do souhrnného intervalu. Procesy, které byly nedávno zahájeny nebo ukončeny, mohly být viditelné pro méně vzorků, než je souhrnný interval.

Následující příkaz zobrazí 10 hlavních procesů uživatele root spuštěných v systému:

sudo $GOBIN/cpustat -u root

Chcete-li zobrazit výstup v luxusním terminálovém režimu, použijte příznak -t následovně:

sudo $GOBIN/cpustat -u roo -t

Chcete-li zobrazit nejvyšší x počet procesů (výchozí hodnota je 10), můžete použít příznak -n, následující příkaz zobrazuje 20 nejlepších linuxových procesů běžících v systému:

sudo $GOBIN/cpustat -n 20 

Profil CPU můžete také zapsat do souboru pomocí volby -cpuprofile následovně a poté soubor zobrazit pomocí příkazu cat:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Chcete-li zobrazit informace nápovědy, použijte příznak -h následovně:

sudo $GOBIN/cpustat -h

Další informace naleznete v repozitáři cpustat Github: https://github.com/uber-common/cpustat

To je vše! V tomto článku jsme vám ukázali, jak nainstalovat a používat cpustat, užitečný nástroj pro měření výkonu systému pro Linux. Podělte se s námi o své myšlenky prostřednictvím sekce komentářů níže.