|
Příkaz vmstat je nejběžnějším nástrojem pro monitorování Linuxu/Unixu, který zobrazuje stavové hodnoty serveru v daném časovém intervalu, včetně serveruVyužití CPU, využití paměti, výměna virtuální paměti, čtení a zápis IO. Tento příkaz je můj oblíbený na kontrolu Linuxu/Unixu, jedním je, že je podporován Linux/Unix, a druhým je, že ve srovnání s nejvyšším systémem vidím využití CPU, paměti a IO celého stroje, místo abych viděl jen využití CPU a paměti jednotlivých procesů (různé scénáře použití). Obecně se nástroj VMSTAT používá pomocí dvou číselných parametrů, prvním parametrem je počet vzorkovaných časových intervalů, jednotkou jsou sekundy a druhým parametrem je počet vzorků, například:
root@ubuntu:~# VMSTAT 2 1 Procs -----------memory---------- ---swap-- -----io---- -System-- ----CPU---- R b SWPD Free Buff cache si so bi bo in cs us sy id wa wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 znamená, že stav serveru se sbírá jednou za dvě sekundy, a 1 znamená, že stav serveru je sbírán pouze jednou. Ve skutečnosti během procesu přihlášky monitorujeme nějakou dobu, a pokud nechceme monitorovat, můžeme jednoduše ukončit VMSTAT přímo, například:
root@ubuntu:~# VMSTAT 2 Procs -----------memory---------- ---swap-- -----io---- -System-- ----CPU---- R b SWPD Free Buff cache si so bi bo in cs us sy id wa wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
To znamená, že VMSTAT sbírá data každé 2 sekundy a pokračuje, dokud program neukončím, a program ukončím po pěti sběru dat zde. Dobře, příkaz je zaveden, teď začněme vysvětlovat význam každého parametru. rTo znamená spustit frontu (tedy kolik procesů je skutečně přiděleno CPU), server, který jsem testoval, je momentálně relativně nečinný, nejsou tam žádné běžící programy, a když tato hodnota překročí počet CPU, vznikne úzké hrdlo CPU. To také souvisí s naložením topu, obecně je zatížení vyšší, pokud překročí 3, je vyšší, pokud překročí 5, a pokud překročí 10, není to normální a stav serveru je velmi nebezpečný. Zatížení horní části je podobné jako u běžící fronty za sekundu. Pokud je běžící fronta příliš velká, znamená to, že CPU je zaneprázdněný, což obvykle způsobuje vysokou zátěž CPU. bZnamená to blokovaný proces, to není moc co říct, proces je zablokovaný, všichni to chápou. SWPDPokud je velikost použité virtuální paměti větší než 0, znamená to, že váš stroj nemá dostatek fyzické paměti, a pokud to není příčinou úniku paměťové paměti programu, je čas paměť upgradovat nebo migrovat paměťově náročné úkoly na jiný stroj. zdarma Velikost volné fyzické paměti, paměť mého stroje je celkem 8G a zbývajících 3415M. Buff Linux/Unix systém se používá k ukládání obsahu, jakého obsahu v adresáři, oprávnění atd. cache, na tomto stroji pravděpodobně zabírám přes 300 milionů Cachecache se přímo používá k zapamatování si souborů, které otevíráme, k jejich bufferování, na svém vlastním počítači zabírám více než 300M (tady je chytrá chytrá věc Linuxu/Unixu – část volné fyzické paměti si vezmete na cache souborů a adresářů, aby se zlepšil výkon při vykonávání programu, když program využívá paměť, buffer/cached se rychle využije). ) Si Pokud je tato hodnota větší než 0, znamená to, že fyzická paměť není dostatečná nebo je paměť uniklá. Můj počítač má spoustu paměti a všechno je v pořádku. takže Velikost disku zapisovaného do virtuální paměti za sekundu, pokud je tato hodnota větší než 0, je stejná jako výše. bi Blokové vybaveníPočet bloků přijatých za sekundu, zde blokové zařízení odkazuje na všechny disky a další bloková zařízení v systému, výchozí velikost bloku je 1024 bajtů, nemám na stroji žádnou IO operaci, takže to bylo vždy 0, ale viděl jsem to na strojích, které zpracovávají velké množství dat (2-3T), může dosáhnout 140000/s a rychlost zápisu na disk je téměř 140M za sekundu BoPočet bloků odeslaných za sekundu blokovým zařízením, například při čtení souboru, bo je větší než 0. Bi a Bo jsou obecně blízko 0, jinak je IO příliš častý a je potřeba ho upravit. vPočet přerušení za sekundu CPU, včetně časových přerušení CSPočet přepnutí kontextu za sekundu, například když voláme systémovou funkci, musíme přepínat kontexty a přepínání vlákenKontext procesuNapříklad na webových serverech jako Apache a nginx obvykle provádíme výkonnostní testy s tisíci nebo dokonce desítkami tisíc souběžnosti, a proces výběru webového serveru lze snížit o vrchol procesu nebo vlákna, zátěžový test, dokud se cs nedostane na relativně malou hodnotu, počet procesů a vláken je vhodnější hodnotou. Systémová volání jsou také stejná, pokaždé, když je systémová funkce vyvolána, náš kód vstoupí do prostoru jádra, což vede k přepínání kontextu, což je velmi náročné na zdroje, a měli bychom se snažit vyhýbat častým voláním systémových funkcí. Příliš mnoho přepínání kontextu znamená, že většina CPU je zbytečně využita na přepínání kontextu, což vede k menšímu času CPU na vážnější věci a CPU není plně využito, což není vhodné. MyuživatelCPU časJednou jsem viděl, že v USA bylo blízko 100 a r běžící fronta dosahovala 80 na serveru, který šifroval a dešifroval velmi často (stroj byl stresově testován a výkon nebyl dobrý). syPokud je čas CPU systému příliš vysoký, znamená to, že systémové volání jsou dlouhá, například časté operace IO. id Čas nečinného CPU, obecně vzato, id + us + sy = 100, obecně si myslím, že id je nečinné využití CPU, us je využití uživatele, sy je využití systémového CPU. WTPočkejte na čas IO CPU.
|