Jednou z hlavních metrik pro vyhodnocení výkonu stávajícího nebo plánovaného úložného systému je IOPS (Vstup/ Výstup Operace Za Za druhé - počet operací vstupu / výstupu). Zjednodušeně řečeno, IOPS je počet bloků, které lze číst nebo zapisovat na médium nebo do systému souborů za jednotku času. Čím vyšší je toto číslo, tím vyšší je výkon tohoto diskového subsystému (upřímně řečeno, hodnota IOPS by měla být zvažována ve spojení s dalšími charakteristikami úložných systémů, jako je průměrná latence, propustnost atd.).
V tomto článku se podíváme na několik způsobů, jak měřit výkon úložného systému používaného v IOPS ve Windows (lokální pevný disk, SSD disk, síťová složka SMB, svazek CSV nebo LUN na úložišti v SAN).
Obsah:
- Čítače výkonu diskových subsystémů Windows
- Testování IOPS na Windows pomocí DiskSpd
- Jak získat výkon IOPS a diskových subsystémů pomocí PowerShell?
Čítače výkonu diskových subsystémů Windows
Aktuální stav diskového subsystému můžete vyhodnotit pomocí vestavěných čítačů výkonu systému Windows od Výkon Monitor. Shromažďování údajů o těchto čítačích:
- Běh
Perfmon
; - Vytvořte novou sadu sběračů dat (Sada kolektorů dat) Vyberte Vytvořit ručně;
- Vyberte možnost Vytvářejte protokoly dat -> Počítadlo výkonu;
- Nyní do vlastností nové sady kolekce dat přidejte následující čítače výkonu pro objekt Fyzický disk (můžete vybrat čítače pro konkrétní jednotku nebo pro všechny dostupné místní jednotky):
- Prům. Disk Sec./Transfer
- Prům. Délka fronty disku
- Prům. Bajty na disk / přenos
- Diskové bajty / s
- Přenosy disků / s
- Split IO / sec
- Můžete změnit další možnosti sběru dat. Ve výchozím nastavení jsou hodnoty čítače shromažďovány každých 15 sekund. Chcete-li zobrazit data o výkonu disku v reálném čase, přidejte určený čítač do Perfmon v části Nástroje sledování -> Sledování výkonu..
- Zbývá začít sbírat data čítače výkonu (Začněte) a počkejte na shromáždění dostatečných informací pro analýzu. Poté klikněte na RMB na sadě u vyberte Zastavte;
- Chcete-li zobrazit shromážděná data na disku, přejděte na Perfmon -> Reports -> User Defined -> Data_Disk_IO -> váš set. Ve výchozím nastavení jsou data na disku zobrazena jako grafy;
- Použití
Ctrl + G
přepněte do režimu Zpráva.
Jak interpretovat výsledky výkonu disku v aplikaci Perfmon? Pro rychlou analýzu výkonu diskového subsystému je třeba se podívat na hodnoty alespoň následujících 5 čítačů.
Při analýze dat čítače je žádoucí mít představu o konfiguraci fyzických disků (zda se používá RAID / Stripe / počet a typ disků, dostupnost mezipaměti atd.).- Disk sec/ Převod - čas potřebný k provedení jedné operace zápisu / čtení na paměťovém zařízení / disku - latence disku. Pokud je zpoždění delší než 25 ms (0,25) nebo vyšší, pak diskové pole nemá čas na provedení operací. U vysoce zatížených systémů by hodnota neměla překročit 10 ms (0,1);
- Přenosy disků / s - Počet operací čtení / zápisu za sekundu (IOPS). Toto je hlavní ukazatel intenzity přístupu na disky (přibližné hodnoty v IOPS pro různé typy disků jsou uvedeny na konci článku);
- Disk Byty/ S - průměrná výměna disku (čtení / zápis) za sekundu. Maximální hodnoty závisí na typu disku (150-250 MB / s - pro běžný disk a 500-10000 pro SSD);
- Split IO/ sec - indikátor fragmentace disku, když operační systém musí rozdělit jednu I / O operaci na několik operací. Může také naznačovat, že aplikace požaduje příliš velké bloky dat, které nemohou být přeneseny v jedné operaci;
- Prům. Disk Fronta Délka- délka fronty na disk (počet transakcí čekajících na zpracování). U jednoho disku nesmí délka fronty překročit 2. U pole RAID se 4 disky se za platnou hodnotu považuje délka fronty až 8..
Testování IOPS na Windows pomocí DiskSpd
Společnost Microsoft doporučuje použít tento nástroj ke generování zátěže na diskovém subsystému a měření jeho výkonu. Diskspd (https://aka.ms/diskspd). Toto je obslužný program konzoly, který může provádět I / O operace se zadaným cílem v několika vláknech. Tento nástroj často používám k měření výkonu úložiště v IOPS a získávání maximální rychlosti čtení / zápisu z tohoto serveru (můžete samozřejmě měřit také výkon ze strany úložiště, v tomto případě bude ke generování zátěže použit diskspd).
Tento nástroj nevyžaduje instalaci, stačí stáhnout a rozbalit archiv na lokální disk. Pro x64 bitové systémy použijte verzi diskspd.exe z adresáře amd64fre.
K testování disku používám následující příkaz:
diskspd.exe -c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E: \ diskpsdtmp.dat> DiskSpeedResults.txt
-c50G
- velikost souboru 50 GB (je lepší použít velkou velikost souboru, takže se nevejde do mezipaměti řadiče úložiště);-d30
0 - trvání testu v sekundách;-r
- náhodné čtení / zápis (pokud potřebujete testovat sekvenční přístup, použijte -s);-t8
- počet vláken;-w40
- poměr operací zápisu k operacím čtení 40% / 60%;-o32
- délka fronty;-b64K
- velikost bloku;-Sh
- Nepoužívejte ukládání do mezipaměti-L
- změřit latenci;E: \ diskpsdtmp.dat
- cesta k testovacímu souboru.
Po dokončení zátěžového testu lze získat průměrné hodnoty výkonu ze získaných tabulek..
Například v mém testu byly získány následující obecné údaje o výkonu (celkem IO):
- MiB / s - 241 (asi 252 Mb / s, není špatné)
- IOPS - 3866,49 (výborně!)
- Průměrné zpoždění - 66,206 ms (trochu vysoké!)
Jednotlivé hodnoty můžete získat pouze pro operace čtení (oddíl Přečtěte si IO ) nebo záznamy (oddíl Napište IO ).
Po vyzkoušení několika disků nebo LUN na úložišti pomocí diskspd je můžete porovnat nebo vybrat pole s požadovaným výkonem pro vaše úkoly.
Jak získat výkon IOPS a diskových subsystémů pomocí PowerShell?
Nedávno jsem narazil na skript PowerShell (autor Microsoft MVP, Mikael Nystrom), což je v podstatě doplněk k nástroji SQLIO.exe (sada testů pro výpočet výkonu úložiště souborů).
Poznámka:. V prosinci 2015 společnost Microsoft oznámila ukončení podpory obslužného programu a nahrazení nástroje SQLIO univerzálnějším nástrojem - Diskspd, odstraněním distribučních souborů SQLIO z vašeho webu. Proto budete muset hledat sqlio.exe sami, nebo si stáhnout z našeho webu (umístěné v archivu se skriptem).
Stáhněte si archiv obsahující 2 soubory: SQLIO.exe a Diskperformance.ps1 (disk-perf-iops.ZIP - 73Kb) a rozbalte archiv do libovolného adresáře.
Příklad spuštění skriptu PowerShell k určení IOPS:
.\ DiskPerformance.ps1 -TestFileName test.dat -TestFileSizeInGB 1 -TestFilepath C: \ temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView
Ve skriptu jsem použil následující argumenty:
- -Testfilename test.dat - název souboru vytvořeného obslužným programem FSUTIL;
- -TestFileSizeInGB 1 - strvelikost souboru pro testy. Platné možnosti jsou 1,5, 10, 50, 100, 100, 100, 000 GB. Velikost souboru musí být větší než velikost systémové mezipaměti. V opačném případě bude IOPS měřen pro data v mezipaměti, nikoli na disku;
- -Testfilepath C: \ Temp - označuje jednotku, pro kterou bude proveden výpočet výkonu, a adresář na jednotce, ve které bude vytvořen testovací soubor. Je možné určit cestu UNC k síťové složce;
- -Testmode Jdi-LargeIO - eExistují dvě možnosti měření zatížení., Jdi-SmallIO - měřeno IOPS, Jdi-LargeIO - měřená rychlost dat. Rozdíl mezi argumenty SmallIO a LargeIO, ve velikostech bloků při měření rychlosti 8 Kb a 512 Kb, a typu přístupu Náhodný nebo Sekvenční;
- -Rychlý režim Pravda - v režimu Fastmode každý test trvá 10 sekund, jinak 60 sekund;
- -RemoveTestFile Pravda - odstranit testovací soubor na konci testu;
- -Výstupní formát Ven-Gridview - je možný výstup výsledků měření do konzole PowerShell (Formát-Tabulka) nebo v samostatném okně grafické tabulky (Ven-Gridview);
V našem případě diskové pole (virtuální disk vmdk byl testován na úložišti VMFS umístěném na diskové polici HP MSA 2040 s přístupem přes SAN) vykázal průměrnou IOPS přibližně 15 000 a rychlosti přenosu dat (šířka pásma) asi 5 Gb / s.
Následující tabulka ukazuje přibližné hodnoty IOPS pro různé typy pohonů:
Typ | IOPS |
SSD (SLC) | 6000 |
SSD (MLC) | 1000 |
15 K RPM | 175-200 |
10 K RPM | 125-150 |
7,2 K RPM | 50-75 |
RAID5 ze 6 jednotek s 10 000 ot / min | 900 |
Níže uvádíme některá doporučení pro výkon disku v IOPS pro běžné služby:
- Microsoft Výměna 2010 - s 5 000 uživateli, z nichž každý obdrží 75 a odesílá 30 dopisů denně, bude vyžadovat nejméně 3 750 IOPS
- Microsoft SQL 2008 server - s 3500 transakcemi SQL za sekundu (TPS) - 28 000 IOPS
- Normální aplikační server Windows pro 10-100 uživatelů - 10-40 IOPS