cache na diskovem poli

David Pasek david.pasek at gmail.com
Sun May 25 21:54:18 CEST 2008


Ahoj,

2008/5/25 Radomír Tománek <rtomanek at epark.cz>:
> Zdravím,
> Mám spíše toretický dotaz.  V rámci diskového subsystému (řadič, fyzický disk, logický volume, operační systém) je několik vyronávacích pamětí a algoritmů. Většinu lze konfiguračně vypnout/zapnout, zvětšit/změnšit a ovlivnit tak výkon i spolehlivost celého serveru. Může prosím někdo znalý problemaiky shrnout které cache je dobré jak nastavit (vypnout/zapnout – velikosti zde nemá smysl asi řešit) pro určité typické nasazení? Mám na mysli třeba typické nastavení jako fileserver, případně storage server, případně databázový server.
> Jde mi o to, že před řadou let, když se dělala větší disková pole, tak se s těmito věcmi dost laborovalo, protože například databáze byly často ze „záhadných" důvodů nekonzitentní (typicky šlo o to, že aplikace něco zapsala do db, jenže se to fyzicky neuložilo a když potom došlo ke čtení té samé hodnoty, tak se načetla hodnota z disku, nikoli z cache…☹ - zjednodušeně řečeno). Tak nějak jsem si zvyknul cache na řadiči a logickém svazku zakazovat (a už jsem se s podobným průserem nesetkal), ale vím, že z hlediska výkonu to není ideální. Zrovna tak se už jistě posunul vývoj kupředu, tak by mě zajímalo, jaké s tím máte zkušenosti.
>

Je potreba si uvedomit nekolik zasadnich veci.

* nejpomalejsi komponentou je disk
* chci li zvysit vykon, pak musim mit dostatek disku v prislusnem RAIDu
* RAID (krome RAID 0)  ma vzdy overhead na write operaci RAID 1 a 10
maji 2 diskove operace na write, RAID 5 ma 4 diskove operace na write.
* FC DISK umi zhruba 180 IOPS (IO transakci za sekundu), SAS DISK 15k
zhruba 150 IOPS, SAS DISK 10k zhruba 110 IOPS, SATA DISK 7.2K cca 70
IOPS
* cache umi vyznamne pomoci s vykonem, nicmene kdyz dojde cache, tak
jsme zase u rychlosti disku
* cache muze byt zalohovana baterkou a nebo, kdyz mam nejake trosku
lepsi externi pole, kde mam dva radice, tak jsou cache mirrorivane
mezi sebou.

a aby to nebylo takto jednoduche, tak diskova performance neni dana
jen vyse uvedenymi hardwarovymi charakteristikami, ale i
* operacnim systemem
* souborovym systemem
* ovladaci radicu (pripadne HBA)
* velikosti diskoveho bloku, ktery kriticka aplikace pouziva
* pomerem read a write operaci

Radice obecne pouzivaji ruzne algoritmy pro praci s cachema, ale
zakladni mody jsou vetsinou "read ahead" a "non-read ahead". Read
ahead umi pri cteni nacitat i bloky dat z okoli. To je vhodna
technika, kdyz je velka pravdepodobnost, ze se data pouziji. Toto
vetsinou plati pro sekvencni steni dat (file servery, streaming,
apod.).

Externi diskova pole maji jeste spoustu dalsich mechanismu, jak
pracovat s dostupnou cache na radicich, ale to uz je nekam uplne
jinam.

Cache na urovni filesystemu jsou odvisle prave od pouzivaneho filesystemu.

Doufam, ze jsem na nic zasadniho nezapomnel a teoreticky ti odpovedel
na tvoji teoretickou otazku.

Rekni mi konkretni vykonostni a bezpecnostni pozadavky a ja ti reknu,
jaky diskovy subsystem zvolit ;-)

Jinak docela zajimavy konkretni ladeni diskoveho subsystemu z me praxe
je popsano na blogu ...
http://davidpasek.blogspot.com/2007_06_01_archive.html
slo tam o to, ze vetsina enterprise serveru je z vyroby dodavana s
nastavenymi radici pro idealni praci s databazovymi systemy (random
access & write performance), coz absolutne neni vhodne pro aplikaci
typu Video On Demand a IPTV (obecne streaming).

David.


More information about the Users-l mailing list