Jistě víte, že základní parametr disků je jeho kapacita udávaná v "Bajtech" (MB, GB, TB), ale jsou zde další ne méně důležité parametry jakou jsou IOPS a propustnost, které výkon disků ovlivňují. Někdy i více než kapacita. Pojďme se na ně podívat, vysvětlit si je a ukázat jejich spojistost s Azure cloudem.
Dnešní článek bude více odborný s detailními technickými popisy, ale slibuji, že se ho budu snažit udělat stejně zábavný, jako ty předchozí. Vysvětlíme si principy, jejich použítí, čeho se máme v Azure ohledně IOPS a propustnosti vyvarovat a co by nás mohlo stát více, než je zdrávo.
Co je IOPS?
Metrika IOPS ukazuje, kolik operací čtení a/nebo zápisu může úložné zařízení provést za sekundu. Jedna operace se provádí na jednom pevném disku. Jednotky pevného disku (HDD) mají běžně 512B nebo 4KB bloky, zatímco moderní jednotky SSD (Solid State Drive) vystavují úložnou paměť ve stránkách spojených do bloků, které mohou dosáhnout velikosti 512KB.
Samotná metrika IOPS neříká nic o množství dat, které může disk zpracovat. Toto množství závisí jak na počtu IOPS, tak na velikosti bloku (největší množství bitů/bajtů, které lze přidělit jedné I/O operaci). Například při stejné hodnotě IOPS může jednotka s větší velikostí bloku zpracovat (číst nebo zapisovat) více dat.
IOPS se navíc může lišit v závislosti na tom, zda se k datům přistupuje postupně nebo náhodně. Zejména u pevných disků je IOPS obvykle vyšší pro sekvenční zápisy, protože hlava disku může snadno přistupovat k podmíněným blokům. Na druhou stranu náhodné čtení a zápis vyžaduje, aby se hlava disku přesunula, aby našla potřebné místo. Hodnota IOPS se také může lišit pro operace čtení a zápisu.
Pokud si vezmeme Managed Disk Premium SSD P30 (kapacita 1 TB), pak jeho rychlost cteni a zapisu je 5000 IOPS. Může dělat 5000 operací čtení či zápisu za sekundu paralelně.
Co je to throughput (propustnost)?
Propustnost úložiště (také nazývaná rychlost přenosu dat) měří množství dat přenesených do a z paměťového zařízení za sekundu. Normálně se propustnost měří v MB/s. Propustnost úzce souvisí s IOPS a velikostí bloku. Vzhledem ke stejnému IOPS může velikost bloku znamenat podstatný rozdíl, pokud jde o propustnost. Zejména menší velikosti bloků mají za následek nižší propustnost, protože každý I/O čte nebo zapisuje data do nedělitelných bloků.
Výkon datově náročných aplikací, včetně databází, datových skladů a systémů pro zpracování multimédií, je přímo ovlivněn počtem vstupně/výstupních operací, které může úložný systém provádět. Vybraná paměťová média by proto měla záviset na požadavcích na výkon těchto aplikací. Vysoké IOPS (např. 100 000 pro moderní SSD) mohou být dobrým indikátorem toho, že úložný systém bude splňovat požadavky.
Operátoři infrastruktury mohou také implementovat smíšený úložný systém, který kombinuje úložná média s různými parametry IOPS. Například aplikace, které používají úložiště pro redundanci, jako je ukládání „studených“ (nezapisovatelných) indexů, mohou používat HDD s průměrnými parametry IOPS. HDD s průměrným IOPS mohou být docela výkonné pro aplikace s velkým množstvím operací čtení. Naproti tomu aplikace, které provádějí vysokofrekvenční I/O s náhodným přístupem, budou efektivnější na SSD, které mají konzistentní výkon pro data s náhodným přístupem.
Měření propustnosti
Vzhledem k IOPS a velikosti bloku můžete vypočítat propustnost úložiště pro sekvenční zápisy takto:
Pokud je tedy například IOPS 3 000 a velikost bloku 512 KB, propustnost disku je:
3000 * 512 kB = 1 535 Mb
Propustnost se také může lišit v závislosti na velikosti dat aplikace. Operační systém a úložné zařízení obvykle zkombinují menší části dat, aby zaplnily celý blok, nebo je rozdělí, pokud jsou větší než velikost bloku. Měření propustnosti bude přesnější pro data aplikace, která odpovídají velikosti bloku.
Dle předchozího srovnání máme Managed Disk Premium SSD P30 (kapacita 1 TB), pak jeho propustnost je 200 MB/s. Může číst a zapisovat data rychlostí 200 MB za 1 sekundu.
Co z toho pro nás plyne vzhledem k Azure cloudu?
Je velmi důležité vědět paramentry naší sítě a virtuálního serveru. Podle toho můžeme volit disk, abychom nepřepláceli zbytečně disk, který má skvělý výkon, ale bohužel síť či virtuálka mají mnohem nižší propustnost a tudíž utrácíme za něco, co ani svého maxima nemůže dosáhnout. Uvedu Vám názorný příklad, aby té teorie nebylo až moc.
Vezmeme si obyčejnou virtuálku "Standard_D4s_v4", která má tyto parametry:
Zde už na první pohled vidíte, jaké jsou maximální hodnoty, které je virtuálka schopna efektivně spravovat. Pokud si tedy chcete zvolit k této virtuálce vhodný disk, tak maximum je Managed disk Premium SSD P30, kde je 5000 IOPS a 200 MB/s.
Virtuálka není na takový výkon stavěná. Je zapotřebí i počítat s tim, že pokud dáme do virtuálky dva disky, pak se samozřejmě IOPS i propustnost virtuálky dělí dvěma, takže na každý disk máme jen 4000 IOPS a 100 MB/s v maximálních hodnotách. Pokud budete potřebovat větší kapacitu, pak můžete připojit standardní HDD, které mají vysokou kapacitu, ale menší propustnost.
Jediná věc, kterou bych rád, aby jste si odnesli je, že je zapotřebí nejen si zakládat virtuálky podle toho, jaký mají výkon (CPU, RAM), ale taky podle propustnosti a IOPS, který dokáže virtuálka zvládnout. Zvlášť pro náročné databázové servery je někdy důležitější propustnost disků a serverů.
Závěr
IOPS a propustnost jsou docela užitečné pro hodnocení výkonu úložiště. Samostatně je však IOPS méně informativní, protože ukazuje pouze potenciální výkon, zatímco propustnost poskytuje konkrétní informace o šířce datového pásma. Při posuzování výkonu úložiště by zákazník a provozovatel infrastruktury měli vzít v úvahu další parametry, jako je latence sítě, I/O profil a velikost bloku. Chcete-li vyhodnotit výkon úložiště, nepoužívejte pouze „tovární“ metriku úložiště. Raději otestujte jeho skutečný výkon pomocí skutečného produkčního zatížení.