Root » Servers » » Harde schijf » » SSD » » Write amplification
Solid State Disk
Write amplification
SSD minpunt
Write amplification is het fenomeen waarbij de host computer een schrijfopdracht geeft voor één enkele blok, maar waarbij op de SSD zelf talrijke schrijfopdrachten uitgevoerd worden.
-

-

Write amplification

Computers lezen en schijven de data naar de harde schijf in blokken met een vaste lengte, bijvoorbeeld 4k. Het operating system zelf houdt bij in welke blokken een bestand opgeslagen zit: een bestand bestaat meestal uit meerdere blokken. Ook de directories (lijst van bestanden) en de master file table of file allocation table (MFT of FAT) worden op de schijf opgeslaten.

Solid State Disks verslijten ten gevolge van de schrijfopdrachten: het is dus de bedoeling deze schrijfopdrachten tot een minimum te beperken: daarom is defragmentatie zeker niet goed voor een SSD, want de gegevens worden opnieuw geschreven in aangrenzende blokken. Voor een klassieke harde schijf betekent dit een snelheidswinst, niet voor een SSD.


De gegevens worden op de SSD per pagina van 4k geschreven, maar herschrijven is niet mogelijk en het volledig blok moet eerst gewist worden.


Het vrijmaken van blokken om ze te kunnen wissen zorgt voor de gevreesde “write amplification”

Overigens worden de pagina's van de ene naar de andere blok verplaatst (het heeft geen zin ze binnen één blok te verplaatsen)


Maar ook de controller in de ssd zelf is soms verplicht om extra schrijfopdrachten in te voeren. De blokken heten pagina's bij SSD en worden gegroupeerd in... blokken (tja, ze hadden beter een andere benaming gekozen). Pagina's kunnen enkel geschreven worden, niet gewijzigd. Als een pagina gewijzigd moet worden, dan zoekt de controller een vrije pagina en schrijft er de gewijzigde data (de oude pagina wordt als ongeldig gemarkeerd). De controller houdt bij waar iedere blok geschreven staat.

Als er geen vrije pagina's meer over zijn, dan moeten ongeldige pagina's gewist worden. Het wissen kan niet per pagina gebeuren, maar moet per blok gebeuren (een blok kan duizenden pagina's bevatten). Als er nog geldige pagina's in de te wissen blok zitten, dan moeten ze eerst naar een andere blok gecopieerd worden (of tijdelijk in een buffer bewaard worden totdat de complete blok gewist is en de pagina's herschreven kunnen worden).

Zo kan het gebeuren dat het schrijven van één enkele blok door de computer talrijke schrijfopdrachten veroorzaakt in de SSD:

  • Opslaan van de data in een pagina

  • Eventueel schijven van een vertalingstabel als die vol is (de vertalingstabel zet de logische blok om in een pagina-adres)

  • Als er geen vrije pagina meer is, wissen van een complete blok, met eerst copie van de nog geldige pagina's naar een buffer
De SSD is niet op de hoogte van de bestandsindeling. Als een bestand gewist wordt, dan wordt er enkel een wijziging aangebracht in de directory. Later wordt de vrijgekomen ruimte eventueel overschreven. De SSD is echter niet op de hoogte gebracht dat er ruimte vrijgekomen is, en zal deze ongebruikte blokken als "bezet" markeren (en ze ook opnieuw schrijven als er een pagina gewist moet worden). Enkel moderne operating systems zoals Linux en windows 7 zijn op de hoogte van het bestaan van SSD en hebben een nieuwe opdracht om de ongebruikte blokken weer vrij te geven: het TRIM commando.

Daarbij moet opgemerkt worden dat SSD schijven die in raid configuratie gebruikt worden het TRIM commando niet kunnen gebruiken. Het TRIM commando is namelijk van toepassing op de volledige array (de volume), niet op de individuele schijven.

Ook het regelmatig wissen van blokken (zodat de schrijfopdrachten sneller kunnen verlopen omdat er al vooraf vrije pagina's gemaakt zijn) zorgt voor een zekere write amplification. De firmware is een compromis tussen snel data kunnen schrijven (veel beschikbare vrije pagina's) en de beperking van de write amplification (enkel blokken wissen als ze enkel ongeldige data bevatten of als er geen vrije pagina's meer zijn).

De wear levelling is het verplaatsen van data die nooit gewijzigd wordt zodat alle delen van de schijf evenveel geschreven worden (en dus gelijktijdig verslijten). De wear levelling zorgt ook voor een write amplification en hier ook moet de firmware een compromis vinden.

Een voorbeeld van write amplification wordt door de tabel van SMART parameters van de SSD schijf in mijn server.
Door het operating system werden er 627GB aan data naar de schijf geschreven (bestanden, aanpassingen van het directory en de master file table) op datum van 25 februari 2016.
Op niveau van de geheugenmodules komt dit overeen met 8491GB aan geschreven data, dus een write amplification van 13.5, wat redelijk hoog is. Gelukkig dat ik een SSD schijf van Intel gebruik, en die zijn gekend door hun zeer hoge betrouwbaarheid, zelfs als de schijven in continu-toepassingen gebruikt worden.

Bepaalde SSD fabrikanten proberen de write amplification te beperken door de data te comprimeren voor opslag, of enkel dat deel weg te schrijven dat effektief gewijzigd werd (bij het wijzigen en opslaan van een document wordt soms maar een deel van het bestand gewijzigd).

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's