Jak jsme uvedli v našem úvodním článku monitorování výkonu Linuxu, měření výkonu IO subsystému je velmi důležité.
Pokud si někdo stěžuje, že databáze (nebo jakákoli aplikace) běžící na jednom serveru (s určitým souborovým systémem nebo konfigurací RAID) běží rychleji než stejná databáze nebo aplikace běžící na jiném serveru, možná budete chtít zajistit, aby výkon na úroveň disku je stejná na obou serverech. Pro tuto situaci můžete použít iozone.
Pokud provozujete databázi (nebo jakoukoli aplikaci) v určitém prostředí SAN nebo NAS a chtěli byste ji migrovat do jiného prostředí SAN nebo NAS, měli byste provést benchmaking souborového systému na obou systémech a porovnejte jej. Pro tuto situaci můžete použít iozon.
Pokud víte, jak používat iozone, můžete jej do značné míry použít pro různé účely benchmarkingu souborových systémů.
Stáhněte a nainstalujte IOZone
Iozone je nástroj pro testování systému souborů s otevřeným zdrojovým kódem.
Pro stažení a instalaci iozone do vašeho systému postupujte podle následujících kroků.
wget http://www.iozone.org/src/current/iozone3_394.tar tar xvf iozone3_394.tar cd iozone3_394/src/current make make linux
Co nástroj IOzone měří?
IOzone provádí následujících 13 typů testů. Pokud provádíte iozone test na databázovém serveru, můžete se zaměřit na 1. 6 testů, protože přímo ovlivňují výkon databáze.
- Čtení – označuje výkon čtení souboru, který již existuje v souborovém systému.
- Zápis – Označuje výkon zápisu nového souboru do souborového systému.
- Znovu přečíst – po přečtení souboru to indikuje výkon při opětovném čtení souboru.
- Re-write – Označuje výkon zápisu do existujícího souboru.
- Náhodné čtení – Označuje výkon čtení souboru čtením náhodných informací ze souboru. tj. nejedná se o sekvenční čtení.
- Náhodný zápis – Označuje výkon zápisu do souboru v různých náhodných umístěních. tj. nejedná se o sekvenční zápis.
- Čtení zpět
- Přepsat záznam
- Čtení s krokem
- Fread
- Fwrite
- Freread
- Frewrite
10 příkladů IOZone
1. Spusťte všechny testy IOZone s použitím výchozích hodnot
-volba znamená automatický režim. Tím se vytvoří dočasné testovací soubory o velikosti 64 kB až 512 MB pro testování výkonu. Tento režim také používá 4k až 16 milionů záznamů pro testování čtení a zápisu (více o tom později).
-a také provede všech 13 typů testů.
$ ./iozone -a
První část výstupu iozone obsahuje informace v záhlaví, které zobrazují informace o nástroji iozone a všechny možnosti iozone, které se používají k vytvoření této zprávy, jak je uvedeno níže.
Iozone: Performance Test of File I/O Version $Revision: 3.394 $ Compiled for 32 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Run began: Sat Apr 23 12:25:34 2011 Auto Mode Command line used: ./iozone -a Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size.
Druhá část výstupu obsahuje výstupní hodnoty (v za sekundu) různých testů.
- 1. sloupec KB:Označuje velikost souboru, který byl použit pro testování.
- 2. sloupec reclen:Označuje délku záznamu, který byl použit pro testování.
- 3. sloupec až po poslední sloupec:Označuje různé testy, které se provádějí, a jejich výstupní hodnoty za sekundu.
random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 495678 152376 1824993 2065601 2204215 875739 582008 971435 667351 383106 363588 566583 889465 64 8 507650 528611 1051124 1563289 2071399 1084570 1332702 1143842 2138827 1066172 1141145 1303442 2004783 64 16 587283 1526887 2560897 2778775 2366545 1122734 1254016 593214 1776132 463919 1783085 3214531 3057782 64 32 552203 402223 1121909 1388380 1162129 415722 666360 1163351 1637488 1876728 1685359 673798 2466145 64 64 551580 1122912 2895401 4911206 2782966 1734491 1825933 1206983 2901728 1207235 1781889 2133506 2780559 128 4 587259 1525366 1801559 3366950 1600898 1391307 1348096 547193 666360 458907 1486461 1831301 1998737 128 8 292218 1175381 1966197 3451829 2165599 1601619 1232122 1291619 3273329 1827104 1162858 1663987 1937151 128 16 650008 510099 4120180 4003449 2508627 1727493 1560181 1307583 2203579 1229980 603804 1911004 2669183 128 32 703200 1802599 2842966 2974289 2777020 1331977 3279734 1347551 1152291 684197 722704 907518 2466350 128 64 848280 1294308 2288112 1377038 1345725 659686 1997031 1439349 2903100 1267322 1968355 2560063 1506623 128 128 902120 551579 1305206 4727881 3046261 1405509 1802090 1085124 3649539 2066688 1423514 2609286 3039423 ...
2. Uložte výstup do tabulky pomocí iozone -b
Chcete-li uložit výstup iozone do tabulky, použijte volbu -b, jak je uvedeno níže. -b znamená binární a dává pokyn iozone, aby zapsal výstup testu v binárním formátu do tabulky.
$ ./iozone -a -b output.xls
Poznámka:Volbu -b lze použít s kterýmkoli z níže uvedených příkladů.
Z dat uložených v tabulkovém procesoru můžete vytvořit pěkné grafy pomocí funkce grafů tabulkového procesoru. Následuje ukázkový graf, který byl vytvořen z výstupu iozonu.
obr :IOZone graf
3. Spusťte pouze určitý typ testu pomocí iozone -i
Pokud máte zájem spustit pouze určitý typ testu, použijte volbu -i.
Syntaxe:
iozone -i [test-type]
Typ testu je číselná hodnota. Následují různé dostupné typy testů a jejich číselná hodnota.
- 0=zápis/přepis
- 1=přečíst/znovu přečíst
- 2=náhodné čtení/zápis
- 3=Čtení zpět
- 4=Přepsat-záznam
- 5=čtení krokem
- 6=fwrite/re-fwrite
- 7=oblézt/znovu se rozptýlit,
- 8=náhodný mix
- 9=pwrite/Re-pwrite
- 10=pread/Re-read
- 11=pwritev/Re-pwritev
- 12=preadv/Re-preadv
Následující příklad spustí pouze testy zápisu (tj. zápis i přepis). Jak vidíte z výstupu, ostatní sloupce jsou prázdné.
$ ./iozone -a -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 353666 680969 64 8 477269 744768 64 16 429574 326442 64 32 557029 942148 64 64 680844 633214 128 4 187138 524591
Kombinovat více typů iozonových testů
Můžete také kombinovat více typů testů zadáním více -i v příkazovém řádku.
Například následující příklad otestuje typy testu čtení i zápisu.
$ ./iozone -a -i 0 -i 1 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 372112 407456 1520085 889086 64 8 385574 743960 3364024 2553333 64 16 496011 397459 3748273 1330586 64 32 499600 876631 2459558 4270078
4. Zadejte velikost souboru pomocí iozone -s
Ve výchozím nastavení iozone automaticky vytvoří dočasné soubory o velikosti od 64k do 512M, aby bylo možné provádět různá testování.
1. sloupec ve výstupu iozone (s záhlavím sloupce KB) udává velikost souboru. Jak jste viděli z předchozího výstupu, začíná souborem o velikosti 64 kB a bude se neustále zvětšovat až na 512 MB (pokaždé zdvojnásobením velikosti souboru).
Místo spuštění testu pro všechny velikosti souborů můžete velikost souboru určit pomocí volby -s.
Následující příklad provede test zápisu pouze pro soubor o velikosti 1 MB (tj. 1024 kB).
$ ./iozone -a -i 0 -s 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024 4 469710 785882 1024 8 593621 1055581 1024 16 745286 1110539 1024 32 610585 1030184 1024 64 929225 1590130 1024 128 1009859 1672930 1024 256 1042711 2039603 1024 512 941942 1931895 1024 1024 1039504 706167
5. Zadejte velikost záznamu pro testování pomocí iozone -r
Když spustíte test pro konkrétní velikost souboru, testuje se s různými velikostmi záznamů v rozmezí od 4 kB do 16 milionů.
Pokud chcete provádět testování I/O výkonu I/O subsystému, který je hostitelem databáze Oracle, možná budete chtít nastavit velikost záznamu v iozone na stejnou hodnotu velikosti bloku DB. Databáze čte a zapisuje na základě velikosti bloku DB.
reclen znamená délku záznamu. V předchozím příkladu 2. sloupec (se záhlavím sloupce „reclen“) udává délku záznamu, který by měl být použit pro testování IOzóny. V předchozím příkladu outout pro velikost souboru 1024 kB použilo iozone testování různé velikosti záznamů v rozmezí od 4k do 16M k provedení testu zápisu.
Namísto použití všech těchto výchozích velikostí délky záznamu můžete také určit velikost záznamu, kterou chcete otestovat.
Níže uvedený příklad spustí test zápisu pouze pro záznam délky 32 kB. Ve výstupu bude nyní 2. sloupec zobrazovat pouze 32.
$ ./iozone -a -i 0 -r 32 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 32 566551 820553 128 32 574098 1000000 256 32 826044 948043 512 32 801282 1560624 1024 32 859116 528901 2048 32 881206 1423096
6. Zkombinujte velikost souboru s velikostí záznamu
Můžete také použít volby -s a -r k určení přesné velikosti dočasného souboru a přesné délky záznamu, kterou je třeba otestovat.
Následující příklad spustí test zápisu pomocí souboru 2M s délkou záznamu 1M
$ ./iozone -a -i 0 -s 2048 -r 1024 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 2048 1024 1065570 1871841
7. Test propustnosti pomocí iozone -t
Chcete-li spustit iozone v režimu propustnosti, použijte volbu -t. Měli byste také určit počet vláken, která musí být během tohoto testu aktivní.
Následující příklad provede test propustnosti iozone pro zápisy pomocí 2 vláken. Vezměte prosím na vědomí, že nemůžete kombinovat volbu -a s volbou -t.
$ ./iozone -i 0 -t 2 Children see throughput for 2 initial writers 1= 433194.53 KB/sec Parent sees throughput for 2 initial writers = 7372.12 KB/sec Min throughput per process = 0.00 KB/sec Max throughput per process = 433194.53 KB/sec Avg throughput per process = 216597.27 KB/sec Min xfer = 0.00 KB Children see throughput for 2 rewriters = 459924.70 KB/sec Parent sees throughput for 2 rewriters = 13049.40 KB/sec Min throughput per process = 225610.86 KB/sec Max throughput per process = 234313.84 KB/sec Avg throughput per process = 229962.35 KB/sec Min xfer = 488.00 KB
Chcete-li provést propustnost pro všechny typy testů, odstraňte „-i 0“ z výše uvedeného příkladu, jak je uvedeno níže.
$ ./iozone -t 2
8. Zahrnout využití CPU pomocí iozone -+u
Při provádění iozone testování můžete také instruovat iozone, aby shromáždil využití CPU pomocí volby -+u.
-+ před volbou může vypadat trochu divně. Ale musíte zadat celé -+u (nejen -u nebo +u), aby to fungovalo správně.
Následující příklad provede celý test a zahrne zprávu o využití CPU jako součást výstupu tabulkového procesoru Excel, který generuje.
$ ./iozone -a -+u -b output.xls
Poznámka:Toto zobrazí samostatné využití CPU pro každý test, který provede.
9. Zvětšete velikost souboru pomocí iozone -g
Toto je důležité. Pokud má váš systém více než 512 MB RAM, měli byste zvětšit velikost dočasného souboru, který iozone používá pro testování. Pokud tak neučiníte, nemusíte získat přesné výsledky, protože v tom bude hrát roli vyrovnávací paměť systému.
Pro přesný výkon disku se doporučuje mít velikost dočasného souboru 3krát větší, než je velikost vyrovnávací paměti systému.
Následující příklad spustí iozone zvýšením maximální velikosti souboru na 2 GB a spustí automatické testování iozone pro testy zápisu.
$ ./iozone -a -g 2G -i 0 random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 64 4 556674 1230677 64 8 278340 441320 64 16 608990 1454053 64 32 504125 1085411 64 64 571418 1279331 128 4 526602 961764 128 8 714730 518219 ...
10. Vyzkoušejte více upevňovacích bodů společně pomocí iozone -F
Kombinací několika možností iozone můžete provádět testování I/O disku na více přípojných bodech, jak je uvedeno níže.
Pokud máte 2 přípojné body, můžete spustit 2 různá vlákna iozone a vytvořit dočasné soubory na obou těchto přípojných bodech pro testování, jak je uvedeno níže.
$ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
- -l označuje minimální počet iozonových procesů, které by měly být spuštěny
- -u označuje maximální počet iozonových procesů, které by měly být spuštěny
- -F by měl obsahovat více hodnot. tj. Pokud zadáme 2 v -l i -u, měli bychom zde mít dva názvy souborů. Upozorňujeme, že musí existovat pouze přípojné body. Soubor zadaný ve volbě -F nemusí existovat, protože iozone vytvoří tento dočasný soubor během testování. Ve výše uvedeném příkladu jsou body připojení /u01 a /u02. Soubor tmp1 a tmp2 automaticky vytvoří iozone pro testovací účely.
Předchozí články ze série sledování a ladění výkonu Linuxu:
- Úvod do monitorování a ladění výkonu systému Linux
- 15 praktických příkladů hlavních příkazů Linuxu
- 7 praktických příkladů příkazů PS pro monitorování procesu
- 10 užitečných příkladů Sar (Sysstat) pro monitorování výkonu UNIX / Linux