GNU/Linux >> Znalost Linux >  >> Linux

Úvod do sledování a ladění výkonu Linuxu

Toto je 1. článek v naší nové sérii o monitorování a ladění výkonu Linuxu.

Správci systému Linux by měli být zběhlí v monitorování a ladění výkonu Linuxu. Tento článek poskytuje přehled na vysoké úrovni o tom, jak bychom měli přistupovat ke sledování a ladění výkonu v Linuxu a k různým subsystémům (a metrikám výkonu), které je třeba monitorovat.

Chcete-li identifikovat úzká místa systému a přijít s řešeními, jak je opravit, měli byste rozumět tomu, jak různé součásti Linuxu fungují. Například, jak jádro upřednostňuje jeden linuxový proces před ostatními pomocí pěkných hodnot, jak se řeší I/O přerušení, jak funguje správa paměti, jak funguje linuxový souborový systém, jak je v Linuxu implementována síťová vrstva atd. ,

Vezměte prosím na vědomí, že porozumět tomu, jak různé komponenty (nebo podsystémy) fungují, není totéž jako vědět, jaký příkaz spustit, abyste získali určitý výstup. Můžete například vědět, že příkaz „uptime“ nebo „top“ poskytuje „průměrné zatížení“. Pokud však nevíte, co to znamená a jak funguje subsystém CPU (nebo proces), možná tomu nebudete schopni správně porozumět. Pochopení subsystémů je neustálý úkol, kterému se budete neustále učit.

Na velmi vysoké úrovni následují čtyři subsystémy, které je třeba monitorovat.

  • CPU
  • Paměť
  • I/O
  • Síť

1. CPU

Měli byste rozumět čtyřem kritickým metrikám výkonu pro CPU – přepínání kontextu, fronta běhu, využití procesoru a průměrná zátěž.

Přepínání kontextu

  • Když CPU přepne z jednoho procesu (nebo vlákna) na jiný, nazývá se to jako kontextové přepínání.
  • Když dojde k přepnutí procesu, jádro uloží aktuální stav CPU (procesu nebo vlákna) do paměti.
  • Jádro také načte dříve uložený stav (procesu nebo vlákna) z paměti a vloží jej do CPU.
  • Přepínání kontextu je velmi důležité pro multitasking CPU.
  • Vyšší úroveň přepínání kontextu však může způsobit problémy s výkonem.

Spustit frontu

  • Fronta běhu označuje celkový počet aktivních procesů v aktuální frontě pro CPU.
  • Když je procesor připraven ke spuštění procesu, vybere si jej z fronty běhu na základě priority procesu.
  • Upozorňujeme, že procesy, které jsou ve stavu spánku nebo ve stavu čekání na vstup/výstup, nejsou ve frontě běhu.
  • Větší počet procesů ve frontě běhu tedy může způsobit problémy s výkonem.

Využití procesoru

  • To ukazuje, jak velká část procesoru je aktuálně využívána.
  • Toto je poměrně přímočaré a využití CPU můžete zobrazit z příkazu top.
  • 100% využití procesoru znamená, že systém je plně vytížen.
  • Vyšší % stáří využití procesoru tedy způsobí problémy s výkonem.

Průměrné zatížení

  • Toto označuje průměrné zatížení procesoru za určité časové období.
  • V systému Linux se průměrná zátěž zobrazuje za poslední 1 minutu, 5 minut a 15 minut. To je užitečné, abyste viděli, zda se celkové zatížení systému zvyšuje nebo snižuje.
  • Například průměrná zátěž „0,75 1,70 2,10“ znamená, že zátěž systému klesá. 0,75 je průměr zatížení za poslední 1 minutu. 1,70 je průměr zatížení za posledních 5 minut. 2.10 je průměrná zátěž za posledních 15 minut.
  • Upozorňujeme, že tento průměr zatížení se vypočítá jako kombinace celkového počtu procesů ve frontě a celkového počtu procesů ve stavu nepřerušitelné úlohy.

2. Síť

  • Dobré porozumění pojmům TCP/IP je užitečné při analýze jakýchkoli problémů se sítí. Více o tom probereme v budoucích článcích.
  • U síťových rozhraní byste měli sledovat celkový počet paketů (a bajtů) přijatých/odeslaných přes rozhraní, počet zahozených paketů atd.

3. I/O

  • I/O wait je doba, po kterou CPU čeká na I/O. Pokud ve vašem systému vidíte konzistentně vysoké I/O čekání, znamená to problém v diskovém subsystému.
  • Měli byste také sledovat čtení/sekundu a zápis/sekundu. To se měří v blocích. tj. počet bloků čtení/zápisu za sekundu. Označují se také jako bi a bo (zablokovat a zablokovat).
  • tps označuje celkový počet transakcí za sekundu, což je součet rtps (transakce čtení za sekundu) a wtps (transakce zápisu za sekundu).

4. Paměť

  • Jak víte, RAM je vaše fyzická paměť. Pokud máte v systému nainstalovanou 4GB RAM, máte 4GB fyzické paměti.
  • Virtuální paměť =odkládací místo na disku + fyzická paměť. Virtuální paměť obsahuje uživatelský prostor i prostor jádra.
  • Použití 32bitového nebo 64bitového systému znamená velký rozdíl při určování, kolik paměti může proces využít.
  • Na 32bitovém systému může proces přistupovat pouze k maximálně 4 GB virtuální paměti. Na 64bitovém systému takové omezení neexistuje.
  • Nepoužitá RAM bude jádrem použita jako mezipaměť systému souborů.
  • Systém Linux se vymění, když bude potřebovat více paměti. tj. když potřebuje více paměti než fyzická paměť. Když swapuje, zapisuje nejméně používané paměťové stránky z fyzické paměti do odkládacího prostoru na disku.
  • Mnoho odkládání může způsobit problémy s výkonem, protože disk je mnohem pomalejší než fyzická paměť a výměna stránek paměti z RAM na disk nějakou dobu trvá.

Všechny výše uvedené 4 podsystémy jsou vzájemně propojené. To, že vidíte vysoký počet čtení/sekundu, zápisy/sekundu nebo čekání na vstup/výstup, neznamená, že problém je v subsystému I/O. Záleží také na tom, co aplikace dělá. Ve většině případů může být problém s výkonem způsoben aplikací spuštěnou v systému Linux.

Pamatujte na pravidlo 80/20 – 80 % zlepšení výkonu pochází z vyladění aplikace a zbývajících 20 % pochází z vyladění komponent infrastruktury.

Pro sledování výkonu systému Linux jsou k dispozici různé nástroje. Například:top, free, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, iozone atd. O těchto nástrojích a jejich použití budeme diskutovat více v nadcházejících článcích této série.

Následuje 4krokový přístup k identifikaci a řešení problému s výkonem.

  • Krok 1 – Pochopte (a zopakujte) problém: Polovina problému je vyřešena, když jasně pochopíte, v čem je problém. Než se pokusíte vyřešit problém s výkonem, nejprve pracujte na jasné definici problému. Čím více času věnujete pochopení a definování problému, získáte dostatek podrobností, abyste hledali odpovědi na správném místě. Pokud je to možné, pokuste se problém reprodukovat nebo alespoň simulovat situaci, o které si myslíte, že se problému velmi podobá. To vám později pomůže ověřit řešení, které jste k vyřešení problému s výkonem přišli.
  • Krok 2 – Monitorování a sběr dat: Po jasném definování problému sledujte systém a snažte se shromáždit co nejvíce dat o různých subsystémech. Na základě těchto údajů vytvořte seznam potenciálních problémů.
  • Krok 3 – Odstranění a omezení problémů: Až budete mít seznam potenciálních problémů, ponořte se do každého z nich a odstraňte všechny, které nejsou. Zúžte jej dále, abyste zjistili, zda se jedná o problém s aplikací nebo s infrastrukturou. Ponořte se dále a zúžte jej na konkrétní součást. Pokud se například jedná o problém s infrastrukturou, zužte jej a identifikujte subsystém, který problém způsobuje. Pokud se jedná o problém I/O subsystému, zužte jej na konkrétní oddíl, skupinu raid, LUN nebo disk. V zásadě pokračujte v procházení, dokud nepoložíte prst na hlavní příčinu problému.
  • Krok 4 – Změna po jedné: Jakmile se zúžíte na malý seznam potenciálních problémů, nezkoušejte provádět více změn najednou. Pokud provedete více změn, nebudete vědět, která opravila původní problém. Více změn najednou může také způsobit nové problémy, po kterých se budete honit místo toho, abyste opravovali původní problém. Provádějte tedy jednu změnu po druhé a zjistěte, zda to vyřeší původní problém.

V nadcházejících článcích seriálu o výkonu probereme více o tom, jak monitorovat a řešit problémy s výkonem na CPU, paměti, I/O a síťovém subsystému pomocí různých nástrojů pro monitorování výkonu Linuxu.


Linux
  1. MySQL – ladění a optimalizace výkonu

  2. Konfigurace a ladění OpenVAS v Kali Linuxu

  3. Pochopení průměrného zatížení OS a spuštění fronty/blokované fronty z hlediska využití CPU v Linuxu

  1. Úvod do monitorování uživatelských účtů v Linuxu

  2. 24 Příklady iostat, vmstat a mpstat pro monitorování výkonu Linuxu

  3. Top 25 nejlepších nástrojů pro monitorování a ladění výkonu Linuxu

  1. Jak vyvažuji funkce a výkon v mém linuxovém terminálu

  2. Monitorování hostitelů Linux a Windows pomocí Glances

  3. Úvod do Linuxových přerušení a CPU SMP Affinity