Ik ben momenteel bezig met de analyse van een file server met slechte disk-performance. Ik weet dat het mis is, het is ook merkbaar en meetbaar, maar ik probeer het te quantificeren voor het management.
Het gaat om een Windows Storage Server met zo'n 5TB aan data, verdeeld over 3 SATA arrays, een 8 disk R6 array en 2x 4 disk R5 arrays. Alle disks zijn verdeeld over 2 cabinets aan 2 verschillende controllers. Dit is historisch zo gegroeid en de bron van de bottleneck. De server die dit alles aanstuurt begint oud te worden en loopt ook vaak te pieken in CPU, dus die moet ook vervangen worden.
De data bestaat uit zeer veel kleine en middelgrote files (ik schat >>1mln per array, niet fatsoenlijk te bepalen). Er wordt veel geschreven, dus meer IOPS en meer controller cache zullen een positief effect hebben. De aanvoer van data gaat over maximaal een 100Mb WAN connectie (wel 24/7), dus het is wel duidelijk dat het disk-systeem de bottleneck is. Het systeem staat eigenlijk alleen maar op zichzelf te wachten tot het een keer allemaal instort.
De constante cijfers uit Perfmon tijdens een korte meting spreken eigenlijk al boekdelen:
% disktime > 300% (50% limiet)
Average disk read queue ~2 (<2 limiet)
Average disk write queue >5 (<2 limiet)
Split I/O >100 (duidt oa op hoge fragmentatie wat klopt, >500k fragments in een file is geen uitzondering)
Het liefst adviseer ik in dit geval gewoon veel 2.5" SAS 15k Enterprise disks, maar daarvoor is geen geld. Het zal dus SATA moeten blijven. Wellicht zit er nog SAS Midline (7.2k) in, als de performance/aantal/prijs ratio beter uitvalt dan voor SATA. Ook wil ik proberen zo veel mogelijk van de bestaande investeringen te handhaven. Op de nominatie voor hergebruik staan in ieder geval de HP P600 controller (3G SAS, 1.5G SATA) en een MSA60 LFF behuizing en een aantal 3.5" 750GB SATA disks.
De gedachte is om met het berekende aantal disks te bepalen of controller en behuizing genoeg zijn en, zo niet, wat daar dan nog extra bij komt (MSA60 is te stacken op de P600). Met die disks maak ik dan 1 grote R6 array met meerdere logische disks (elk ~2TB). Het alternatief is meerdere R5 arrays en 1 of 2 hotspares, maar met de omvang en verwachtte groei voelt R6 veiliger. Uiteraard zal ik deze keer wel rekening houden met de stripesize, blocksize en partitie-alignment.
De data is cruciaal en kan slechts zeer beperkt offline, dus een inplace upgrade is noodzakelijk. Door de slechte performance is even een backup maken lastig geworden, de window is te kort en de data te dynamisch. Ik wilde dan ook de MSA60 afvullen met disks, evt een 2e MSA60 erbij als dit nodig is voor het aantal spindles. Dan de data verhuizen van de oude arrays naar de nieuwe en dan de cabinet(s) en controller omzetten naar een nieuwe server. Dit geeft me volgens mij het meest stabiele en betrouwbare upgrade pad.
Ik kan meten hoeveel performance er precies nodig is door de rest van de counters te analyseren (er staan nog 2 24-uurs metingen gepland, tellers voor cpu, mem, physical en logical disk), maar waar ik tegen aanloop is om dat om te zetten in aantallen disks. Ik kan wel een nummer pakken (bijv 200 IOPS voor de SAS en 100 voor de SATA), maar hoe reëel is dat? En hoe ga je van huidige IO niveau + queues, niet genoeg dus, naar het gewenste niveau met extra marge?
Ik heb geprobeerd IOPS-info over de disks te vinden op de site van HP of te herleiden met de info die ze wel hadden, maar daar kom ik maar niet uit. Ik heb ook geen mogelijkheden om dit zelf te meten met verschillende disks, dus ik moet ergens uit gaan van gegeven of geschatte waardes. Zonder deze getallen kan ik dus eigenlijk niks met mijn gemeten/te meten data en kan ik geen vergelijking maken tussen de kosten voor een SATA danwel SAS oplossing. Elk artikel op internet dat ik kan vinden gaat voornamelijk over het bepalen van het aantal benodigde IOPS, maar geen enkele over het aantal beschikbare. Whitepapers van HP over hun SATA en SAS drives levert eigenlijk ook niks op. Er wordt wel geschreven dat IOPS belangrijk zijn, maar er wordt niets gekwantificeerd voor de verschillende soorten drives.
Het enige dat ik na lang zoeken vind is een formule op een random site:
diskIOPS = 1 / ((1 / (diskRPM/60) /2) + diskSeekLatency/1000)
Hiermee kom ik voor HP-disks uit op 79 voor SATA en 182 voor 15k SAS.
Zojuist de eerste cijfers van een deelmeting van 14 uur door Excel gehaald, maar ik denk dat het ergens flink mis gaat.
Uitschieters zoals bij de CPU max zitten bijna in elke kolom zoals in de disk read/write queue (8E+16) en de Split I/O (1E+17). Disk read/sec en write/sec zit ook ergens rond de 1E+17 dus het lijkt er een beetje op dat óf ergens gaat iets helemaal mis met puntjes en komma's óf de server is zodanig overbelast dat meten geen reële cijfers meer oplevert.
Als ik wat formules gebruik van bijv de site Yellow-Bricks kom ik, voor een 30/70 lees/schrijf verhouding, al op 15 SAS of 38 SATA disks in R6 om slechts 100 IOPS te halen, maar met de gemeten cijfers weet ik nu nog steeds niet hoeveel ik er nodig heb.
Ik begin een beetje het gevoel te krijgen dat dit nog iets te hoog gegrepen is voor me
Elke input om tot een juiste berekening te komen of een correctie op mijn gedachtengang wordt zeer gewaardeerd.
Het gaat om een Windows Storage Server met zo'n 5TB aan data, verdeeld over 3 SATA arrays, een 8 disk R6 array en 2x 4 disk R5 arrays. Alle disks zijn verdeeld over 2 cabinets aan 2 verschillende controllers. Dit is historisch zo gegroeid en de bron van de bottleneck. De server die dit alles aanstuurt begint oud te worden en loopt ook vaak te pieken in CPU, dus die moet ook vervangen worden.
De data bestaat uit zeer veel kleine en middelgrote files (ik schat >>1mln per array, niet fatsoenlijk te bepalen). Er wordt veel geschreven, dus meer IOPS en meer controller cache zullen een positief effect hebben. De aanvoer van data gaat over maximaal een 100Mb WAN connectie (wel 24/7), dus het is wel duidelijk dat het disk-systeem de bottleneck is. Het systeem staat eigenlijk alleen maar op zichzelf te wachten tot het een keer allemaal instort.
De constante cijfers uit Perfmon tijdens een korte meting spreken eigenlijk al boekdelen:
% disktime > 300% (50% limiet)
Average disk read queue ~2 (<2 limiet)
Average disk write queue >5 (<2 limiet)
Split I/O >100 (duidt oa op hoge fragmentatie wat klopt, >500k fragments in een file is geen uitzondering)
Het liefst adviseer ik in dit geval gewoon veel 2.5" SAS 15k Enterprise disks, maar daarvoor is geen geld. Het zal dus SATA moeten blijven. Wellicht zit er nog SAS Midline (7.2k) in, als de performance/aantal/prijs ratio beter uitvalt dan voor SATA. Ook wil ik proberen zo veel mogelijk van de bestaande investeringen te handhaven. Op de nominatie voor hergebruik staan in ieder geval de HP P600 controller (3G SAS, 1.5G SATA) en een MSA60 LFF behuizing en een aantal 3.5" 750GB SATA disks.
De gedachte is om met het berekende aantal disks te bepalen of controller en behuizing genoeg zijn en, zo niet, wat daar dan nog extra bij komt (MSA60 is te stacken op de P600). Met die disks maak ik dan 1 grote R6 array met meerdere logische disks (elk ~2TB). Het alternatief is meerdere R5 arrays en 1 of 2 hotspares, maar met de omvang en verwachtte groei voelt R6 veiliger. Uiteraard zal ik deze keer wel rekening houden met de stripesize, blocksize en partitie-alignment.
De data is cruciaal en kan slechts zeer beperkt offline, dus een inplace upgrade is noodzakelijk. Door de slechte performance is even een backup maken lastig geworden, de window is te kort en de data te dynamisch. Ik wilde dan ook de MSA60 afvullen met disks, evt een 2e MSA60 erbij als dit nodig is voor het aantal spindles. Dan de data verhuizen van de oude arrays naar de nieuwe en dan de cabinet(s) en controller omzetten naar een nieuwe server. Dit geeft me volgens mij het meest stabiele en betrouwbare upgrade pad.
Ik kan meten hoeveel performance er precies nodig is door de rest van de counters te analyseren (er staan nog 2 24-uurs metingen gepland, tellers voor cpu, mem, physical en logical disk), maar waar ik tegen aanloop is om dat om te zetten in aantallen disks. Ik kan wel een nummer pakken (bijv 200 IOPS voor de SAS en 100 voor de SATA), maar hoe reëel is dat? En hoe ga je van huidige IO niveau + queues, niet genoeg dus, naar het gewenste niveau met extra marge?
Ik heb geprobeerd IOPS-info over de disks te vinden op de site van HP of te herleiden met de info die ze wel hadden, maar daar kom ik maar niet uit. Ik heb ook geen mogelijkheden om dit zelf te meten met verschillende disks, dus ik moet ergens uit gaan van gegeven of geschatte waardes. Zonder deze getallen kan ik dus eigenlijk niks met mijn gemeten/te meten data en kan ik geen vergelijking maken tussen de kosten voor een SATA danwel SAS oplossing. Elk artikel op internet dat ik kan vinden gaat voornamelijk over het bepalen van het aantal benodigde IOPS, maar geen enkele over het aantal beschikbare. Whitepapers van HP over hun SATA en SAS drives levert eigenlijk ook niks op. Er wordt wel geschreven dat IOPS belangrijk zijn, maar er wordt niets gekwantificeerd voor de verschillende soorten drives.
Het enige dat ik na lang zoeken vind is een formule op een random site:
diskIOPS = 1 / ((1 / (diskRPM/60) /2) + diskSeekLatency/1000)
Hiermee kom ik voor HP-disks uit op 79 voor SATA en 182 voor 15k SAS.
Zojuist de eerste cijfers van een deelmeting van 14 uur door Excel gehaald, maar ik denk dat het ergens flink mis gaat.
% CPU time | Curr.Disk queue | Disk sec/transfer (ms) | Disk sec/read (ms) | Disk sec/write (ms) | |
Min | 0,06 | 0 | 1,87 | 0 | 2,43 |
Max | 1E+15 | 102 | 203,09 | 87,11 | 300,14 |
Avg | 2,99E+14 | 9,85 | 40,40 | 18 | 75,04 |
Grens | < 80 | < 2 | < 20 | < 20 | < 20 |
Uitschieters zoals bij de CPU max zitten bijna in elke kolom zoals in de disk read/write queue (8E+16) en de Split I/O (1E+17). Disk read/sec en write/sec zit ook ergens rond de 1E+17 dus het lijkt er een beetje op dat óf ergens gaat iets helemaal mis met puntjes en komma's óf de server is zodanig overbelast dat meten geen reële cijfers meer oplevert.
Als ik wat formules gebruik van bijv de site Yellow-Bricks kom ik, voor een 30/70 lees/schrijf verhouding, al op 15 SAS of 38 SATA disks in R6 om slechts 100 IOPS te halen, maar met de gemeten cijfers weet ik nu nog steeds niet hoeveel ik er nodig heb.
Ik begin een beetje het gevoel te krijgen dat dit nog iets te hoog gegrepen is voor me

Elke input om tot een juiste berekening te komen of een correctie op mijn gedachtengang wordt zeer gewaardeerd.
[ Voor 14% gewijzigd door Ethirty op 14-08-2010 18:49 . Reden: Meet-gegevens toegevoegd ]
#team_UTC+1
An investment in knowledge always pays the best interest - Benjamin Franklin
You can call me McOverloper Mini '12 i7/16/256 Air '13 i5/8/256 iPad mini 5 64GB iPhone SE 128GB