Realita ohledně hardwaru, limity zdrojů a hloubkové sledování výkonu
Když se NAS QNAP zdá pomalý, hledání příčiny začíná u toho, co jeho hardware dokáže. Pak se podívá, na co NAS své prostředky spotřebovává, a teprve potom na hlubší fronty: procesy uvízlé na I/O a virtuální stroje, které soupeří o procesor.
- Očekáváník čemu je tento hardware určen
- Základní úroveň (Baseline)zastavte zbytečnosti, sledujte RAM a SWAP
- Stavy Dprocesy uvízlé na I/O
- vCPUvlákna, nadměrné přidělení (oversubscription), steal (ukradený čas)
- GrafyBlackBox a Pulse, jak je správně číst
01Očekávání od hardwaru a realita
Servery QNAP jsou sestaveny ze součástek, které odpovídají jejich ceně. Společnost QNAP sice stále vydává aktualizace firmwaru i pro zařízení starší než deset let, to ale neznamená, že starý nebo základní model NAS dokáže bez kompromisů spustit celou škálu dnešních aplikací. Software je s postupným vývojem stále náročnější; hardware však zůstává stejný.
Levný NAS je navržen pro plynulé poskytování souborů. Očekávat, že bez potíží spustí virtuální stroje nebo těžké databáze, znamená nepochopit, k čemu zařízení je. Zjistěte si, co váš procesor a paměť skutečně dokážou, a za volbu hardwaru převezměte odpovědnost. Hlavním úkolem NASu je práce se soubory; vše ostatní je pouze doplňková funkce, která běží v rámci těch zdrojů, jež zbudou.
02Větev 1: základní úroveň (baseline) pomocí izolace služeb
Jakmile se NAS zpomalí, a to především tehdy, když mu dojde paměť a začne využívat odkládací prostor SWAP (což razantně zpomalí každou operaci), prvním diagnostickým krokem je izolovat jednotlivé služby.
- Přihlaste se do systému QTS nebo QuTS hero.
- Otevřete App Center a jednu po druhé zastavte aplikace a služby, které nejsou nezbytné. Workbench za vás aplikace nezastaví.
- Sledujte systém pomocí aplikace Sledování prostředků (Resource Monitor) v QTS, nebo v nástroji Pulse ve Workbench (plocha Utilities, nabídka Start → Monitoring → Pulse; jen pro administrátory). Jeho řídicí panel (cockpit) se aktualizuje každé dvě sekundy: zobrazuje vytížení procesoru s jedním sloupcem pro každý logický procesor (CPU), využitou RAM oproti celkové kapacitě s vyrovnávací pamětí stránek (page cache) ve vlastním pruhu, sloupec pro SWAP, pokud jím NAS disponuje, hodnotu load za 1 minutu a frontu čekajících procesů (run queue). Sledujte, jak s vypínáním služeb klesá zátěž procesoru a využití SWAPu.
- Najděte výchozí úroveň (baseline): pokračujte v zastavování služeb, dokud se plně neobnoví hlavní funkce NASu, tedy plynulé poskytování souborů.
To je výchozí úroveň (baseline) vašeho hardwaru. Od tohoto bodu začněte spouštět ostatní aplikace – jednu po druhé a striktně v rámci zdrojů, které hardwaru ještě zbývají.
03Větev 2: Stavy D a skrytá úzká hrdla
Někdy není problémem přetížený procesor nebo nedostatek RAM. Systém se může zaseknout, i když má procesor k plnému vytížení daleko, a to v případě, kdy procesy uvíznou ve stavu nepřerušitelného spánku (uninterruptible sleep), označovaném jako stav D. Slovy samotného Workbenche: proces ve stavu D uvízl při čekání na I/O operaci jádra (disk, síťový souborový systém, zamrzlý ovladač) a nelze jej ani vynuceně ukončit (killed), dokud se tato I/O operace nedokončí. Mnoho procesů ve stavu D znamená, že se řadí do fronty, obvykle kvůli pomalým diskovým I/O operacím, a celé zařízení následně zamrzne.
Takové fronty nejvíc škodí tam, kde NAS hostuje virtuální stroje (Virtualization Station, KVM). Špatná alokace zdrojů se v tomto případě projeví jako zahozené síťové pakety a dlouhé I/O prodlevy (zpoždění).
- Aplikace Pulse zobrazí varování Processes in D-state (I/O), jakmile se ve stavu D ocitne alespoň jeden proces, a pokud jsou více než dva, označí situaci za kritickou. Na záložce Processes pak filtr D + Z zobrazí pouze tyto uvízlé (D) a zombie (Z) procesy společně s jejich rodičovskými procesy.
- Nástroj BlackBox zaznamenává stav NASu každých 20 sekund od okamžiku spuštění balíčku; není potřeba nic zapínat. Zaznamenává vytížení CPU, iowait a takt každého jádra, zátěž (load), frontu běžících procesů (run queue) a blokované procesy (Blocked (D)); využitou a dostupnou paměť, mezipaměť stránek (page cache), swap a ukončení procesů z důvodu nedostatku paměti (OOM kills); pro každé síťové rozhraní pak provoz, zahozené pakety a opakované přenosy TCP (retransmits); pro každý disk čekací dobu (await), hloubku fronty (queue depth) a celkové využití (utilisation); teploty a otáčky ventilátorů; a pro každý virtuální stroj (VM) jeho CPU, vCPU, paměť a diskové I/O. Každý 20sekundový vzorek uchovává po dobu jednoho dne, poté data shrnuje po minutách pro týdenní historii, po pěti minutách pro měsíční historii a po hodinách pro záznamy za celý rok.
- Dva různé počty stavů D. Hodnota Blocked (D) v nástroji BlackBox udává počet blokovaných úloh nahlášený samotným jádrem (kernel); naproti tomu Pulse počítá procesy, které přímo vidí ve stavu D. Tyto dvě hodnoty se nemusí shodovat.
- iowait, nikoliv PSI. Jádra (kernels) od společnosti QNAP se kompilují bez podpory PSI (Pressure Stall Information), proto Workbench měří I/O zpoždění pomocí metriky iowait.
04Alokace CPU: pCPU, lCPU a vCPU
Než přidělíte virtuálnímu stroji (VM) jeho zdroje, seznamte se s topologií procesoru:
- pCPU (fyzické CPU): skutečná fyzická jádra procesoru uvnitř NAS.
- lCPU (logické CPU): jádra, která vidí operační systém, včetně technologie Hyper-Threading. Hyper-Threading totiž výkon nezdvojnásobuje; hrubým odhadem přidává zhruba 30 % propustnosti.
- vCPU (virtuální CPU): virtuální jádra přidělená virtuálním strojům (VM).
Pulse počítá logická CPU: pokud na šestijádrovém procesoru Xeon W-1250, který disponuje dvanácti vlákny, ukazuje hodnotu 12 cores, jedná se ve skutečnosti o vlákna.
Past nadměrného přidělení (oversubscription). Přidělení 128 vCPU virtuálním strojům na 32jádrovém procesoru předpokládá, že nebudou nikdy všechny vytíženy současně. Jakmile se tak stane, hypervizor nedokáže plánovat vCPU dostatečně rychle a virtuální stroje se zaseknou při čekání na procesorový čas, což se v hostovaném systému projevuje jako „steal time“ (ukradený čas). Pulse o tom podává zprávu z pohledu hostitele:
- vCPU over-subscription (informace) upozorňuje na to, když běžící VM mají celkově více vCPU, než kolik má NAS logických CPU;
- VMs contending for CPU (varování) naskočí, pokud je k tomu všemu hostitel navíc vytížen na více než 75 %, nebo je jeho fronta procesů (run queue) delší než počet jeho vláken. Jeho poznámka na tomto NASu: Over-subscribed (17 vCPUs / 12 cores) AND the host is busy (84%, queue 11) — your VMs are likely contending for physical cores NOW. This is CPU theft, host-side.
- Steal time (ukradený čas) se měří uvnitř hostovaného systému (guest). Na NAS je záměrně vždy nulový; samotná poznámka v aplikaci Workbench upozorňuje, že z pohledu hostitele nelze vidět „steal time“ hostovaného systému. Míru soupeření (contention) o zdroje na NAS posuzujte porovnáním počtu vCPU vůči skutečným vláknům, procenta vytížení (busy) a délky fronty procesů (run queue). Skutečnou hodnotu „steal time“ čtěte přímo uvnitř VM (sloupec
stz výstupu příkazutopnebovmstatu hostovaného Linuxu).
05Sledování virtuálních počítačů
Workbench nemá žádného agenta, kterého by bylo třeba instalovat do VM. Měří NAS, na kterém běží, a tím i virtuální stroje, které NAS hostuje:
- Otevřete Pulse a přejděte na záložku VM: uvidíte každý běžící VM společně s přidělenými vCPU, využitím procesoru (CPU%), pamětí, RSS, stavem a ID příslušného procesu, s úvodním nadpisem Hosting 4 VM(s), 17 vCPUs.
- Otevřete BlackBox (v nabídce Start → Monitoring), přepněte na Heat map (heatmapa) a zapněte pruh (lane) Virtual machines: uvidíte vytížení CPU každého VM během dne, hned vedle teplot a čekací doby (await) disků. Grafy uchovávají také informace o přiřazených vCPU, využití paměti a diskových I/O operacích u každého stroje společně se záznamy o jejich spuštění a zastavení.
- Pro zjištění dostupnosti daného VM v síti si jeho adresu přidejte v aplikaci BlackBox v části Settings (Nastavení) do sekce Monitored hosts: nástroj BlackBox poté začne zaznamenávat dobu odezvy (round trip) a případné ztráty paketů (packet loss).
- Uvnitř VM sledujte steal time nástroji hostovaného systému (guest).
Okno Virtual Machines · LOCAL (Local NAS → Virtual Machines) zobrazuje konfiguraci každého VM načtenou z Virtualization Station: jeho vCPU, uspořádání (topologii), přidělení fyzických jader (CPU set), model CPU, disky a síťové karty. Otevření okna spustí vlastní diagnostické výpisy (dumps) QNAP do mezipaměti Workbench; žádné nastavení se tím nemění.
06Čtení grafů: kritické stavy
- Vysoký stav D a zpoždění u I/O (I/O delay). Procesy musí čekat na disky. Týdenní hlášení nástroje BlackBox tuto situaci popisuje jako Processes waiting on storage (iowait na 95. percentilu dosahující hodnoty 20 % a vyšší je považováno za varování, při 40 % a více už za kritický stav) a uvede nejvytíženější disk; Slow array member zachytí disk, jehož hodnota await (čekací doba) dosahuje dvojnásobku oproti ostatním diskům v poli a je na úrovni alespoň 50 ms (od 200 ms se považuje za kritickou). Varování Disk with no headroom označí disk, který je dvě hodiny vytížený (busy) na 90 % a víc. Náprava podle rady autora: přesuňte VM na svazek SSD, prověřte zdraví disků (viz návod k výkonu) a zkontrolujte, že RAID nezahlcuje žádný jiný proces.
- Dlouhá fronta na CPU (High CPU queueing). Procesor NASu je nadměrně přidělený (oversubscribed): Pulse hlásí VMs contending for CPU a varování týdenního reportu Virtual machine hogging the host označí VM, který využívá 150 % jednoho jádra nebo víc (300 % je kritické). Dejte virtuálním strojům méně vCPU: začněte s jedním nebo dvěma na VM a další přidávejte, jen když je hostovaný systém (guest) potřebuje.
- Omezování výkonu kvůli přehřívání (Thermal throttling). Vysoká teplota CPU, po ní nižší takt a delší prodlevy znamenají, že se procesor přehřívá. Týdenní report to nazývá CPU thermal throttling: jádro běží na 60 % svého obvyklého taktu nebo méně, zatímco CPU je vytížené alespoň na 60 %. Na heatmapě je 65 °C jantarová a 80 °C červená. Rada samotného Workbench: vyčistěte prach z chladiče, ventilátorů a sání vzduchu, zkontrolujte, že se ventilátory točí, a zlepšete proudění vzduchu nebo snižte teplotu v místnosti; pomáhá i vyšší rychlost ventilátoru v QTS.
07Osvědčené postupy pro KVM: model CPU
- Host / passthrough (doporučeno): předá virtuálnímu stroji samotný procesor NASu se všemi instrukčními sadami, které má (například AVX). Na jednom NASu dává nejlepší výkon a nejmenší režii (overhead).
- Emulovaný model (obecný procesor Intel nebo AMD): skryje procesor hostitele. Hodí se v clusteru, kde se běžící VM přesouvají mezi fyzicky odlišnými hostiteli; na jednom NASu jen ubírá výkon.
Okno Virtual Machines · LOCAL ukazuje model CPU přidělený každému VM (například Westmere) a jeho topologii; Workbench tuto volbu nehodnotí.
08Základní znalosti: nadměrné přidělení zdrojů (resource overcommit)
Jak neutopit výkon VM na hranici toho, co NAS zvládne. Jako první se vyplatí spočítat poměr vCPU k fyzickým jádrům (pCPU):
| Zdroj (Resource) | Co získáte (Gain) | Riziko (Risk) | Doporučení (Advice) |
|---|---|---|---|
| CPU (vCPU : pCPU) | víc VM, levná rezerva (headroom) pro krátké špičky (bursts) | při nasycení (saturation) zpomalí steal a fronty všechny VM | v produkci 2:1–4:1, kritické VM nejvýš 2:1; hostitel pod 80 % |
| RAM (ballooning, Dynamic Memory) | paměť se přesouvá za běhu, vhodné pro nečinné VM (idle) | swapování hostitele znamená drastický pokles výkonu | nikdy nenechte hostitele swapovat aktivní stránky; kritickým VM paměť rezervujte |
| Úložiště (typ thin) | úspora místa, disky vzniknou okamžitě | plný datastore okamžitě zastaví všechny VM | upozornění při 75–85 %; uvolňujte místo (UNMAP); kritická data raději thick |
Obecné pravidlo. Overcommit je bezpečný při lehké, nerovnoměrné zátěži a aktivním monitorování a nebezpečný ve špičkách bez rezervy. Držte si rezervu.
Užitečné tipy
- Začněte s 1 vCPU na VM a další přidávejte, až když to zátěž vyžaduje. Více vCPU, než je potřeba, neznamená vyšší rychlost, ale jen větší režii plánovače (scheduler).
- Počítejte fyzická jádra, nikoliv vlákna. Nedávejte všem VM dohromady více vCPU, než kolik má hostitel jader.
- Udržujte CPU hostitele pod 80 %. Nad 90 % virtuální stroje soupeří o cykly a steal uvnitř hostovaných systémů roste.
- Přečtěte si výstup z příkazu top v hostovaném systému: %wa znamená čekání na I/O (úzké hrdlo u disku), %st je steal (příliš vysoký overcommit), %id je volná kapacita.
- Vysoké %wa? Rychlejší úložiště nebo SSD. Vysoké %st? Méně vCPU nebo méně VM.
- VirtIO pro disk a síť, mnohem rychlejší než emulace. PCIe nebo GPU passthrough (přímé propuštění) používejte jen tehdy, když je to opravdu nutné: zařízení pak patří výhradně jedinému VM.
Snímek (snapshot) VM není záloha
Snímek (snapshot) zaznamenává pouze rozdíl oproti výchozímu bodu (změny na discích a při uloženém stavu také paměť). Poškození základu nebo řetězce snímků zneplatní i samotné snímky. Pro skutečnou ochranu zálohujte celé obrazy VM: exportem, přes HBS nebo na samostatné médium.