Proč u SSD disků používáním klesá výkon

25. 9. 2012 22:59 (aktualizováno) Petr Krčmář

Obliba SSD disků stoupá, ale po prvotním nadšení z nového výkonného kusu hardware u mnoha lidí přichází vystřízlivění. Výkon SSD totiž časem výrazně klesá.

SSD disky frčí, jejich kapacity rostou (už tu máme první terabajtový disk) a ceny pomalu klesají. Slušně použitelný 32GB disk už dnes koupíte za něco málo přes 2000 Kč.

SSD disky mají řadu výhod: menší spotřeba, okamžitý start, konstantní rychlost čtení, nulová přístupová doba, mechanická odolnost, odpadá nutnost defragmentace souborového systému a další. Většina lidí ocení především vysoký výkon a nulovou přístupovou dobu danou tím, že není třeba vystavovat hlavičky disku.

Obvykle je uživatel na začátku nadšen, ale po pár týdnech či měsících užívání výkon klesá. A to často dokonce pod úroveň klasických mechanických disků. Někdo se na to ptal v našem fóru, takže jsem se rozhodl to vysvětlit.

Potíž SSD souvisí se způsobem mazání souborů v souborových systémech. U něj totiž nedochází k fyzickému přemazávání dat na sektorech, ale systém si jen poznačí informaci „od sektoru x do y je smazáno“. Disk samotný tedy doopravdy neví, že se jedná o sektory k novému použití, data tam přeci zůstala. Ví to jen operační systém, který si to zapsal někam na disk a příště se rozhodne, že tam zapíše něco nového.

V případě nového využití už dříve použitého bloku s daty tak z pohledu systému dochází k novému zápisu, ale z hlediska SSD disku se jedná o přepis. Potíž je, že přímo zapsat jednotlivý sektor je možné jen v případě, že je opravdu prázdný (tedy plný jedniček – ale prostě vyresetovaný). Pokud jsou v něm stará data, musí se upravovat celý blok sektorů najednou. To je interně spravovaná větší skupina sektorů, která má obvykle 512 KB. Takže elektronika SSD musí nejprve celý blok přečíst, v paměti modifikuje jen ten jeden sektor, na disku se celý blok vyresetuje a pak se do něj celá nová podoba bloku z paměti zapíše. Zbytečně se tak pracuje s 1000× větším objemem dat a ještě k tomu dvakrát.

SSD disk se především z důvodů opotřebení jednotlivých buněk (ty nevydrží nekonečné množství zápisů) snaží zápisy rozprostřít po celém prostoru disku (to dělají mimochodem i paměťové karty), takže na začátku se zapisuje do prázdných sektorů i v případě přepisu. Po čase se ale celý disk zaplní nějakými daty a při dalším zápisu už není množné využít prázdný sektor a musí se začít absolvovat výše zmíněné martyrium. V tu chvíli jde výkon slušně řečeno do kytek a vleče se to pomaleji než se starým diskem.

Výrobci o tomhle samozřejmě vědí a existuje několik řešení, tím nejpoužívanějším a nejzajímavějším je TRIM. Je to vlastně příkaz, kterým systém informuje SSD disk o tom, že je možné interně vymazat určité bloky, protože systém je považuje za nepoužívané. To sice znemožňuje funkci undelete (data se fyzicky smažou z disku), ale vymazané sektory jsou pak připravené pro přímý zápis bez nutnosti načítat celý velký blok.

Pokud jste se tedy rozhodli pro nákup SSD disku, vybírejte si takový, který umí TRIM. Linuxové jádro umí TRIM příkaz posílat od verze 2.6.33, budete tedy potřebovat nejnovější verzi. Ve FreeBSD je podpora od verze 8.0, Windows umí TRIM od verze 7 a Server 2008 R2. Pokud máte starší SSD disk, který tomuto příkazu nerozumí, je třeba v něm aktualizovat firmware. Pokud to neuděláte, bude disk příkaz ignorovat.

Sdílet