Portál AbcLinuxu, 30. dubna 2025 09:07
SSD cache na linuxu
29.7.2011 12:19
| Přečteno: 2751×
| Linuxové drobty
| poslední úprava: 29.7.2011 12:19
Myšlenka použít flash disky jako diskovou cache je poměrně stará. Nicméně na linuxu se moc nepoužívá. Je to dobře nebo špatně?
Nedávno Intel přišel na svém chipsetu Z68 s velmi zajímavou myšlenkou integrace cache s deskou. Dokonce začal vyrábět SSD disk speciálně pro cache určený. Je na technologii SLC tedy jednotlivé buňky nesou jen jeden bit a tím pádem jsou řádově odolnější před násobnými přepisy, které nastávájí v případě cache.
Vzhledem k tomu ze kamarád stavěl počítač postavený na desce s touto technologií GIGABYTE Z68XP-UD3-iSSD zkusil jsem se s technologií trochu seznámit. První zklamání bylo v tom, že disková cache není pouze hardwarová záležitost. Doufal jsem, že by to mohlo fungovat tak, že na úrovni BIOSu definuji vazbu mezi cache a diskem, a tím dostanu jedno blokové zařízení, které pak se bude chovat transparentně pro systémy nad ním, že chipset spolu s BIOSem zařídí řízení cache. Bohužel není to tak. Kromě nadefinování přístupnosti SSD disku na motherboadu pro cachování je hlavní části driver, který (jak překvapivě) je pouze pro Windows 7. Takže takto přímo je to pro linux nepoužitelné.
Nicméně myšlenka i testovací výsledky jsou takové, že by na podobné cesty se v linuxu mělo zareagovat. Při práci s malými soubory (4kB) dosahuje reálná přenosová rychlost samostatného disku cca 500kB-1MB/s. (což je pochopitelné, většinu času je seek time, a pro každý soubor je to pak kolem 5ms takže přečte se 200 souborů po 4kB) pro cache je dosažená rychlost 20MB/s pro read a 40MB/s pro write a při paralením přístupu více procesů na malé soubory jsou vysledné rychlosti přes 100MB/s tedy v podstatě rychlost sekvenčního čtení (viz už uvedený odkaz). Takže zrychlení řekněme 20x až 100x pro tuto specifickou situaci malých souborů, v jiných je zrychlení také i když ne tak výrazně.
Cache jsou v počítačích po celou dobu jejich existence jako prostředek pro vyrovnání datových toků mezi zařízeními, které mají různé přenosové charakteristiky. Cache procesoru má nekolik úrovní, buffery pro disky a pro síťové prvky též zvládnou hodně. V podstatě vždy je to o tom, že rychlé zařízení je málokapacitní (za rozumnou cenu) a vysokokapacitní zařízení je pomalé. A přesně tahle souvislost je mezi operační pamětí, SSD cache a HDD. Když bych to měl parafrázovat přístup k HDD jako přístup procesoru k paměti, tak vůči tomu HDD je operační paměť jako L1 cache procesoru, SSD cache jako L2, a vlastní HDD jako hlavní paměť. Zatím používáme jen L1 cache. Hledal jsem je-li podobná SSD cache jako Intelovský driver i pro linux, jediné, co jsem našel je bcache. Bohužel jsem nestihl si tohle vyzkoušet, protože kamarád ten systém stavěl pro někoho a už ho předával.
Zkoušel někdo cachování. To řešení Intelu je i zajímavé v tom, že si systém pamatuje vazbu s cache ihned od startu (asi je to jeden z prvních driverů který loaduje) takže celý systém startuje za cca 10 vteřin, z hibernace za 6. Osobně si myslím, že optimálně by bylo mít takovou cache ne slepou (jako je bcache, která se řídí heuristikou, co v cache ponechat), ale navázanou na filesystem, protože filesystem ví, která data jsou potřeba mít rychle k dispozici a je vhodné je cacheovat. Asi tak, že při vytváření filesystému, by se napsala jako option cache=/dev/sdh
a filesystém by blokové zařízení /dev/sdh
používal jako cache. Je jasné, že tohle by se dalo dát jen do systémů, které jsou aktivně ve vývoji, jako btrfs nebo ext4.
Tiskni
Sdílej:
Komentáře
Vložit další komentář
29.7.2011 14:10
Suchý čert
Re: SSD cache na linuxu
29.7.2011 16:07
R
Re: SSD cache na linuxu
29.7.2011 19:45
Kvakor
Re: SSD cache na linuxu
30.7.2011 18:29
nyan
Re: SSD cache na linuxu
Založit nové vlákno •
Nahoru
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.