Jak používat příkaz vmstat v systému Linux

Váš počítač se systémem Linux nebo macOS používá virtuální paměť. Zjistěte, jak to ovlivňuje využití fyzické paměti, procesoru a prostředků pevného disku vaším systémem.

Co je virtuální paměť?

Váš počítač je vybaven omezeným množstvím fyzické paměti, tzv paměť s náhodným přístupem (RAM). Tato RAM musí být spravována jádrem a sdílena mezi operačním systémem a všemi spuštěnými aplikacemi. Pokud tyto kombinované požadavky vyžadují více paměti, než je fyzicky nainstalováno ve vašem počítači, co může jádro udělat?

Linux a operační systémy podobné Unixu, jako je macOS, mohou využívat místo na pevném disku, aby jim pomohly spravovat požadavky na paměť. Vyhrazenou oblast místa na pevném disku nazývanou „swap space“ lze použít, jako by šlo o rozšíření paměti RAM. Toto je virtuální paměť.

Linuxové jádro může zapsat obsah bloku paměti do odkládacího prostoru a uvolnit tuto oblast RAM pro použití jiným procesem. Odloženou – také nazývanou „stránkovanou“ paměť – lze načíst z odkládacího prostoru a v případě potřeby obnovit do RAM.

Rychlost přístupu k stránkované paměti je samozřejmě nižší než rychlost paměti uložené v paměti RAM. A to není jediný kompromis. Zatímco virtuální paměť poskytuje Linuxu způsob, jak spravovat své požadavky na paměť, používání virtuální paměti zvyšuje zátěž jinde v počítači.

Váš pevný disk musí provádět více čtení a zápisů. Jádro – a tedy i CPU – musí udělat více práce, protože vyměňuje paměť, zasouvá paměť a udržuje všechny plotny v rotaci, aby uspokojily paměťové potřeby různých procesů.

Linux poskytuje způsob, jak sledovat všechny tyto aktivity ve tvaru příkazu vmstat, který podává zprávy statistiky virtuální paměti.

Příkaz vmstat

Pokud zadáte vmstat jako příkaz bez parametrů, zobrazí se sada hodnot. Tyto hodnoty jsou průměry pro každou statistiku od posledního restartu počítače. Tato čísla nejsou snímkem hodnot „právě teď“.

vmstat

Zobrazí se krátká tabulka hodnot.

Jsou zde sloupce nadepsané Process, Memory, Swap, IO, System a CPU. Poslední sloupec (sloupec nejvíce vpravo) obsahuje data týkající se CPU.

Zde je seznam datových položek v každém sloupci.

Proč

r: Počet spustitelných procesů. Jedná se o procesy, které byly spuštěny a buď běží, nebo čekají na svůj další časově rozdělený shluk cyklů CPU.
b: Počet procesů v nepřerušitelném spánku. Proces nespí, provádí blokovací systémové volání a nelze jej přerušit, dokud nedokončí svou aktuální akci. Obvykle je procesem ovladač zařízení, který čeká na uvolnění nějakého zdroje. Všechna přerušení ve frontě pro tento proces se zpracují, když proces obnoví svou obvyklou činnost.

Paměť

swpd: množství použité virtuální paměti. Jinými slovy, kolik paměti bylo vyměněno.,
volné: množství nečinné (momentálně nevyužité) paměti.
buff: množství paměti použité jako vyrovnávací paměti.
cache: množství paměti použité jako mezipaměť.

Vyměňte

si: Množství virtuální paměti odložené z odkládacího prostoru.
takže: Množství virtuální paměti vyměněné za odkládací prostor.

IO

bi: Bloky přijaté z blokového zařízení. Počet datových bloků použitých k výměně virtuální paměti zpět do RAM.
bo: Bloky odeslané do blokového zařízení. Počet datových bloků použitých k výměně virtuální paměti z RAM do odkládacího prostoru.

Systém

in: Počet přerušení za sekundu, včetně hodin.
cs: Počet přepnutí kontextu za sekundu. K přepnutí kontextu dochází, když jádro přechází ze zpracování v systémovém režimu do zpracování v uživatelském režimu.

procesor

Všechny tyto hodnoty jsou procenta z celkového času CPU.

nás: Čas strávený spouštěním nekernelového kódu. To znamená, kolik času stráví zpracováním uživatelského času a zpracováním pěkného času.
sy: Čas strávený spouštěním kódu jádra.
id: Čas strávený nečinností.
wa: Čas strávený čekáním na vstup nebo výstup.
st: Čas ukradený z virtuálního stroje. Toto je doba, po kterou musí virtuální stroj čekat, než hypervizor dokončí obsluhu jiných virtuálních strojů, než se může vrátit a věnovat se tomuto virtuálnímu stroji.

Použití časového intervalu

Můžeme nechat vmstat poskytovat pravidelné aktualizace těchto čísel pomocí hodnoty zpoždění. Hodnota zpoždění je uvedena v sekundách. Aby se statistiky aktualizovaly každých pět sekund, použili bychom následující příkaz:

vmstat 5

Každých pět sekund vmstat přidá do tabulky další řádek dat. Chcete-li to zastavit, musíte stisknout Ctrl+C.

Použití hodnoty počtu

Použití příliš nízké hodnoty zpoždění způsobí další zátěž pro váš systém. Pokud potřebujete rychlé aktualizace, abyste se pokusili diagnostikovat problém, doporučuje se použít hodnotu počtu i hodnotu zpoždění.

Hodnota count sděluje vmstat, kolik aktualizací má provést, než se ukončí, a vrátí vás na příkazový řádek. Pokud nezadáte hodnotu počtu, vmstat poběží, dokud jej nezastavíte pomocí Ctrl+C.

Chcete-li, aby vmstat poskytoval aktualizaci každých pět sekund – ale pouze pro čtyři aktualizace – použijte následující příkaz:

vmstat 5 4

Po čtyřech aktualizacích se vmstat samovolně zastaví.

Změna jednotek

Pomocí volby -S (unit-character) můžete zobrazit statistiku paměti a swapu v kilobajtech nebo megabajtech. Musí následovat jedno z k , K , m nebo M. Ty představují:

k:1000 bajtů
K: 1024 bajtů
m: 1 000 000 bajtů
M: 1048576 bajtů

Chcete-li, aby se statistiky aktualizovaly každých 10 sekund a statistiky paměti a swap se zobrazovaly v megabajtech, použijte následující příkaz:

vmstat 10 -S M

Statistiky paměti a swapu se nyní zobrazují v megabajtech. Všimněte si, že volba -S neovlivňuje statistiku IO bloku. Ty jsou vždy zobrazeny v blocích.

Aktivní a neaktivní paměť

Pokud použijete volbu -a (aktivní), budou sloupce buff a cache nahrazeny sloupci „inact“ a „active“. Jak by naznačovali, tyto ukazují množství neaktivní a aktivní paměti.

Chcete-li zobrazit tyto dva sloupce místo sloupců buff a mezipaměti, zahrňte volbu -a, jak je znázorněno:

vmstat 5 -a -S M

Neaktivní a aktivní sloupce jsou ovlivněny volbou -S (jednotka-znak).

Vidličky

Přepínač -f zobrazuje počet rozvětvení, ke kterému došlo od spuštění počítače.

Jinými slovy, toto ukazuje počet úloh, které byly spuštěny (a u většiny z nich znovu uzavřeny) od spuštění systému. Každý proces spuštěný z příkazového řádku by toto číslo zvýšil. Pokaždé, když úkol nebo proces vytvoří nebo naklonuje nový úkol, toto číslo se zvýší.

vmstat -f

Displej vidlic se neaktualizuje.

Zobrazuji Slabinfo

Jádro má vlastní správu paměti, o kterou se musí starat, stejně jako správu paměti pro operační systém a všechny aplikace.

Jak si můžete představit, jádro alokuje a uvolňuje paměť znovu a znovu pro mnoho různých typů datových objektů, které musí zpracovávat. Aby to bylo co nejúčinnější, používá systém zvaný desky. Toto je forma ukládání do mezipaměti.

Paměť alokovaná, používaná a již nepotřebná pro určitý typ datového objektu jádra může být znovu použita pro jiný datový objekt stejného typu, aniž by byla paměť uvolněna a znovu alokována. Představte si slaby jako předem alokované segmenty RAM vyrobené na míru pro vlastní potřeby jádra.

Chcete-li zobrazit statistiku desek, použijte volbu -m (desky). Budete muset použít sudo a budete vyzváni k zadání hesla. Protože výstup může být poměrně zdlouhavý, propouštíme ho méně.

sudo vmstat -m | less

Výstup má pět sloupců. Tyto jsou:

Cache: Název mezipaměti.
num: Počet aktuálně aktivních objektů v této mezipaměti.
celkem: Celkový počet dostupných objektů v této mezipaměti.
velikost: Velikost každého objektu v mezipaměti.
stránky: Celkový počet stránek paměti, které mají (alespoň) jeden objekt aktuálně spojený s touto mezipamětí.

Stisknutím q ponecháte méně.

Zobrazení počítadel událostí a statistik paměti

Chcete-li zobrazit stránku čítačů událostí a statistik paměti, použijte volbu -s (statistiky). Všimněte si, že je to malé „s“.

vmstat -s

Ačkoli jsou hlášené statistiky z velké části stejné jako informace, které tvoří výchozí výstup vmstat, některé z nich jsou rozděleny podrobněji.

Například výchozí výstup spojuje jak pěkný, tak nepříliš dobrý uživatelský čas CPU do sloupce „nás“. Zobrazení -s (statistiky) uvádí tyto statistiky samostatně.

Zobrazení statistiky disku

Podobný výpis statistik disku můžete získat pomocí volby -d (disk).

vmstat -d | less

Pro každý disk se zobrazí tři sloupce, jedná se o čtení, zápis a vstup.

IO je sloupec úplně vpravo. Všimněte si, že sloupec sekund v IO se měří v sekundách, ale časové statistiky ve sloupcích čtení a zápisu se měří v milisekundách.

Toto znamenají sloupce:

Čte

total: Celkový počet přečtení disku.
sloučeno: Celkový počet seskupených čtení.
sektory: Celkový počet sektorů, které byly načteny.
ms: Celkový počet času v milisekundách, který byl použit ke čtení dat z disku.

píše

total: Celkový počet zápisů na disk.
sloučeno: Celkový počet seskupených zápisů.
sektory: Celkový počet zapsaných sektorů.
ms = Celkový počet času v milisekundách, který byl použit k zápisu dat na disk.

IO

cur: Počet aktuálních čtení nebo zápisů disku.
sec: Čas strávený v sekundách pro probíhající čtení nebo zápis.

Zobrazení souhrnné statistiky disku

Chcete-li rychle zobrazit souhrnné statistiky aktivity disku, použijte volbu -D (součet disku). Všimněte si velkého písmene „D“.

vmstat -D

Počet disků může vypadat abnormálně vysoký. Počítač použitý k výzkumu tohoto článku používá Ubuntu. S Ubuntu se pokaždé, když nainstalujete aplikaci ze Snapu, vytvoří pseudo-souborový systém squashfs, který je připojen k zařízení /dev/loop.

Je nepříjemné, že tyto položky zařízení jsou mnoha příkazy a nástroji Linuxu považovány za zařízení s pevným diskem.

Zobrazení statistiky oddílu

Chcete-li zobrazit statistiku týkající se konkrétního oddílu, použijte volbu -p (oddíl) a zadejte identifikátor oddílu jako parametr příkazového řádku.

Zde se podíváme na oddíl sda1. Číslice jedna označuje, že se jedná o první oddíl na zařízení sda, což je hlavní pevný disk tohoto počítače.

vmstat -p sda1

Vrácené informace ukazují celkový počet čtení z disku a zápisů na disk az tohoto oddílu a počet sektorů zahrnutých v akcích čtení a zápisu na disk.

Pohled pod pokličku

Vždy je dobré vědět, jak zvednout kapotu a podívat se, co se děje pod ní. Někdy se budete snažit problém vyřešit, někdy to bude mimo zájem, protože chcete vědět, jak váš počítač tiká.

vmstat vám může poskytnout spoustu užitečných informací. Nyní víte, jak k němu přistupovat a co to znamená. A forewarned is forearmed – když si budete potřebovat vyhrnout rukávy a provést nějakou diagnostiku, budete vědět, že máte na své straně vmstat.