2017. november 19., vasárnap

Útvonal

Tesztek » Adattároló rovat

Átfogó elemzés az SSD-k természetéről

Mivel járunk jobban: a CPU cseréjével vagy egy SSD vételével? Már régen volt dolgunk ennyire érdekes összevetéssel.

Wear leveling

Wear leveling? Az mi?

Magyarra lefordítva valahogy úgy lehetne megfogalmazni, hogy az elhasználódás kiegyenlítéséért felelős algoritmus, azaz módszer. Mint azt említettük, a cellák csak bizonyos számú írást képesek elviselni, az MLC NAND 10 000-et, az SLC 100 000-et (megközelítőleg, arányaiban). Biztosak lehetünk benne, hogy az SSD idővel írhatatlanná válik, de ha már tudjuk ezt, akkor jó lenne, ha az egész SSD "felülete" egyidőben, azaz minél később válna írhatatlanná, és nem különböző időpontokban. A wear leveling algoritmus ezért felel. Léteznek jobb és rosszabb algoritmusok. A jót onnan lehet felismerni, hogy a valós, általunk okozott adatforgalmon túl nem ró túl nagy terhet a cellákra (write amplification).

Hirdetés

A wear leveling önkényesen írkál az SSD-re?

Muszáj neki. Ha van három cellánk (az egyszerűség kedvéért mindegyik 1 bitet tárol) amelyek 100 000 írást képesek elviselni, akkor meg kell oldani, hogy mindhárom cella egyidőben váljon használhatatlanná, pontosabban azt, hogy ne legyen köztük olyan, amelyik hamarabb elhasználódk. Ha az első kettő tovább tart, mint a harmadik, akkor nem beszélhetünk optimális működésről, viszont a kiegyenlítéshez adatok átmozgatására van szükség. Tegyük fel, hogy nincs wear leveling. Az első cella egy bizonyos ideig egy adott, statikus információt tárol, míg a másodikon és a harmadikon folyamatosan változnak az adatok (dinamikus). Ez wear leveling nélkül azt jelentené, hogy a második és a harmadik cella bizonyos számú írásciklussal előrébb jár az elöregedésben, mint az első cella, tehát hamarabb válik használhatatlanná. Ezt ki kell egyenlíteni, ennek érdekében a wear leveling úgy tárolja az információt, hogy mindhárom cella egyidőben váljon írhatatlanná. Az SSD-k esetében el kell felejteni azt a belénk rögzült képet, amit a töredezettségmentesítő programokban látni, amikor a merevlemezt szeretnénk optimalizálni, az SSD nem úgy működik, mint a HDD, hogy a tányér külső peremétől befelé íródnak fel az adatok, hanem az SSD vezérlője szétszórja az adatokat "mindenfelé", pontosabban lehetőleg egyenletesen a NAND-ok között. A wear leveling egyébként problémákat is felvethet, amikor már nem három celláról, hanem több gigabájtnyi adatról van szó.

Gondoljunk csak bele, veszünk egy 100 GB-os SSD-t, ezen mondjuk kb. 60 GB statikus adatot tárolunk. (A statikus adat olyan adat, amit nem változtatunk meg szinte soha, pl. operációs rendszer fájljai és a használt alkalmazások/programok fájljai (Program Files könyvtár) illetve a többi.) Wear leveling nélkül egy idő után szimplán elhasználódik a 40 GB szabad hely, és még az is valószínűtlen, hogy mindez egyszerre következik be. A maradék 60 GB ugyan továbbra is használható marad, de így már nem beszélhetünk 100 GB-os SSD-ről. Valójában erre a kérdésre kétféle megoldás létezik (egyelőre), ezeket a dinamikus és a statikus wear leveling névvel illették.

A dinamikus wear leveling mindig csak a szabad terület, azaz a statikus adatokon túl található terület épségét felügyeli, ahol dinamikusan változó adatok találhatók. A fenti példából kiindulva csak a 40 GB szabad tárhely elhasználódásának a kiegyenlítésére figyel. Sebesség szempontjából ez ideális, hiszen mivel a statikus adatokkal nem kell törődnie, csak nagyon ritkán van munkája és olyankor sem sok. Élettartam szempontjából viszont ezt csak alternatív megoldásként tartják számon, mert miután elhasználódik a dinamikus adatokhoz használt terület, csak a maradék használható tovább, de ez már nem ugyanakkora méretű SSD.

Napjaink SSD-i (legalábbis a többségük) statikus wear levelinget használ. Mint az a nevéből talán kitalálható, ez azt jelenti, hogy az algoritmus a statikus adatokat is folyamatosan mozgatja. Ez azzal az előnnyel jár, hogy az SSD teljes felülete egyidőben válik írhatatlanná, viszont az a hátránya, hogy magának az algoritmusnak a működése plusz terhet ró a cellákra, illetve a sebességet is csökkentheti. A kérdés csak az, hogy mekkora ez a teher, tehát mennyi plusz írással számolhatunk. Ez két tényezőtől függ, egyrészt magától az algoritmustól, másrészt attól, hogy mennyi szabad terület található az SSD-n. Az Intel állítólag elérte, hogy ez az úgynevezett "overhead", tehát hozzáadott írás (write amplification) csak a valós írás 10%-át érje el (1,1x-es szorzó); ez elméletben egy nagyon alacsony szám, ami jó, hiszen ez azt jelenti, hogy tovább "élhetnek" a cellák. Szintén az Intel szerint a kezdetleges SSD-k vezérlői esetében akár 2000%-os, azaz 20x-os adatmozgatással is számolhatunk a nem éppen ideális esetekben.

Ez enyhén szólva is hihetetlen. Mégis hogyan kell ezt elképzelni?

Vegyünk egy olyan szélsőséges példát, amiben egy SSD-t majdnem "csurig" megtelítünk, pl. egy 50 GB-os SSD-re 48 GB statikus adatot írunk fel. Tegyük fel, hogy a maradék 2 GB helyen az operációs rendszer és a böngésző ideiglenes fájljai találhatóak, amelyek folyamatosan frissülnek, cserélődnek. A statikus wear leveling nem hagyhatja, hogy a 2 GB "szemét" tárolását végző cella gyorsabban használódjon el, mint a maradék 48 GB statikus adat tárolását végző cella, ezért a háttérben megpróbálja eltolni a 48 GB adatot, tehát lényegében egy közel teljes SSD-nyi, 48 GB adatot fog áthelyezni. Persze ezt nem úgy kell elképzelni, hogy egy temp-fájl törlése/létrehozása után meg kell várni, amíg 48 GB adat elmozdul. Az SSD ezt a háttérben végzi (jó esetben olyankor, amikor nincs terhelés alatt a vezérlő); a 2 GB üresnek vélt cellamennyiséget (a dinamikus adatok "alatt") ide-oda tologatja az SSD felületén, így a cellák elhasználódása az SSD egészén egyenletes lesz.

A cikk még nem ért véget, kérlek, lapozz!

Hirdetés

Hirdetés

Copyright © 2000-2017 PROHARDVER Informatikai Kft.