Waarom Solid-State-schijven langzamer gaan naarmate u ze vult
De benchmarks zijn duidelijk: Solid-state drives vertragen terwijl u ze volzet. Vul je SSD-station tot bijna-capaciteit en de schrijfprestaties zullen drastisch verminderen. De reden waarom ligt in de manier waarop SSD's en NAND Flash-opslag werken.
Vullen van de schijf naar capaciteit is een van de dingen die u nooit zou moeten doen met een solid-state drive. Een bijna volledig SSD-station zal veel tragere schrijfbewerkingen uitvoeren, waardoor uw computer langzamer wordt.
Lege blokken en gedeeltelijk gevulde blokken
Wanneer u een bestand naar uw SSD-station schrijft, zoekt het naar lege blokken en vult deze. Het schrijven naar een leeg blok is de snelst mogelijke schrijfbewerking. Daarom ondersteunen nieuwe besturingssystemen (Windows 7 en hoger) de TRIM-functie, die automatisch de gegevens van een bestand verwijdert van het SSD-station zodra u het bestand in uw besturingssysteem verwijdert. Dit werkt anders dan magnetische harde schijven, waar delen van verwijderde bestanden op de harde schijf zitten.
Ze zitten niet op een solid-state schijf - TRIM zorgt ervoor dat het blok geleegd wordt, zodat de SSD in de toekomst snel nieuwe gegevens naar het lege blok kan schrijven. Schrijven over een reeds geschreven sector is net zo snel als schrijven naar een lege sector op een mechanische harde schijf, maar een solid-state schijf moet een blok wissen voordat er naar geschreven wordt.
NAND Flash-geheugen schrijft gegevens in pagina's van 4 kB in 256 kB-blokken. Als u extra pagina's aan een gedeeltelijk gevuld blok wilt toevoegen, moet het SSD-station het hele blok wissen voordat u er gegevens naartoe schrijft.
Terwijl uw solid-state schijf vol raakt, zijn er steeds minder lege blokken beschikbaar. In hun plaats zijn gedeeltelijk gevulde blokken. De solid-state schijf kan niet alleen de nieuwe gegevens naar deze gedeeltelijk gevulde blokken schrijven - dat zou de bestaande gegevens wissen. In plaats van een eenvoudige schrijfbewerking moet het SSD-station de waarde van het blok in zijn cache lezen, de waarde met de nieuwe gegevens wijzigen en het dan terugschrijven. Houd er rekening mee dat het schrijven van een bestand waarschijnlijk bestaat uit het schrijven naar veel blokken, dus dit kan een aanzienlijke hoeveelheid extra vertraging introduceren.
TRIM consolideert niet gedeeltelijk ingevulde blokken
Als u een schijfeenheid naar capaciteit of bijna-capaciteit vult, zult u na het verwijderen van bestanden waarschijnlijk veel gedeeltelijk opgevulde blokken krijgen. Met de opdracht TRIM wordt alleen een SSD-station aangestuurd om bestandsgegevens te verwijderen wanneer het bestand wordt verwijderd. Het station wordt niet gedwongen om op enigerlei wijze schoongemaakt te worden.
Met andere woorden, vul een SSD naar capaciteit voordat u bestanden verwijdert en u zult waarschijnlijk eindigen met veel gedeeltelijk ingevulde blokken. De schijf gaat niet uit de weg om deze gedeeltelijk gevulde blokken te consolideren tot volledige blokken, waardoor lege blokken worden vrijgegeven. De drive zal nog steeds vol gedeeltelijk gevulde blokken zijn en de schrijfprestaties zullen verslechteren.
Overprovisioning en Garbage Collection
Om te voorkomen dat consumenten hun solid-state schijven aanvullen en eindigen met ernstig verslechterende prestaties, doen SSD-fabrikanten hun best om dit tegen te gaan.
Consument-grade solid-state schijven zetten vaak ongeveer 7% van hun totale flash-opslag opzij en maken het niet beschikbaar voor de gebruiker. Dit staat bekend als "overprovisioning": extra opslaghardware wordt toegevoegd aan de drive, maar is niet zichtbaar voor de computer als beschikbare opslag die hij kan gebruiken. Het reservegebied zorgt ervoor dat de schijf nooit helemaal vol kan raken - er zal altijd een reservevermogen overblijven om de schrijfprestaties stabiel te houden.
Elke controller van de solid-state drive heeft een garbage-collection-algoritme om te proberen dit probleem te verhelpen. Wanneer de schijf vol raakt, zoekt deze naar gedeeltelijk gevulde blokken en begint deze te consolideren, zodat zoveel mogelijk lege blokken worden vrijgemaakt. Verschillende solid-state schijven voeren deze bewerkingen uit op verschillende tijdstippen en drempels - dat hangt af van de controller van de omvormer.
Benchmark-bewijs
Anandtech voerde verschillende benchmarks uit met verschillende schijven om de relatie tussen het reservegebied van een solid-state schijf en de consistentie van de schrijfbewerkingsprestaties te optimaliseren. Bij het opvullen van een lege schijf, merkten ze al vroeg in het proces hoge schrijfprestaties en een aanzienlijke daling omdat de schrijfbewerkingen de schijf bleven vullen.
Meer reserveonderdelen op de schijven wegleggen hielp de prestaties constant te houden, omdat de schijf altijd voldoende lege blokken gereed moest hebben.
Ze vonden dat "de minimale prestaties aanzienlijk verbeterden als je 25% reserveareaal voor deze [consument] schijven bereikte." Hun laatste aanbeveling was dat je "slechts ongeveer 75% van de capaciteit van [je schijf] zou willen gebruiken als je een goede balans wilt tussen prestatieconsistentie en capaciteit. "
Als u een solid-state schijf hebt, moet u proberen om te voorkomen dat u meer dan 75% van de capaciteit gebruikt. Koop een grotere schijf met meer opslagruimte dan u nodig heeft en zorg ervoor dat u altijd consistente schrijfprestaties hebt. Gelukkig worden SSD's geleidelijk aan veel goedkoper, dus dit is niet zo duur als het ooit was.
Image Credit: Music Sorter op Wikimedia Commons, Simon Wüllhorst op Flickr