Varför solid state-enheter saktar ner när du fyller dem
Riktmärkena är klara: Solid State-enheter saktar ner när du fyller dem. Fyll i din solid state-enhet till nära kapacitet och skrivresultatet minskar dramatiskt. Anledningen till detta ligger i hur SSD och NAND Flash-lagring fungerar.
Att fylla enheten till kapacitet är en av de saker du aldrig bör göra med en solid state-enhet. En nästan full solid state-enhet kommer att ha mycket långsammare skrivoperationer, vilket saktar ner datorn.
Tomma block och delvis fyllda block
När du skriver en fil till din solid state-enhet, letar den efter tomma block och fyller dem. Att skriva till ett tomt block är den snabbaste möjliga skrivoperationen. Därför stöder nya operativsystem (Windows 7 och senare) TRIM-funktionen, som automatiskt tar bort en fils data från solid state-enheten så fort du tar bort filen i operativsystemet. Detta fungerar annorlunda från magnetiska hårddiskar, där bitar av borttagna filer sitter runt på hårddisken.
De sitter inte på en solid-state-enhet - TRIM ser till att blocket töms så att SSD snabbt kan skriva nya data till det tomma blocket i framtiden. Att skriva över en redan skrivet sektor är lika snabb som att skriva till en tom sektor på en mekanisk hårddisk, men en solid state-enhet måste radera ett block innan du skriver till det.
NAND Flash-minne skriver data i 4 KB-sidor inuti 256 kb-block. För att lägga till ytterligare sidor i ett delvis fyllt block måste solid state-enheten radera hela blocket innan du skriver data tillbaka till det.
När din solid-state-enhet fyller upp, finns färre och färre tomma block tillgängliga. På deras plats är delvis fyllda block. Solid State Drive kan inte bara skriva de nya data till dessa delvis fyllda block - det skulle radera befintliga data. Istället för en enkel skrivoperation måste solid state-enheten läsa värdet av blocket i dess cache, ändra värdet med de nya data och skriva sedan tillbaka det. Tänk på att skriva en fil kommer sannolikt att innebära att du skriver till många block, så det här kan introducera en betydande mängd ytterligare fördröjningar.
TRIM konsoliderar inte delvis fyllda block
Om du fyller en enhet till kapacitet eller nära kapacitet, är det troligt att du kommer att sluta med många delvis fyllda block när du har raderat filer. TRIM-kommandot styr bara en solid state-enhet för att ta bort fildata när filen är raderad. Det tvingar inte enheten att göra någon form av rengöring.
Med andra ord, fyll i en solid state-enhet till kapacitet innan du tar bort filer och du kommer sannolikt att sluta med många delvis fyllda block. Enheten kommer inte att gå ut ur sin väg för att konsolidera dessa delvis fyllda blocken i hela blocken och frigöra tomma block. Enheten kommer fortfarande vara full av delvis fyllda block och skrivresultatet försämras.
Overprovisioning and Garbage Collection
För att förhindra att konsumenterna fyller i solid state-enheter och slutar med kraftigt försämrad prestanda, går SSD-tillverkare ut ur deras sätt att motverka detta.
Konsumentkvalificerade solid state-enheter sätter ofta cirka 7% av deras totala flashlagring och gör den otillgänglig för användaren. Detta kallas för överbetalda - extra hårdvara lagras till enheten men är inte synlig för datorn som tillgänglig lagring den kan använda. Reservutrymmet garanterar att enheten aldrig blir helt full - det kommer alltid att finnas lite extra kapacitet för att hålla skrivprestanda stabil.
Varje solid state-enhetens kontroller har en sopsamlingsalgoritm för att försöka mildra detta problem. När enheten blir full, kommer den att leta efter delvis fyllda block och börja konsolidera dem och frigöra så många tomma block som möjligt. Olika solid state-enheter kör dessa operationer vid olika tidpunkter och trösklar - det beror på enhetens kontroller.
Benchmark Evidence
Anandtech utförde en mängd olika riktmärken med olika enheter för att reta ut relationen mellan en solid-state-enhetens reservområde och konsistensen av sin skrivoperation. När de fyllde i en tom körning fann de hög skrivprestanda väldigt tidigt i processen och ett signifikant fall då skrivoperationerna fortsatte att fylla i enheten.
Att lägga åt mer reservområde på enheterna bidrog till att prestanda förblev konsekvent, eftersom det var säkert att enheten alltid skulle ha tillräckligt med tomma block.
De fann att "minsta prestanda förbättras väsentligt när du slår 25% extra utrymme för dessa [konsumentdrivna] enheter." Deras slutliga rekommendation var att du ska "planera att använda endast cirka 75% av [din enhetens] kapacitet om du vill ha en bra balans mellan prestanda konsistens och kapacitet. "
Om du har en solid state-enhet bör du försöka undvika att använda mer än 75% av sin kapacitet. Köp en större enhet med mer lagringsutrymme än vad du behöver och du kommer alltid att se till att du alltid har konsekvent skrivprestanda. Lyckligtvis blir SSD gradvis mycket billigare, så det här är inte så dyrt som det en gång var.
Bildkredit: Musik sortera på Wikimedia Commons, Simon Wüllhorst på Flickr