Voor leesacties, voor schrijfacties kan de latency prima 50ms of meer bedragen. Dat zijn niet meer dan 20 I/O's per seconde.
Zonder intelligente controller chip heb je dus waardeloze performance, vandaar het grote verschil tussen chip-loze of light-chipped SSDs (iig de eerste Transcend serie) en SSDs met proprietary firmware chips zoals Mtron/Samsung. Sneller flash geheugen kan de snelheid nog iets opkrikken, maar de basis is een goede controllerchip om optimaal gebruik te kunnen maken van het medium (flashcells).
Of begrijp ik het mis wat het voordeel is ten opzichte van standaard hardeschijven in deze situatie?
Het
grote verschil tussen een
mechanische hardeschijf en
solid state storage zoals flash SSDs, is het feit dat de hardeschijf maar één leeskop heeft en dus maar één ding tegelijk kan doen. De 16MB buffercache op de schijven is ook voornamelijk bedoeld als write-cache, aangezien zonder enige vorm van buffer deze hardeschijven maximaal zo'n 800KB/s sequential write behalen. Om hardeschijven een beetje snel te laten presteren, wordt
firmware van zo'n 400.000 regels code gebruikt. Sommige code hiervan is nog nooit herschreven over de jaren en dus decennia oud. Geen enkele fabrikant heeft zich tot dusver (en afaik) tot een poging van een algehele re-write gewaagd. Flash fabrikanten moeten dit nu wel doen, firmware voor hardeschijven is simpelweg niet toepasbaar op flash.
Flash daarintegen, kan meerdere cells
tegelijkertijd aanspreken. Ook de
contiguity van de requests maakt niet meer uit: of je nou sectoren 10-1-6-3-4-9-2-5-8 inleest of 1-2-3-4-5-6-7-8-9-10 maakt voor het flash geheugen geen verschil. Vandaar ook het grote verschil in performance tussen Mtron SSD en Raptor HDD in random read benchmarks. De hardeschijf heeft met zijn enkele leeskop geen kans in deze benchmark. Een grote array en dikke controller kan de pijn iets verzachten - maar het blijft slecht. Dit is dan ook een worst-case scenario voor hardeschijven, maar veel dingen zoals een applicatie opstarten of een zoekactie verrichten komen dicht in de buurt van random I/O. Theoretisch gezien kan een SSD deze requests allemaal in één keer verwerken, en daarvoor ook niet langer de tijd nemen dan het verwerken van slechts één request. Alhoewel in de praktijk de controller altijd een eigen latency.
Conclusie: de huidige SSDs zijn nog van een eerste generatie; vele zullen volgen met nog véél hogere hogere performance. Daarvoor zijn dan wel veranderingen nodig aan besturingsystemen en filesystems, zodat deze meer I/O requests in één keer stuurt:
asynchronous I/O.
Performance ook afhankelijk van OS en filesystem
Een voorwaarde voor snellere SSDs is wel dat de software, filesystem en besturingsysteem de SSD controller in staat stelt om hoge performance af te leveren. Als je besturingssysteem eerst om sector 10 vraagt, wacht tot die terug is en daarna pas om de volgende sector (1) vraagt, etc, dan is dat erg traag. De controller kan dan geen optimalisaties toepassen voor deze zogenaamde
synchronous of
blocking I/O. Om deze reden passen drivers/hardeschijven/controllers en RAID-mechanismen 'read-ahead' toe. Als sector 1 wordt opgevraagd, zal deze alvast volgende sectoren gaan inlezen en paraat houden in RAM geheugen. Als inderdaad het OS om deze sectoren vraagt is de verwerkingstijd nihil en de performance dus heel hoog. Maar als het een random-achtig patroon is, zorgt read-ahead juist voor performance degradatie.
Een slimmere variant,
adaptive read-ahead, leest alleen vooruit indien een sequentiëel I/O patroon wordt ontdekt, zoals twee aaneensluitende (contiguous) I/O requests. Deze variant wordt vaak in high-end RAID-controllers gevonden. Read-ahead kan alleen sequentiële I/O versnellen, eigenlijk om een gebrekkig filesystem/OS te compenseren.
De toekomst
De SSD markt is nog nieuw, de performance van flash geheugen is theoretisch vrijwel oneindig, alleen zal het wiel opnieuw uitgevonden moeten worden. Firmware en 'zware' controllerchips zullen nodig zijn om de potentie van flash ten volle te benutten. Eveneens zullen delen van Windows en andere software ook herschreven moeten worden om hoge performance mogelijk te maken: met asynchrone I/O die de SSD controller in staat stelt I/O tegelijkertijd uit te voeren.
P.S. sorry voor de lengte

als ik eenmaal begin....