Ja sorry, maar het is eigenlijk wel een f*ckin' lange post geworden.

Omdat bij de tweede benchmark run de SSD die weer anders uitvoert; dat heeft met het hele ontwerp van een SSD te maken die alleen snel kan zijn door veel intelligentie in de controller te proppen. Kale NAND met een oersimpele controller kan heel snel zijn in sequentieel I/O maar het schrijven van een paar kilobyte levert problemen op en maakt dat het als een floppydrive aanvoelt.
Nu hebben we intelligente controllers die een buffer hebben (DRAM of SRAM) en het belangrijkste: write remapping gebruiken; dus hoe windows denkt dat de informatie is ingedeeld wijkt af van hoe het fysiek wordt opgeslagen. Als je naar sector 1 schrijft kan zijn dat je ergens willekeurig op een fysieke locatie schrijft. En de volgende keer dat je naar die factor schrijft, schrijf je eigenlijk fysiek wéér naar een andere locatie; dus een virtual LBA <-> physical NAND tabel wordt onderhouden om dit alles mogelijk te maken. Dit voegt veel complexiteit toe aan de SSD controller, maar ook veel potentiële performance gains.
Dit alles maakt wel dat benchmarken erg moeilijk wordt. Zeker als controllers zoals Sandforce ook nog compressie gaan toepassen. Leuk die 250MB/s write met ATTO, maar dat is gebakken lucht. Fysiek zou je maar een paar kilobyte hoeven te schrijven om dertig miljard nulletjes op te slaan, alhoewel die ratio wel iets lager zal liggen in de praktijk. Maargoed dan wordt de benchmark dus nutteloos. Want wij hebben geen gigabyte-grote bestanden met alleen maar nullen erin. Grote bestanden zijn voornamelijk binary en vaak al gecomprimeerd; een film, muziek, plaatjes, een archive; allemaal al gecomprimeerd.
Dus SSDs benchmarken is echt moeilijk. IBM Zürich heeft een goede poging gedaan, en door SSDs eerst een warming up te geven door random writes toe te passen en de SSDs in een 'stable state' te krijgen waarbij de performance zijn piek naar beneden heeft gehad en nu een stuk minder presteert maar wel redelijk stabiel. Sommige SSDs zijn nu al ernstig ingekakt qua performance.
Uiteindelijk gaat het erom wat voor ervaring je in real life krijgt, en ik denk dat je dus beter aan stopwatch tests en subjectieve ervaringen kunt doen, dan proberen een cijfer te krijgen en basis daarvan te vergelijken; dat is echt niet zo makkelijk. Je kunt wel zeggen dat een SSD in een free state 70.000 IOps doet met random write bij een bepaalde queue depth; maar dat zijn synthetische testjes die een bepaalde handeling tig keer herhalen. Veel interessanter wordt het als je de SSD echt gaat gebruiken en hoezeer de performance aftakelt door de afname van spare space. Een nieuwe verse SSD heeft 100% spare space en als je alles beschreven hebt nog maar 6.8%; het verschil tussen GiB en GB wat SSD makers aanhouden om storage capaciteit af te snoepen van de fysieke NAND chips, en te gebruiken als spare space.
Wat ik hiermee bedoel is het volgende: NCQ zorgt ervoor dat een ssd/hdd eerst wat host actions kan bufferen, daarna deze dingen op een zo efficient mogelijke manier kan uitvoeren en vervolgens het resultaat weer kan terugpoepen. Zonder NCQ is elke kleine schrijf/leesactie een actie op zich, waarvoor de drive een sector moet opzoeken, uitlezen/schrijven en returnen.
NCQ is een techniek die hardeschijven snellere seeks zou moeten geven, door de volgorde van de commando's te veranderen; eigenlijk dus omdat Windows de schijf als een gek liet seeken. NCQ voor HDDs is nooit écht een sexy feature geweest; HDDs blijven seriële apparaten en kunnen maar één ding tegelijk.
SSDs zijn heel anders, en NCQ was er al toen SSDs doorbraken (na de MTron-generatie). De Intel controller is de eerste die NCQ inzette. Voor SSDs is NCQ iets heel anders. Dezelfde techniek maar voor een ander doel: de SSD van werk te voorzien! Met slechts één queue depth zal de SSD bij random reads ook maar één channel kunnen gebruiken. Aangezien de Intel 10 kanalen heeft, kun je dus je random reads tot een factor 10 verhogen met een hogere queue depth, wat dus NCQ mogelijk maakt. Met qd=10 kan het nog steeds zijn dat je twee of meer requests op hetzelfde kanaal gooit, dus pas bij 32/64 QD zie je verzadiging optreden. SATA NCQ kan tot 32 queued I/O's; SAS tot iets van 128 dacht ik.
queue-depth 1 sequential I/O zou eigenlijk ook heel traag moeten zijn, maar dat is het niet:
- reads worden door de SSD/HDD intern van 'queue depth' voorzien; ook wel bekend als read-ahead
- writes worden gebuffered en bouwt dus automatisch een queue op, ook bij qd=1 random write
Het enige waar je niet omheen kan zijn de random reads, en daarvoor wil je dus een hoge queue depth hebben met name voor SSDs.
bij een volle queue zit je zowat op sequentiële prestaties. Dit zie je ook in CDM terug bijvoorbeeld.
Ja en dat is ook de kracht van SSDs; ze kunnen meerdere dingen tegelijk doen en random I/O hoeft - in theorie - helemaal niet trager te zijn dan sequentieel I/O; heel anders bij een HDD waarbij dat gewoon een fysiek gegeven is en dus is random I/O bij mechanische schijven gewoon theoretisch beperkt. HDDs zullen nooit random I/O goed kunnen doen; SSDs met een goede controller kunnen even snel random I/O doen dan sequentieel I/O, aangenomen dat de queue depth hoog genoeg is.
Om nog maar niet te spreken over de combinatie van AAM en NCQ

AAM zou ook niet direct met NCQ te maken moeten hebben. AAM is de balans tussen stille seeks en snelle seeks. Door meer stroom te gebruiken om de 'head' naar de juiste positie te krijgen, kun je seektimes verlagen. De rotational latency blijft natuurlijk gelijk; dus voor de totale access time (seek time + rotational delay) zou het niets uit hoeven maken; dus soms wel en soms niet. Echt heel veel invloed zou AAM niet mogen hebben, maar sommige HDDs komen standaard met andere AAM instellingen en prefereren dus bijvoorbeeld stilte boven snellere seektime; dat ga je in vooral synthetische benchmarks wel terugzien maar in echt gebruik niet zo omdat de rotational delay dit effect min of meer maskeert.
Veel HDDs doen het uitstekend bij random reads/writes @QD=32. Access time is natuurlijk nog steeds brak.
Deze uitspraak snap ik niet zo. Is 0.4MB/s 'uitstekend'? 200MB/s+ is toch veel beter? De grootste verschillen tussen SSDs en HDDs zie je als je random I/O doet op hoge queue depth. Bij transfer sizes zo laag als 512 bytes is het verschil het meest extreem: max 50-80 IOps versus 70.000+ voor de SSD; dus zo'n factor 1000 sneller. Dat is ook de hele reden om een SSD te kiezen.
HDDs worden maar marginaal beter bij een hogere queue depth. Random reads kunnen wel een 30-50% boost krijgen van qd1 naar qd32 als je NCQ hebt. Maar dat dus factor 1.5; veel lager dan het voordeel dat SSDs halen.
Je moet de oude reviews van die site ook wel bekijken door een bril van 10 jaar geleden. Zelfs de beste reviewsites waren toen totale amateurs vergeleken met de brakste sites nu, om het maar een beetje overdreven te zeggen.
Ja misschien, maar blaas dan niet zo hoog van de toren, vind ik. Zeker een site met de reputatie van SR, en dan samen met AnandTech van leer trekken en mensen die RAID0 draaien dom noemen.
En hoe zijn ze tot die onzinnige conclusie gekomen? Juist, met neme de
slechtste RAID-hardware die maar mogelijk is, een Promise FastTrak TX-150 op PCI bus met verschrikkelijk crappy Promise FakeRAID drivers en met een veels te lage stripesize én om het nog helemaal een slagroom-toefje te geven ook nog misaligned partitions. Jezus allemachtig wat een kneuzen! Is er dan niemand die wél weet hoe je een review moet maken?
Ik sta er versteld van hoe weinig kennis er is op populaire reviewsites. Omdat ik me er in heb verdiept heb ik meer dan gemiddelde kennis opgebouwd, maar ik verbaas me hoe slecht het gesteld is met de kennis van mensen waar je het van mag verwachten; de reviewsites; voor die mensen is het hun werk! En dan bedoel ik niet IT systemen inzetten in een bedrijfsomgeving, maar ze te analyseren, bestuderen, uitleggen hoe het werkt, uitleggen wat van belang is. In dat opzicht falen deze sites dan ook grotendeels. Men propt wat leuke cijfertjes in een mooi grafiekje en zonder veel duidelijke uitleg wordt er naar de conclusie toegewerkt; weinig inzichtvol en weinig leervol en soms ook nog eens compleet onjuist door een foutieve testmethode.
Dus in dat licht, nee, ik kan het ze niet vergeven. Teveel mensen geloven alles wat ze zeggen, en inzichtvolle theorien of ervaringen op fora worden terzijde geschoven; "ik vertrouw toch eerder op een respectabele site als AnandTech dan jouw theoriën". Afijn.

Niet dat dat iets goedpraat ofzo. Ik bedoel, je zegt het zelf al: storage is op zijn tijd veel lastiger om te begrijpen dan je aan de oppervlakte zou denken. RAID, de werking van SSDs en ZFS zijn zaken waar een hoop mensen wat over proberen te zeggen maar bijna niemand écht goede in-depth kennis van heeft. Het is geen wonder dat er zoveel onzin, onbegrip etc. over bestaat.
Je hebt onder Windows ook geen idee wat er allemaal gebeurt qua I/O op het systeem. Je kunt geeneens IOwait zien. Nadat ik jaren geleden me in Linux en daarna UNIX heb verdiept, heb ik echt veel geleerd van storage en hoe I/O werkt. Gewoon om dat je ZIET wat je oet. Je benchmarkt en je ziet wat er echt gebeurt.
Maar je hebt wel gelijk; niemand weet alles wat een bepaald onderwerp, en bestaande kennis wordt ingehaald door nieuwere technieken waardoor de eerder vastgestelde mening/opvatting moet worden aangepast. Maar hey daar zijn reviewsites toch voor, die horen dat toch bij te houden en ons te informeren? In dat opzicht zijn ze zeker niet geslaagd.
offtopic:
Word nu wel offtopic maar wil nog één ding noemen: het feit dat nergens wordt uitgelegd hoe windows fakeRAID/onboardRAID/driverRAID werkt en waarom mensen uitgevallen schijven en 'gefaalde 'arrays krijgen met disks die gewoon nog draaien. Zoveel mensen die hier last van hebben en over het hoe en waarom mag je in het duister grijpen; "ja die controller werkt niet lekker met mijn schijven" krijg je dan te horen. Ja ik zou ook gaan gissen zonder betrouwbare en goed beschikbare informatie....