De 120GB versie heeft inderdaad een minder hoge sequential write dan gebruikelijk is voor moderne SSDs. Maar een dergelijk kleine SSD wordt veelal gebruikt als systeemschijf en daarvoor is sequential write juist vrijwel irrelevant. De 960GB versie daarentegen zal waarschijnlijk wel gebruikt worden om grote bestanden op te slaan; zoals een keer een gamecollectie van hardeschijf of NAS kopiëren en dat soort taken. Dan heb je mogelijk nog wel wat nut van de hogere sequential write. Maar sequential write is voor een SSD de minst belangrijke specificatie.
De belangrijkste performancekenmerken van SSDs in orde van meest belangrijk naar minder belangrijk:
- Random read - single queue depth (dit is voor alle SSDs rond de 20MB/s)
- Random write latency - lage queue depth (QD2 - QD8)
- Sequential read - queue depth is irrelevant; patroon is voorspelbaar
- High queue depth random read
- High queue depth random write
- Sequential write
Random read met enkele queue depth
De belangrijke performance specificatie is voor alle moderne SSDs vrijwel gelijk. De random read met single queue depth is altijd rond de 20MB/s omdat deze niet kan worden versnelt door de interne RAID0-achtige structuur van SSDs. Omdat het patroon 'random' is en dus niet voorspelbaar, kan de SSD nog niet aan de volgende I/O request beginnen zoals bijvoorbeeld wel bij sequential read mogelijk is omdat dit patroon voorspelbaar is. Resultaat is dat slechts één van de kanalen en één van de dies per channel effectief benut kan worden. Dat wil zeggen dat de SSD op 1/16e van zijn snelheid draait. Een goede analogie hiermee is een 16-core processor waarvan een programma slechts één core op volle snelheid benut. Zou er achtergrondactiviteit zijn, dan zijn de overige cores wel nuttig. Technisch gesproken kun je stellen dat het hier om pure latency gaat, en niet om (parallelle) throughput.
Deze specificatie is zo belangrijk omdat het voor zoveel desktoptaken wordt gebruikt. Onder andere booten/opstarten (zonder SuperFetch) en applicaties starten zijn sterk afhankelijk van dit type access patroon.
Omdat dit type access patroon zo belangrijk is maar voor alle SSDs ongeveer gelijk is, zijn de verschillen tussen SSDs voor consumenten ook nauwelijks te onderscheiden van placebo. Dat komt dus niet alleen omdat SSDs al bloedsnel zijn en sneller weinig meer uitmaakt, maar dus ook omdat het performanceaspect wat nog wel merkbaar verschil zou kunnen opleveren gelijk is voor alle SSDs.
Random write latency - QD2 - QD8
Random writes zijn 4K of 8K blokjes die weggeschreven worden wat vaak op een regelmatige burstachtige manier gebeurt. Dat wil zeggen dat een random write zelden alleen wordt uitgevoerd; vaak gebeurt het in kleine bosjes tegelijk. Dat komt omdat random writes vaker dan andere writes als synchronous writes worden uitgevoerd; writes die veilig moeten worden weggeschreven. Dit betekent in de praktijk dat er filesystem overhead bij komt kijken zoals journal en metadata.
Bij random write is de latency het enige van belang. Deze mag niet te hoog zijn. Echter, SSDs kunnen juist sterk variëren op latency bij writes. Dit komt omdat SSDs wellicht garbage collection moeten uitvoeren voordat een writeopdracht kan worden verwerkt. Met name bij gebruikte SSDs of zeer slechte SSDs. Een voorbeeld van een slechte SSD is de JMicron JMF-612 welke vooral bekend is onder de OCZ Core-series. Deze hadden zo'n hoge write latency dat je 'stotterende' prestaties kreeg en irritant gedrag van applicaties die tijdelijk bevroren. En soms zelfs blauwe schermen omdat de latency te hoog werd.
Intel is de laatste jaren bezig met
consistente prestaties in plaats van absoluut/gemiddeld hoge prestaties. In het bijzonder gaat het dan om write latency, de gemiddelde writelatency kan wel laag zijn, maar je moet ook de uitschieters - de maximale latency - in toom kunnen houden. Hier valt nog werk te verrichten voor SSDs.
Sequential read
Is ook belangrijk en merkbaar bij het starten van games en andere algemene taken. Omdat dit performanceaspect heel gemakkelijk te bereiken is met de RAID0-achtige interleavingtechnologie in SSDs, is dit dan ook een koud kunstje. De controller is vaak wel beperkt qua rekenkracht en de SATA-interface beperkt de sequential read ook enorm. Bedenk dat een 32GiB Crucial M4 (mSATA) al een sequential read heeft van 400MB/s. Zou je dit vertalen naar de 256GB versie dan kom je aan 3,2GB/s. Hier blijft echter maar 400 - 500MB/s van over afhankelijk van de firmware. Bij MLC NAND geldt dat lezen véél sneller is dan schrijven; ongeveer een factor 10 sneller. Dus als schrijven al 400MB/s is dan kun je raden wat de sequential read geweest had kunnen zijn. Helaas heb je bottlenecks als de SATA interface en de controller zelf die deze snelheid niet bij kunnen houden. Maar de potentie is er wel.
Random I/O met hoge queue depth
Queue depth wil zeggen een wachtrij aan I/O opdrachten die parallel kunnen worden uitgevoerd. Analoog hieraan zijn er programma's met meerdere
threads die op een multicore-processor gelijktijdig kunnen worden uitgevoerd. Een quadcore met een sterk multithreaded applicatie zal deze in potentie vier keer sneller kunnen uitvoeren dan een singlecore chip, zaken als turbocore niet meegerekend. Bij queue depth werkt het ongeveer hetzelfde, met als verschil dat een moderne SSD dus al tot 16 I/O-opdrachten gelijktijdig kan verwerken. Een RAID0 van twee moderne SSDs dus al tot 32 I/O opdrachten. Kortom: de sky is the limit hier.
In veel gevallen is het zeer lastig om in de praktijk een hoge queue depth te bereiken. Zie het meer dat de pieken niet voor vertraging kunnen zorgen. Als er een piek is van een grote wachtrij van I/O opdrachten, dan zuigt de SSD deze helemaal leeg. 16 opdrachten worden uitgevoerd in grofweg dezelfde tijd als dat één opdracht zou worden uitgevoerd. Dat vind ik persoonlijk erg cool. Dat is de kracht van het principe van interleaving, beter bekend als RAID0.
Sequential write
Grote bestanden schrijven is iets wat je zelden zult doen op SSDs, uitzonderingen daargelaten. In veel gevallen gaat het om clonen van SSDs of een spel overzetten van NAS of hardeschijf naar SSD. Echter, in heel veel gevallen is juist de bron de bottleneck. Een hardeschijf zal maximaal met 150MB/s kunnen lezen dus is de ~400MB/s sequential write van een bloedsnelle SSD vrijwel nutteloos. Ook met een NAS die via gigabit ethernet loopt heb je weinig aan de hoge sequential write.
Helaas is dit wel het enige aspect waar consumenten naar kijken en ook hun keuze op bepalen, terwijl de verschillen op dit gebied dus juist het minst interessant zijn. Maar dat gebeurt wel vaker, dat consumenten een product vergelijken op basis van irrelevante specificaties. Fabrikanten spelen hier gretig op in. Sandforce aan kop, die door de gebakken lucht specificaties 500MB/s sequential write biedt, terwijl dit enkel wordt bereikt als je nulletjes schrijft. Dit komt door de compressie- en deduplicatieengine van Sandforce. De werkelijke snelheid ligt tussen 35MB/s en 450MB/s in.
Conclusie
Prestatieverschillen tussen SSDs worden erg gehyped. Ook in benchmarks, omdat benchmarks een realistisch access patroon testen op de hoog mogelijke snelheid. Terwijl in de praktijk de I/O opdrachten met een pauze of interval worden uitgevoerd en niet tegen de hoogst mogelijke snelheid. Zo krijg je grotere verschillen tussen SSDs die kunstmatig zijn en een vertekend beeld geven. Maar zelfs dan zijn de verschillen tussen SSDs onderling erg klein.
Mijn advies is daarom om niet te kijken naar prestaties, maar wel naar prijs en betrouwbaarheid. Juist op deze gebieden zijn er wel verschillen tussen SSDs onderling, en juist de betrouwbaarheid is iets wat eigenlijk veel belangrijker is voor jou als eindgebruiker; een product waar je zonder gezeik jarenlang plezier van zult hebben. In mijn inschatting is Crucial M500 op dit moment dé SSD, omdat deze een goede mix heeft van prestaties, prijs en betrouwbarheid. Het is één van de weinige consumenten SSDs die de beschikking heeft over power-safe capacitors en dus niet zomaar corrupt zou mogen raken bij normaal gebruik.
Edit: zoals Phuncz terecht aangeeft bestaat er betrouwbaarheid op papier (de hardwarematige voorzieningen) en betrouwbaarheid in de praktijk. Dat laatste is lastiger te toetsen en is vooral afhankelijk van de tijd. Firmwaredefecten zijn inderdaad een groot probleem en bij elke nieuwe SSD moet deze zich nog bewijzen met stabiele firmware. Alle grote SSD merken hebben firmware dataloss bugs gehad, inclusief Intel, Sandforce en Marvell. Op basis hiervan kun je stellen dat de Intel 320 de meest betrouwbare consumenten SSD zou moeten zijn, omdat deze zowel op papier betrouwbaar is dankzij de voorzieningen (RAID4 bitcorrectie en power-safe capacitors) als dat deze een stabiele firmware heeft waarbij de bugs er inmiddels uit zijn. Nieuwe SSDs zoals de Crucial M500 kunnen nog verborgen firmwaredefecten hebben. Echter, deze SSD is wel stukken goedkoper per gigabyte en ook flink sneller dan de ietwat verouderde Intel 320 die hardwarematig dezelfde chip is als de klassieke Intel X25-M G2.
[
Voor 5% gewijzigd door
Verwijderd op 23-05-2013 18:46
]