quote:
Leg uit.

quote:
Een belangrijke parameter bij de verschillende benchmarks is de blokgrootte die gebruikt wordt om de requests te maken. Laten we dit gemakshalve de request size noemen.
Stel dat we uitgaan van een Raid0 configuratie met vier HD's en een striping size van 32KB. De ideale request size is dan 4x32KB = 128KB.
Nee, dan verlies je het effect van parallellisatie. Je hebt dan een situatie waarbij 4 hardeschijven die in staat zijn te seeken allemaal ingezet worden voor één I/O operatie. Je throughput kan hierdoor wel hoger worden, maar je verliest significant aan performance zodra de I/O stroom ingewikkelder wordt, zoals bij het uitpakken van bestanden, laden van programma's en andere taken die niet sequentiëel gebeuren.
Het beste heb je een stripesize van 128KB tot 1MB zodat een enkele I/O request door één schijf behandeld kan worden, dan kan de volgende I/O request door de volgende schijf behandeld worden, enzovoorts. Dat is de theorie, in de praktijk haal je natuurlijk nooit de 100% verbetering omdat requests niet altijd op de juiste 'schijf' belanden; met andere woorden de 'load' is niet eerlijk verdeeld over de schijven. Daar doe je weinig aan, tenzij je een goede controller hebt zoals Areca die aan request reordering doet.
quote:
Als de request size in HD Tune is ingesteld op 128KB zul je dus (in theorie) de maximale snelheid halen.
Klopt maar je verliest significant aan andere vormen van I/O en ik denk dat het niet vaak voor komt dat je met 200MB/s iets moet lezen of schrijven maar veel vaker voorkomt (zeg 99,9%) dat je schijven bottleneck zijn door non-sequentiële I/O.
quote:
Een quadcore CPU presteert pas optimaal als het vier verschillende instructies kan uitvoeren. Jouw vergelijking loopt hier dus al mank.
Nee, want als je een filesystem een bestand van zeg 700MB laat lezen (of 5MB dat maakt weinig uit), zal deze iets van 10 I/O requests veroorzaken. Dat is dus de read ahead resulterende in een hogere queue depth. Om maar even een analogie te maken: zoiets als 10 threads. Door deze techniek kunnen RAID-arrays hun potentie ook daadwerkelijk omzetten in performance. Maar iets als HDTune gebruikt dit niet, en is dus een synthetische benchmark die ongeschikt is voor het meten van performance op een RAID-array zoals je dat in een realistische omgeving zou krijgen. Niet gebruiken dus.
quote:
Een tweede fout maak je door te zeggen dat HD Tune de I/O requests rechtstreeks naar de fysieke hardware stuurt. Klopt niet. HD Tune stuurt de requests naar de driver van de fysieke hardware.
Oke heb je gelijk in. Strict genomen kan een applicatie nooit direct met hardware communiceren, dat gaat altijd via de HAL (Hardware Abstraction Layer) en dus via drivers. Wat ik bedoelde te zeggen is dat dit 'raw requests' zijn en geen API-calls van een filesystem. Te vergelijken met raw sockets ipv winsocket. Dit soort I/O wordt denk ik alleen gebruikt voor defragmenteren en andere low-level I/O. Niet erg belangrijk, het gaat er uiteindelijk om welke performance je krijgt via je filesystem.
quote:
Het lijkt me veel logischer dat eventuele optimalisaties in die driver zitten en niet in het filesysteem.
Het feit dat bijna alle filesystems dergelijke optimalisaties kennen, spreekt je tegen. Een driver weet niet met welk doel een filesystem zijn I/O uitvoert, dus om een soort prediction aan je driver toe te voegen kan teveel van het goede zijn. Toch zijn er drivers die dat doen, zoals van de Intel ICHxR RAID controller die aan low-level read-ahead doet. Kennelijk denkt Intel beter te kunnen optimaliseren dan het filesystem. Een andere mogelijkheid is dat Intel dit voornamelijk doet om synthetische benchmarks, zoals HDTune, op te krikken omdat dat is wat mensen zien en dus ook in HDTune een hoge score willen zien. Het zou niet voor het eerst zijn dat fabrikanten optimalisaties uitvoeren om beter in bekende benchmarks uit te komen (zoals nVidia met 3DMark en ATi met Quake3).
quote:
Of een request nu van een synthetische benchmark of een leesbewerking van Windows komt maakt voor de controller niets uit. Het zijn gewoon sectoren die gelezen of geschreven moeten worden.
Klopt, het verschil is dat het filesystem gelijk 10 requests stuurt die in één klap verwerkt kunnen worden door de controller/driver en dat synthetische benchmarks zoals HDTune 1 request sturen en daarna de volgende, etc.
quote:
Je zegt dat HD Tune maar een request tegelijk maakt en dan rustig op een antwoord wacht. Dat geldt uiteraard voor alle requests en dat is ook helemaal geen probleem voor een degelijk RAID systeem.
Hm je moet het concept van
Sliding Window eens bekijken:
Probeer deze flash-demo eens:
http://www2.rad.com/networks/2004/sliding_window/demo.html
Begin met een window size van 4, reken zelf de throughput uit per 10 seconde. Gebruik hierna een window size van 1, en je ziet wat HDTune doet ongeveer.
quote:
De excessieve CPU belasting (81.4%) doet mij toch al vermoeden dat er iets niet juist is.
Het is een hardware assisted controller, dus de driver besteed werk uit aan de CPU, dus een dergelijke CPU belasting is niet zo heel vreemd. Dat betekent overigens niet dat je dit tijdens normaal gebruik hebt, want non-sequentiele I/O is duidelijk bottlenecked aan de kant van de fysieke schijven, de rest van je systeem doet dan vrijwel geen flikker, gewoon wachten tot de schijven klaar zijn. Dit is ook de reden waarom storage performance zo belangrijk is, het is al een tijdje het meest trage onderdeel in je systeem. Zelfs een quadcore met 8GB geheugen kan nog retetraag zijn en daarom is RAID voor high-end systems ook zo interessant.
quote:
Mij heb je dus niet kunnen overtuigen dat HD Tune niet geschikt is om RAID systemen te testen.
Misschien nu wel? Maar ook al zou HDTune een juiste Sequentiele throughput rate geven, dan nog zegt dat niets over echte performance in een desktop-systeem, omdat daar bijna alle I/O niet strict sequentiëel is en vaak zelfs zwaar non-sequentiëel. Access time is een low-level statistiek die, net als kloksnelheid bij processors, niet direct te vertalen valt naar performance. Er zijn namelijk nog veel meer factoren die de uiteindelijke real-life performance bepalen. HDTune, net als ATTO en HDTach zijn alleen nuttig om de STR te bepalen, wat nog steeds niet heel veel zegt over de daadwerkelijke performance.