Tento článek by se také mohl jmenovat: Máte UPS? Zdvojnásobte si výkon svého diskového pole....
Anotace ve zkratce:
Tento článek pojednává o kombinaci Intel Rapid Storage Technology RAID 5 pole na chipsetu H77 s technologií Hyper-V. A konkrétním problému s pomalostí mysql databáze ve webové aplikaci Tiny Tiny RSS, běžící ve virtuálním počítači. Problém způsobuje bezpečností disková funkce Windows : write-cache buffer flushing. Také se zabývá řešením.
Asi půl roku využívám Intel raid na chipsetu H77. Kombinace RAID 5 a tří spolehlivých disků Samsung HD154UI je prozatím bezproblémová. Výkon pole nijak neoslní, mělo by jít o odolné řešení pro případ výpadku jednoho z disků. V případě závady základní desky stačí pole zapojit do jakékoliv jiné se stejnou nebo novější verzí RTS(Intel Rapid Storage Technology) option ROM.
Problém ovšem nastal když jsem v Hyper-V nasadil virtál obsahující mysql server pro Tiny Tiny RSS (viz předchozí článek http://blog.mj12.eu/2013/05/nasazeni-tiny-tiny-rss-v-ubuntu-serveru.html )
Kupodivu Tiny RSS bylo nezávisle na OS neuvěřitelně pomalé. Načtení složky trvalo až stránky trvalo cca 5 sec, načtení složky 10 sec). Běžná rychlost načítání je maximálně do 0,5sec. Po delší diagnostice a ladění SQL databází jsem našel původ problému. Je jím "Windows write-cache buffer flushing". Tato funkce je ve Windows ve výchozím stavu zapnutá (pokud vůbec cache používáte) a stará se o pravidelné vyprazdňování cache na disk - tím snižuje riziko ztráty dat v případě výpadku napájení nebo chyby STOP.

Nevím zda to je problém čistně RTS a mysql či RTS a Hyper-V. Ale reálný rozdíl jak uvidíte na obrázcích níže je velice zajímavý.
Virtuální počítač (ať už win nebo linux) má tendenci provádět nonstop zápisy do svého vdh, jde asi jen o 9 - 400KB/s. Ale jak vidíte stačí to k vytížení disku na maximum. Latence se pak podle taskmanageru pohybuje kolem stovek ms až sekund. Délka diskové fronty je 1,5-3.
Stav se zapnutým virtuálním počítačem obsahujíc mysql databázi. Flushování ve vychozím stavu zapnuté.
A zde je stejná situace s vypnutou funkcí "Windows write-cache buffer flushing"
Další příklad propadu výkonu můžeme vidět na programu HD Tune. Jako první opět ve výchozím stavu se zapnutým flushováním.
A bez této bezpečností funkce:
Jak je vidět, rychlost je téměř dvojnásobná, v případě latence je to až pětinásobně lepší.
A ještě file benchmark test měřený přímo v Hyper-V hostu.
Zde již je to zajímavější, ovšem stále to nevysvětluje proč s flushingem mysql pracuje desetinásobně pomaleji.
Ještě dva údaje pro porovnání:
Access Time : 0.568 ms
Burst Rate : 197.9 MB/s
Burst Rate : 197.9 MB/s
Access Time : 0.377 ms
Burst Rate : 518.2 MB/s
Burst Rate : 518.2 MB/s
Ovšem stojí tento rozdíl za vypnutí vyprazdňování cache? Bez automatiky Windows cache vyprazdňují pouze při každém vypnutí.....A u RAID může neplánované vypnutí způsobit až kolaps pole, nemluvě o poškození otevřených dat.
Možná řešení problému:
Program Sync 2.0 aneb snad to bude fungovat....
Možná řešení problému:
- Jasným kandidátem na řešení je tedy UPS komunikující s PC která by informovala o výpadku a sepnula bezpečné vypnutí. Bohužel o není levná legrace.
- Nic neměnit a používat bezpečné vyprazdňování. Bohužel tato alternativa by mi znemožnila používat TT-RSS na RAID 5. Musel bych použít nějaký jiný samostatný disk, iSCSI... či RAM disk? :-)
- Snížit riziko. Microsoft v rámci Sysnternals nabízí program Sync 2.0. Ten slouží k ručnímu vyprázdnění diskové cache.
Microsoft dělá výborný software - tato věta není jen fráze. Prográmek Sync z roku 2006 bez problému funguje na Windows 8 x64. A dělá to co má:
Je až k nevíře že program z roku 2006 bude fungovat v roce 2013. Na obrázku níže je červeně označený moment kdy byl sync spuštěn, přenosová rychlost klesla a cache se vyprázdnila.
Nic tedy nebrání vytvoření naplánované úlohy která bude Sync spouštět. Jenže jak často? Jak často Windows ve výchozím stavu flushují cache? Jednou za hodinu? Každou minutu? Každých 5 vteřin? Vteřinu? 0.1 vteřiny? 0.001 vteřiny? Po každém zápisu či při iddle? Bohužel se mi tuto informaci nepodařilo získat pro Windows, ale ani pro Linux.
Pravděpodobně každých 15-30 minut bude rozumné rozmezí pro iddle běh.
PS: Pokud prodáváte nějakou starší UPS, mám zájem :-)
Žádné komentáře:
Okomentovat