Tweakers.net heeft in het verleden baanbrekend werk verricht op het gebied van storage-benchmarks, maar soms moet je jezelf opnieuw uitvinden. Dit was het geval voor onze testprocedure voor ssd's en harde schijven. Onze nieuwe testmethodiek is het resultaat van vele jaren ervaring met het testen van harde schijven, raidadapters en solid state drives. De kern van ons nieuwe testprotocol is een uitgebreide set trace-based benchmarks, waarin opnames van de diskactiviteit van echte applicaties wordt teruggespeeld op de te testen drive. In deze .plan lees je alles over het hoe en waarom van de nieuwe benchmarks.
Low-level benchmarks: ongeschikt
Het testen van opslagproducten is van oudsher een discipline waarvoor nauwelijks goede kant-en-klare benchmarks beschikbaar zijn die de prestaties op een realistische manier meten. De meeste hardeschijfbenchmarks zijn synthetische tests voor low-level karakteristieken, zoals de media- en bufferdoorvoersnelheden, de toegangstijden en de random i/o-prestaties. ATTO Disk Benchmark, HDTune, HDTach en CrystalMark zijn bekende voorbeelden van dergelijke benchmarks.
Synthetische benchmarks genereren workloads die weinig overeenkomsten met de praktijk hebben en zijn daarom geen goede methode om de prestaties van een opslagapparaat te testen. In de praktijk krijgen harde schijven en solid state drives een mix van sequentiële, random en cachebare i/o voor hun kiezen. In een desktopomgeving zal er vaak sprake zijn van een geringe belasting, maar als de gebruiker actief wordt, zal het regelmatig voorkomen dat een drive ineens door meerdere applicaties tegelijkertijd wordt benaderd. De prestaties worden door een combinatie van de volgende factoren bepaald:
- Media: de doorvoersnelheid en latency van het fysieke medium, zoals flashgeheugen of magnetische schijven;
- Cache: het vermogen van lees- en schrijfbuffers om gegevens te cachen en de doorvoersnelheid en latency van deze buffers. Het gaat daarbij niet alleen om de cache van drives, maar ook van bijvoorbeeld raidadapters;
- Parallelliteit: het vermogen om meerdere gelijktijdige i/o's uit te voeren, bijvoorbeeld door meerdere drives in raid te draaien of door een combinatie van command queuing en meerkanaals flashgeheugen; en
- Interface: de latency en de bandbreedte van interfaces en i/o-processors, zoals de pci-express- en sata-interfaces en i/o-processors op raidadapters.
Low-level benchmarks zijn nuttig om inzicht te krijgen in de prestaties van een drive, maar in de praktijk tonen ze alleen factoren die de prestaties positief of negatief beïnvloeden, en niet de prestaties zelf. Om een goed idee te krijgen van de real-world prestaties van een drive is er maar één goede manier, en dat is om de disk-i/o van echte applicaties op de drive los te laten.
Er zijn twee methoden om tot een realistische belasting van de drives te komen. De eerste is het gebruik van applicatiebenchmarks, die de tijd meten waarbinnen een applicatie een bepaalde taak uitvoert. De tweede methode is het vastleggen van de disk-i/o van workloads met een zogeheten trace, die vervolgens eindeloos op exact dezelfde wijze teruggespeeld kan worden. De prestaties kunnen vervolgens gemeten worden aan de hand van de gemiddelde responstijd of de doorvoersnelheid.
Trace-based benchmarks: geschikt
Aan het gebruik van applicatiebenchmarks kleven allerlei nadelen. Zo is het niet eenvoudig om complexe handelingen steeds op exact dezelfde wijze te herhalen, helemaal als ook multitasking-scenario's nagespeeld moeten worden. Een minstens zo groot nadeel is dat de prestaties niet enkel door het opslagsysteem worden bepaald, maar ook door factoren als de snelheid van de processor, het geheugen en de videokaart. Dat is prima als we de totale systeemprestaties willen meten, maar onwenselijk als we de prestaties van individuele componenten - in dit geval: harde schijven of solid state drives - willen vergelijken.
We willen immers weten hoe deze drives in vergelijking tot elkaar presteren, zonder dat er allerlei externe bottlenecks meespelen, die voor elke gebruiker anders zijn. Trace-based benchmarks zijn de perfecte oplossing voor dit probleem. Zij maken het mogelijk om realistische workloads na te bootsen die uitstekend repetitief uitgevoerd kunnen worden en enkel de prestaties van het opslagsubsysteem meten. De kern van ons nieuwe testprotocol wordt daarom opnieuw gevormd door een uitgebreide set trace-based benchmarks.
De beschikbaarheid van trace-based benchmarks voor ssd's en harde schijven is beperkt. PCMark Vantage is een veelgebruikte trace-based benchmark, maar heeft een tamelijk beperkte omvang. In het verleden heeft Tweakers.net ook de Intel Ipeak Storage Performance Toolkit gebruikt om traces op te nemen en af te spelen. Ipeak SPT was een zeer krachtige tool waarmee een diepgaande analyse gemaakt kon worden van de prestaties van opslagapparatuur. Helaas is er sinds 1999 geen nieuwe versie meer uitgekomen. Het recentste besturingssysteem waarop Ipeak SPT draait, is de 32bits versie van Windows XP. Het moge duidelijk zijn dat dit pakket niet langer gebruikt kan worden.
Gelukkig heeft Intel een paar jaar geleden onder de naam NAS Performance Toolkit een nieuwe tool voor het draaien van trace-based benchmarks uitgebracht. Hoewel de naam suggereert dat deze software alleen geschikt is voor het testen van nas-apparatuur, leent deze toolkit zich ook uitstekend voor het benchen van harde schijven, solid state drives en raidadapters. Hoewel NASPT de mogelijkheid biedt om traces af te spelen, ontbreekt een tool om traces op te nemen. Tweakers.net heeft daarom een eigen conversietool gebouwd om traces van de Process Monitor om te zetten naar een formaat dat de NAS Performance Toolkit snapt.
Een belangrijk verschil tussen de NAS Performance Toolkit en de Ipeak Storage Performance Toolkit is dat de eerste het bestandssysteem test, terwijl de laatste direct block devices aanspreekt. De cache van het bestandssysteem heeft in NASPT daardoor invloed op de prestaties. Dit is onwenselijk, omdat enkel ongecachete benadering van het bestandssysteem in de traces is opgenomen. Om het effect van filesystemcaching te beperken wordt er getest op een systeem dat softwarematig is gelimiteerd op 1,5GB geheugen. Overigens bestaat dit systeem uit een H67-moederbord met een cpu uit Intels Sandy Bridge-line-up: de Core i5 2500K.
Een voordeel van de NAS Performance Toolkit is dat we eenvoudig de positie waarop een drive wordt getest kunnen variëren met behulp van de partitie-indeling. Dit is nuttig bij harde schijven die, naarmate de schijf meer naar de binnenkant van de platter wordt benaderd, minder presteren. De omtrek van de sporen op de platter is daar immers kleiner waardoor er per omwenteling minder gegevens ingelezen of weggeschreven kunnen worden.
In ons nieuwe testprotocol draaien we voor hdd's drie runs van onze benchmarks. De eerste begint op de buitenste sporen van de schijf, de tweede op eenderde van de capaciteit en de derde op tweederde van de capaciteit. Met de Ipeak Storage Performance Toolkit hadden we die mogelijkheid niet: daar werden altijd vaste blokadressen benaderd. Omdat de traces waren opgenomen op een Raptor van 73GB, werd in de praktijk alleen de eerste 70GB van harde schijven getest. Bij de grote harde schijven van tegenwoordig is dat niet meer realistisch. Van een 2TB-harddisk zou alleen de eerste vijf procent van de capaciteit getest worden, waar de prestaties het hoogst zijn.
Onze methodiek
Bij het testen van ssd's draaien we eveneens drie runs, maar schuiven we niet met partities. Wel testen we in de drie runs met verschillende hoeveelheden beschreven capaciteit op de drives. Bij de eerste run wordt er een partitie van 90GB gemaakt, die met circa 80GB aan data wordt beschreven. Dit is de data die tijdens de tests daadwerkelijk benaderd wordt. Voor het begin van de tweede run wordt de helft van de resterende ongepartioneerde capaciteit volgeschreven met willekeurige data. Voor de derde run wordt de resterende ongepartitioneerde capaciteit beschreven. Er resteert dan nog ongeveer 10GB vrije capaciteit op de drive, waarvan tijdens de tests ongeveer 4GB gebruikt wordt. Met de tweede en derde run simuleren we dat de drive tijdens zijn levenscyclus voller raakt; zo zien we eventueel prestatieverlies als gevolg van een afnemend aantal vrije geheugenblokken.
In de praktijk is het aannemelijk dat gebruikers van een ssd met een capaciteit van 120GB of groter minstens 10GB capaciteit zullen vrijlaten. Om de effecten van een extreem lage hoeveelheid vrije capaciteit te testen, voeren we eventueel nog een vierde run uit, waarin nog eens 6GB van de testpartitie wordt volgeschreven. Er resteert dan 4GB vrije ruimte, precies het minimum om de tests te kunnen uitvoeren. De resultaten van deze run worden niet meegewogen in het prestatiegemiddelde van de drive.
De tests zelf bestaan uit 23 traces waarin de volgende activiteiten plaatsvinden:
- Boot trace: twee traces van het booten van Windows 7 en het starten van diverse applicaties op twee verschillende systemen;
- Desktop workload: het opvragen van websites met veel afbeeldingen, het doorzoeken van een 5GB grote mailbox, het openen van documenten in een tekstverwerker, het bekijken van grote pdf-documenten, het bekijken van kleine afbeeldingen in Photoshop, bestanden comprimeren, muziek beluisteren in iTunes en het doorzoeken van een iTunes-collectie;
- Graphics workstation: het bewerken van meerdere zeer grote bestanden in Photoshop CS5, het importeren van 25-megapixelfoto's in Lightroom 3 en het browsen door een Lightroom-catalogus;
- Video-editing workstation: het editen van een uitgebreid project in Sony Vegas Pro 9.0 met lossless gecomprimeerde full hd-video;
- Software install: het op de achtergrond installeren van Photoshop CS5, terwijl de gebruiker op de voorgrond zijn e-mailarchief gebruikt, websites bekijkt en bestanden downloadt;
- Data workloads: traces van handelingen waarin uitsluitend met data gewerkt wordt. Bevat een bestandscompressietrace, een trace met uitsluitend de activiteit op de datapartities van de Graphics en Video-editingworkstationtraces, en file copy traces voor respectievelijk grote, middelgrote en kleine bestanden op drie manieren: naar disk, van disk en op disk, waarbij bron en doel op dezelfde drive staan; en
- Gaming: traces van het opstarten en het laden van levels in de games Call of Duty: Black Ops, Call of Duty: Modern Warfare 2, Dawn of War, Dirt en Stalker: Call of Pripyat.
In totaal wordt er voor deze 23 traces 43,2GB aan data gelezen en 36,8GB aan gegevens geschreven. Bij het voorbereiden van de testdata wordt er 77,6GB aan bestanden naar de drive geschreven. Tijdens de voorbereiding en in de drie testruns wordt dus in totaal 188GB geschreven en 129GB gelezen. Ook wordt tussen de runs door de ongebruikte capaciteit van de drive minus 10GB volgeschreven met willekeurige data.
De NAS Performance Toolkit schrijft willekeurig gegenereerde data weg, die met een eenvoudig compressiealgoritme nauwelijks gecomprimeerd kan worden. Dit is van belang omdat ssd's met een SandForce-controller datacompressie gebruiken. In de praktijk is veel data van bijvoorbeeld jpeg-afbeeldingen en h.264-video's al zodanig gecomprimeerd dat een SandForce-controller hier geen winst op kan behalen.
Verder biedt de NAS Performance Toolkit de mogelijkheid om traces terug te spelen op 'full speed' of juist met behoud van de originele timing. In het eerste geval wordt de drive maximaal belast en wordt er bij elke gelegenheid een i/o op de drive afgevuurd. Het resultaat is in dat geval meetbaar als doorvoersnelheid in megabytes per seconde. Bij het behoud van de originele timing wordt een request gedaan op hetzelfde moment als bij het opnemen van de trace. Als een drive de timing van de originele trace niet kan bijhouden, wordt getracht om de verloren tijd later in te halen. Als resultaat wordt hier de gemiddelde responstijd van de requests gemeten. De NAS Performance Toolkit geeft ook de gemiddelde responstijden van de afzonderlijke lees- en schrijfrequests. Hiermee kunnen we inzicht krijgen in de relatieve lees- en schrijfprestaties van een drive.
De resultaten van de 23 traces zijn veel te gedetailleerd om in een review behandeld te worden. In plaats daarvan verwerken we de prestaties van de traces in vijf prestatie-indices: Boot StorageMark 2011, Office StorageMark 2011, Workstation StorageMark 2011, Gaming StorageMark 2011 en Data StorageMark 2011. De laatste index bevat enkel data workloads en is voornamelijk bedoeld om de prestaties van externe harde schijven en nas-apparaten te vergelijken.
Net als in de eerdere versies van ons StorageMark-testprotocol staat het indexgetal 100 gelijk aan de prestaties van de Western Digital Raptor WD360GD. Deze eerstegeneratie-Raptor was als eerste 10.000-toeren sata-drive destijds een mijlpaal in de geschiedenis van de harde schijf. Door de indexcijfers op de prestaties van deze drive te baseren, zijn de resultaten van onze nieuwe testsuite in elk geval enigzins vergelijkbaar met oudere tests.