Nu vroeg ik mij af of sata 2 vergeleken met sata 3 een bottleneck is voor de IOPS die een SSD haalt?
Zowel ja als nee. Voor de belangrijkste performance specificatie van SSDs - de 4K random read IOps met enkele queue depth (20-35MB/s) is latency het enige wat telt. Dit type performance spec is de belangrijkste reden dat SSDs zoveel sneller en snappier aanvoelen versus hardeschijven.
20 tot 35MB/s ligt natuurlijk ver beneden de 300MB/s bandbreedte van SATA/300. Betekent dit dan ook dat het helemaal niets uitmaakt of je SATA/300 of SATA/600 gebruikt? Dit is iets wat heel veel mensen positief zouden beantwoorden. Maar het goede antwoord is dat het wel degelijk uitmaakt, SATA/600 kan zo'n 20% verbetering geven op IOps ook al zit je ver beneden de grens voor bandbreedte. De reden hiervoor is dat SATA/600 een lagere latency heeft, vooral voor 4K random read IOps is latency een 100% bottleneck.
4K random read IOps kort uitgelegd: als elke seconde telt. Een ambulance moet van plek A naar plek B over de weg. Of je nou drie duizend ambulances laat rijden of één, de afstand (latency) is het enige wat telt. Dus als het 10 minuten duurt, is dat de latency. De bandbreedte is de wegcapaciteit dat je ofwel één maar ook drie duizend (300MB/s) ambulances kunt rijden. Maar allemaal hebben ze een latency van 10 minuten. Leuk dus dat je er heel veel tegelijk kunt sturen, maar wat in dit geval telt is gewoon de tijd dat er één zo snel mogelijk ter plaats kan zijn.
Doorvoersnelheid (
throughput) is heel wat anders. Dat kun je zien als 100 duizend kilo aardappelen die je van A naar B moet krijgen. Hoe lang een enkele vrachtwagen duurt tussen punt A of B (de latency) is onbelangrijk, het enige wat telt is hoe lang het duurt voordat je alle aardappelen op plek B hebt gekregen. Dus tig vrachtwagens die tegelijkertijd rijden op de weg geeft dan meer vrachtcapaciteit dan een snelle sportwagen die veel sneller ter plaatse is (lagere latency) maar weinig vrachtcapaciteit (throughput) heeft. In dit geval is SATA/600 een grote verbetering omdat de wegcapaciteit verdubbelt: je hebt twee keer zoveel rijbanen, simpel gezegd dus je kunt ook meer vrachtwagens tegelijkertijd laten rijden.
Het aantal IOPS is afhankelijk van de schijf die achter de interface hangt, niet de interface zelf. De interface beperkt alleen de beschikbare bandbreedte.
Dit klopt dus niet helemaal. Ook bij 30MB/s aan random read IOps is de interface een gedeelte van de bottleneck. De interface zelf voegt namelijk vertraging toe (latency) voor de ambulance die simpelweg zo snel mogelijk ter plaatse moet zijn. Dit wordt met een deftig woord
propagation delay genoemd.
Hetzelfde geldt voor PCI-express 1 versus 2 versus 3. Een PCIe 2.0 x4 apparaat is sneller/beter dan een PCIe 1.0 x8 interface, ook al is de bandbreedte hetzelfde - de latency is iets lager doordat de interface minder tijd nodig heeft om een enkele I/O stroom over te brengen. Het effect is maar 20% - de interface is slechts deel van een grote keten die latency toevoegt tot het geheel (totale latency).
Als ik heel eerlijk mag zijn: dit is allemaal leuk vanuit academisch oogpunt, maar in de praktijk ga je er gewoon weinig van merken. SATA/300 is snel zat, de hogere IOps ga je echt niet onderscheiden van het Placebo-effect (dat je dénkt dat iets sneller is). Een Crucial M4 op SATA/300 is gewoon al snel zat. Het enige waar je mogelijk wat verschil merkt versus twee SSDs in RAID0 op SATA/600 dus 1GB/s is:
- 1) kopiëeracties op de SSD zelf of vanaf een andere snelle bron (zeldzaam voor SSDs).
- 2) inladen van spellen/levels (sequential read is hoger)
- 3) installeren van (Windows) updates (sequential/random writes)
Voor de rest zul je weinig merken tussen een optimaal presterende Crucial M4 en een bloedsnelle SATA/600 configuratie in RAID0 met 2 SSDs. Een enkele SSD is gewoon al heel erg snel. 100 duizend IOps ga je never nooit bereiken in de praktijk; je moet echt een brute serverload hebben om de SSD zo heftig te kunnen belasten. We komen van 60 IOps voor een hardeschijf; bij 6000 IOPS is dit al 100 keer zo snel. Je kunt de bottleneck niet eindeloos blijven verlagen omdat je last krijgt van
diminishing returns.