sql >> Databáze >  >> RDS >> Database

Použití Microsoft DiskSpd k testování úložného subsystému

Dříve jsem se zabýval základy metrik a testování úložného subsystému ve svém článku Analýza výkonu I/O subsystému pro SQL Server, včetně představení CrystalDiskMark 4.0. CrystalDiskMark byl nedávno přepsán tak, aby používal Microsoft DiskSpd pro své testování, což z něj dělá ještě cennější nástroj pro vaše počáteční testování úložného subsystému. DiskSpd poskytuje funkce potřebné ke generování široké škály vzorů požadavků na disk, což může být velmi užitečné při diagnostice a analýze problémů s výkonem I/O s mnohem větší flexibilitou než starší nástroje benchmarků, jako je SQLIO. Je extrémně užitečný pro testování syntetického úložného subsystému, když chcete vyšší úroveň kontroly, než je dostupná v CrystalDiskMark.

Nyní se ponoříme trochu hlouběji do toho, jak skutečně používat Microsoft DiskSpd k testování úložného subsystému bez použití CrystalDiskMark 4.0. Chcete-li to provést, musíte si stáhnout a rozbalit DiskSpd. Abych to usnadnil, vždy zkopíruji požadovaný spustitelný soubor diskspd.exe z příslušné spustitelné složky (amd64fre, armfre nebo x86fre) do krátké, jednoduché cesty jako C:\DiskSpd . Ve většině případů budete chtít 64bitovou verzi DiskSpd ze složky amd64fre.

Jakmile budete mít k dispozici spustitelný soubor diskspd.exe, budete muset otevřít příkazový řádek s právy správce (výběrem „Spustit jako správce“) a poté přejít do adresáře, do kterého jste zkopírovali soubor diskspd.exe.

Zde jsou některé parametry příkazového řádku, se kterými budete chtít začít:

Parametr Popis
-b Velikost bloku I/O, zadaná jako (K/M/G). Například –b8K znamená velikost bloku 8KB, což je relevantní pro SQL Server
-d Trvání testu v sekundách. Testy v délce 30–60 sekund jsou obvykle dostatečně dlouhé k získání platných výsledků
-o Vynikající I/O (myšleno hloubka fronty) na cíl, na pracovní vlákno
-t Pracovní vlákna na cíl testovacího souboru
-h Zakažte ukládání softwaru do mezipaměti na úrovni operačního systému a hardwarové ukládání do mezipaměti, což je dobrý nápad pro testování SQL Server
-r Náhodný nebo sekvenční příznak. Pokud se použije –r, provedou se náhodné testy, jinak se provedou sekvenční testy
-w Zapište procenta. Například –w25 znamená 25 % zápisů, 75 % čtení
-Z Velikost vyrovnávací paměti zdroje zápisu testu pracovní zátěže, zadaná jako (K/M/G). Používá se k poskytování náhodných dat pro zápisy, což je dobrý nápad pro testování SQL Server
-L Zachycení informací o latenci během testu, což je velmi dobrý nápad pro testování SQL Server
-c Vytvoří soubory pracovní zátěže zadané velikosti, zadané jako (K/M/G)

Tabulka 1:Základní parametry příkazového řádku pro DiskSpd

Budete také chtít zadat umístění testovacího souboru a název souboru pro výsledky na konci řádku. Zde je příklad příkazového řádku:

diskspd –b8K –d30 –o4 –t8 –h –r –w25 –L –Z1G –c20G T:\iotest.dat> DiskSpeedResults.txt

Tento příklad příkazového řádku spustí 30sekundový náhodný I/O test pomocí 20GB testovacího souboru umístěného na jednotce T:s poměrem zápisu 25 % a čtením 75 % s velikostí bloku 8 kB. Bude používat osm pracovních vláken, každé se čtyřmi nevyřízenými I/O a počáteční hodnotou entropie zápisu 1 GB. Uloží výsledky testu do textového souboru s názvem DiskSpeedResults.txt. Toto je docela dobrá sada parametrů pro zátěž SQL Server OLTP.

Obrázek 1:Příklad příkazového řádku pro DiskSpd

Spuštění testu začíná výchozí pětisekundovou zahřívací dobou (než se skutečně začnou měřit) a poté poběží skutečný test po specifikovanou dobu v sekundách s výchozí dobou ochlazení nula sekund. Po dokončení testu DiskSpd poskytne popis testu a podrobné výsledky. Ve výchozím nastavení to bude jednoduché textové shrnutí v textovém souboru s názvem souboru, který jste zadali, který bude ve stejném adresáři jako spustitelný soubor diskspd.

Zde jsou výsledky tohoto konkrétního testovacího běhu na mé pracovní stanici.

Obrázek 2:Příklad výsledků testu DiskSpd

První část výsledků vám poskytuje přesný příkazový řádek, který byl použit pro test, poté specifikuje všechny vstupní parametry, které byly použity pro běh testu (které zahrnují výchozí hodnoty, které nemusely být specifikovány ve skutečném příkazovém řádku ). Dále se zobrazí výsledky testu počínaje skutečným časem testu, počtem vláken a počtem logických procesorů. Sekce CPU ukazuje využití CPU pro každý logický procesor, včetně času uživatele a jádra, pro testovací interval.

Na řadu přichází zajímavější část výsledků testu. Získáte celkový počet bajtů, celkový počet I/O, MB/s, I/O za sekundu (IOPS) a vaši průměrnou latenci v milisekundách. Tyto výsledky jsou rozděleny pro každé vlákno (v našem případě čtyři) s oddělenými sekcemi ve výsledcích pro Total IO, Read IO a Write IO. Výsledky pro každé vlákno by měly být ve většině případů velmi podobné. Spíše než se zpočátku zaměřovat na absolutní hodnoty pro každé měření, rád porovnávám hodnoty, když spustím stejný test na různých logických jednotkách (po změně umístění testovacího souboru v příkazovém řádku), což vám umožní porovnat výkon pro každou logickou jednotku.

Poslední část výsledků testu je ještě zajímavější. Zobrazuje percentilovou analýzu rozložení výsledků testu latence počínaje minimální hodnotou v milisekundách až po maximální hodnotu v milisekundách, rozdělenou na čtení, zápis a celkovou latenci. „Devítky“ ve sloupci %-ile odkazují na počet devítek, kde 3-devítky znamenají 99,9, 4-devítky znamenají 99,99 atd. Důvod, proč jsou hodnoty pro vyšší percentilové řádky stejné, je ten, že tento test měl relativně nízký počet celkových operací. Pokud chcete přesně charakterizovat vyšší percentily, budete muset spustit test s delší dobou trvání, který generuje vyšší počet samostatných I/O operací.

To, co chcete v těchto výsledcích hledat, je bod, kde hodnoty dělají velký skok. Například v tomto testu můžeme vidět, že 99 % čtení mělo latenci 1,832 milisekundy nebo méně.

Obrázek 3:Distribuce výsledků latence

Jak můžete vidět, spuštění DiskSpd je ve skutečnosti docela jednoduché, jakmile pochopíte, co znamenají základní parametry a jak se používají. DiskSpd můžete spouštět nejen ze staromódního příkazového řádku, ale také jej můžete spouštět pomocí PowerShellu. DiskSpd vám také poskytuje mnohem podrobnější informace, než jaké získáte z SQLIO. Složitější částí používání DiskSpd je analýza a interpretace výsledků, čemuž se budu věnovat v budoucím článku.


  1. Jak zdravý je váš SQL Server? Proaktivní monitorování databáze je kritické

  2. Je možné spustit textový soubor z SQL dotazu?

  3. Oracle ekvivalent ROWLOCK, UPDLOCK, READPAST tipy dotazů

  4. Typy polí a použití v databázích Accessu 2019