Root » Servers » » Harde schijf » » SSD » » Overprovisioning
Solid State Disk
Schijfgeheugen in reserve houden
Overprovisioning
Bij bepaalde SSD fabrikanten is het mogelijk een deel van de beschikbare capaciteit opzij te zetten om de SSD sneller te maken. De overprovisionning is een extra ruimte die vrije pagina's bevat, zodat het schijven sneller kan gebeuren, want het schrijven kan enkel gebeuren als er vrije pagina's zijn.

Samsung is met deze feature begonnen, maar het is best mogelijk dat andere fabrikanten zullen volgen. De vraag is nu: hoeveel extra ruimte moet ik opzij zetten?

-

-

SSD Overprovisioning

Overprovisioning is vergelijkbaar met een reserve-leger


Dit is geen overprovisioning
maar gewoon een deel van de diskcapaciteit die als buffer gebruikt wordt.
Twee verschillende fabrikanten gebruiken een verschillende buffergrootte.


“Stuttering” (bruin),
“steady state” (paars) en
steady state met overprovisioning (blauw)
in de praktijk

Lees ook de pagina over de werking van een SSD voor meer informatie over blokken en pagina's.

De effektieve capaciteit van een SSD komt niet overeen met de maximale capaciteit. Geheugenmodules worden geleverd in capaciteiten van 16, 32, 64,... GB, maar de bruikbare capaciteit is veel lager. Een deel van de schijf wordt door het systeem zelf gebruikt:

  • bufferzone: dit is nodig om bijvoorbeeld gegevens tijdelijk op te slaan als een blok gewist moet worden (de gegevens in de blok die niet gewist mogen worden moeten tijdelijk elders bewaard worden).

  • vertalingstabel, dat is de tabel die zorgt voor de omzetting van een adres (zoals gebruikt door het operating system) naar een fysisch adres op de schijf.

  • Reserve: de geheugencellen slijten, en een bepaalde capaciteit wordt in reserve gehouden om gebruikt te worden als een blok teveel fouten zou bevatten. Dit gebeurt transparant voor de gebruiker (dus zonder capaciteitsverlies) zolang er voldoende ruimte over is.

  • Provisioning: het klaarmaken van gewiste blokken, zodat de computer niet moet wachten tot er een blok vrijgemaakt wordt als er geschreven moet worden.
Praktisch gezien is de reserve en de provisioning één pot nat. Als de schijf verslijt en de provisioning kleiner wordt, gaat de schijf trager werken (schrijfopdrachten). De gereserveerde "technische ruimte" komt niet overeen met over-provisionning. Een schijf van 64GB heeft bijvoorbeeld slechts een capaciteit van 60GB, van de niet-vrijgegeven ruimte wordt een deel gebruikt als werkbuffer, vertalingstabel en een deel voor "normale" provisionning.

Schijf van 64GB = 68.719.476.736 bytes
(64 × 1024 × 1024 × 1024)
Beschikbaar disk1 = 64.017.317.888 bytes
Beschikbaar disk2 = 60.019.834.880 bytes

In rust gaat de disk vrije ruimtes klaarmaken: er worden gebruikte blokken uitgezocht die geen gebruikte pagina’s bevatten (of zo weinig mogelijk gebruikte pagina’s bevatten). De gevevens worden verplaatst en de volledige pagina gewist (wissen gebeurt altijd één pagina met een keer en is relatief gezien nogal traag). Zo heeft de schijf ruimte vrij als er een schrijfopdracht uitgevoerd moet worden. Dit heet garbage collection (opruimen van de rommel).

Als er geen vrije blokken meer zijn, dan wordt de computer plots zeer traag (dit was een bekende probleem bij de eerste SSD, met name de goedkopere versies). Dit fenomeen heet stuttering. Maar ook de huidige systemen kunnen een mildere vorm van stuttering veroorzaken bij schrijf-intensieve applikaties (batch fotobewerking zoals het omzetten van RAW bestanden naar JPEG). De computer blijft traag totdat er weer ruimte vrijgemaakt wordt (de schijf moet dus op adem kunnen komen).

Tegenwoordig gebruikt men niet meer de benaming "stuttering" maar "steady state". Dit is de schrijfsnelheid over een lange tijd (als er dus constant gewist en verplaatst moet worden). Als de belasting lager wordt, worden opnieuw nieuwe blokken vrijgemaakt: de burst-snelheid is dus veel hoger dan de steady snelheid.

Om stuttering tegen te gaan kan men het gebied dat gereserveerd is voor vrije blokken vergroten. De overprovisionning wordt enkel gebruikt om vrije blokken klaar te hebben als er geschreven moet worden. Als de schijf permanent tegen zijn maximaal niveau gebruikt wordt, dan zullen er weinig vrije blokken zijn.

Het zijn de schijven van Samsung die als eerste de functionaliteit van de overprovisioning instelbaar hebben gemaakt. Daarbij wordt de partitiegrootte verkleind, en de vrijgekomen blokken worden als buffer gebruikt. Het instellen van de overpartitioning wordt best gedaan op een lege schijf.

Hoeveel moet je voorzien als overprovisionning?

De schijf heeft reeds een gebied voorzien als provisioning (groter of kleiner): de schijf zou anders zeer traag en gebrekkig werken. Als er veel programmas geinstalleerd zijn en de computer traag opstart, dan kan het nuttig zijn de overprovisioning te vergroten. De routine die bij de harde schijf geleverd wordt maakt het mogelijk achteraf de afmetingen van de partitie te wijzigen (ten minste als je voor windows gekozen hebt). Maak toch een volledige back up voor de zekerheid.

Bij het opstarten wordt er gemakkelijk meer dan 1GB aan rommel geschreven door het operating system. De verschillende helper programma’s die ook opgestart worden (adobe, office, alle programma’s in de notification area, de anti-virus, enz) schrijven ook heelwat.

De ruimte die opzij gelegd werd (uit benchmarks blijkt het te gaan om 1GB voor 64GB diskcapaciteit en 2GB voor 256GB diskcapaciteit) is niet voldoende. Tegenwoordig valt stuttering minder op dankzij betere algoritmen, die de schrijfopdrachten reeds vertragen voor het bereiken van de limiet, maar de SSD wordt wel duidelijk trager. Vreemde schrijfresultaten bij benchmarks kunnen enkel verklaard worden door dit fenomeen.

Als je de overprovisionning zelf kan instellen, kies die dan zo groot mogelijk. Je verliest dan wel een deel van de disk capaciteit, het is dus een wikken en wegen. Windows en Linux hebben graag dat de schijf niet meer dan voor de helft vol is. Kijk ook hoeveel werkgeheugen gebruikt wordt: als het systeem 2GB werkgeheugen (van de beschikbare 3GB) gebruikt, moet je als richtwaarde ook 2GB aan overprovisioning vastleggen. Als er 2GB werkgeheugen gebruikt zijn door het operating system en verschillende routines, dan is dit een teken dat er veel programma’s op de achtergrond draaien (en dus schrijfopdrachten uitvoeren). Dit is echter geen vaste formule.

Overprovisioning is ook goed voor de levensduur van de schijf, want het betekent dat de schijf gemakkelijker blokken kan vrijmaken zonder teveel tussen-opdrachten (write amplification). Waarom dit zo is zou ons te er leiden, maar lees de pagina over de werking van de SSD.

Overprovisioning maakt de schijf ook sneller (zelfs vòòr het bereiken van de steady state limiet) omdat het systeem gemakkelijker vrije blokken kan vinden. Overprovisioning heeft geen invloed op de leessnelheid.

De overprovisioning is geen vast gebied op de schijf maar het zijn allemaal blokken her en der die vrijgemaakt zijn. Deze blokken veranderen constant bij de schrijfopdrachten.

De laatste grafiek toont de schrijfsnelheid van een SSD van de eerste generatie (Patriot), waarbij de schrijfsnelheid op bepaalde ogenblikken nul wordt (bruin). De paarse grafiek is die van een recente schijf zonder overprovisioning. De schrijfsnelheid valt niet meer zo ver terug. De blauwe grafiek is van dezelfde schijf, maar nu met overprovisioning op maximaal ingesteld. Opgelet deze grafieken zijn algemeen en hangen af van de vrije ruimte op de disk (en of het TRIM commando gebruikt wordt).

Het is ook duidelijk waarom grotere schijven sneller zijn: de geheugenmodules kunnen parallel aangestuurd worden, waardoor de datasnelheid eigenlijk beperkt wordt door de controller, en niet meer door de schijf (bij de hoogste capaciteiten). Ook hebben grotere schijven ook meer provisioning, waardoor de flessenhals (steady state) minder snel zal optreden.

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