DiskSPD
Das Tool DiskSPD hat nichts mit politischen Parteien zu tun, sondern ist ein weiteres Werkzeug um die Performance von Festplatten unter Windows zu testen. Exchange Administratoren kennen natürlich auch das Programm JetStress, welches die typische Last eines Exchange Servers simuliert. Aber nicht jeder will die damit verbundenen DLLs, Performance Counter und Eventlog-Einträge auf einem Testserver haben. Zudem dauert JetStress auch etwas länger um bezüglich Exchange entsprechend aussagekräftige Daten zu erhalten.
Für einfache Tests reicht es aber durchaus möglichst schnell zufällig Daten auf der Festplatte zu verteilen und dies über mehrere Threads zu machen. "Echte" Server arbeiten ja auch nicht sequentiell. DiskSPD ist wohl auch ein Ersatz für das in die Jahre gekommene SQLIO.
Achtung
Diese IOPS sind gut zum Vergleich von Storage-Systemen und
verschiedenen RAID-Leveln. Die Werte sind aber in der Regel
viel zu Hoch um als Grundlage für den Exchange Sizer nutzbar
zu sein. Ein Exchange Storage System sollten Sie immer über
JetStress belasten.
Software
Die Software DiskSPD ist Open Source und über folgende URLs zu beziehen.
Download
EXE
https://aka.ms/DiskSpd
https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Source:
https://GitHub.com/microsoft/diskspd.
GUI für die Steuerung von DiskSPD
https://gallery.technet.microsoft.com/DiskSpeed-90d37d55
Das ZIP-Archiv enthält neben einen PDF und DOCX als ausführliche Beschreibung auch den ausführbaren Code in drei Versionen.
Auf einem 64bit Server ist natürlich die Version aus "AMD64FRE" zu nutzen. Denken Sie dran, dass Sie das Programm möglichst als "Administrator" aufrufen, damit die entsprechenden Systemfunktionen aufgerufen werden.
- DiskSpd, PowerShell and storage
performance: measuring IOPs, throughput and
latency for both local disks and SMB file
shares
https://blogs.technet.microsoft.com/josebda/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and-smb-file-shares/
Aufruf
Damit die "Messung" überhaupt eine Aussagekraft hat, muss zumindest die entsprechende Disk oder das Subsystem "idle" sein und der ausführende Server sollte nicht gerade eine hohe CPU-Last haben. Idealerweise führen Sie das Programm auf einem frisch installierten Server aus, der noch nicht produktiv ist. Damit reduzieren Sie auch das Risiko eines Datenverlustes, besonders wenn man damit auf eine "Physical Disk" schreibt und nicht auf eine Datei.
Wer eine bereit belegte Festplatte testen will, muss dies über eine "Datei" machen. Da sich IOPS aber aus der Zugriffszeit ermitteln, reicht hier keine kleine Datei, die sich gerade mal über wenige Spuren erstreckt. Ideal ist eine Datei, die fast so groß ist wie die Festplatte. Jeder nicht genutzte Bereich und vor allem eine z.B.: 50% vom Anfang an gefüllte Disk verändert die Messung. Wenn der Lesekopf nur einen Teilbereich nutzen kann, dann wird es weniger Weg zurück legen und entsprechen mehr IOPS liefern.
# Testdatei (Capacity) 1 GB auf Laufwerk X # Dauer (Duration) 600 Sekunden. Mindestens 60 sollten sie immer testen # Schreibtanteil (Write) 0, d.h. es wird hier nur gelesen # Blockgroesse (blocksize) 4Kbyte # Outstanding IOPS per target per Thread (o) 2 # Hardwarecache (-h) Disable Software und Hardware Caching # Messe Latenz statistic (-L) # Threads per Target (-t) 8 c:\diskspd.exe -c1G -d600 -r -w0 -b4K -t8 -o2 -h -L X:diskspd.dat # Die gleiche Messung gegen die physikalische Disk 4 c:\diskspd.exe -c1G -d600 -r -w0 -b4K -t8 -o2 -h -L #4
Hinweis: Auch wenn wir uns auf Windows bewegen, so ist bei den Parametern die Groß/Klein-Schreibung wichtig. In dem ZIP-Archiv sind entsprechende Beschreibungen ausführlich enthalten.
Wenn Sie DiskSPD ohne Parameter aufrufen, bekommen Sie eine lange Beschreibung zu sehen. Die einfachste und kürzeste Option ist einfach die Angabe eines Laufwerksbuchstabens, worauf DiskSPD folgenden "ReadOnly" Test macht.
Hier wird eine SD-Karte 10 Sekunden lang mit 64kByte Blöcken sequentiell bearbeitet. Das 30 GB-File wurde allerdings in den 10 Sekunden nicht angelegt. Die SD-Karte ist aber mit 273 IOPS schneller als manche 10k-Disk aber beim Datendurchsatz versagt sie natürlich. Aktiviere ich aber z.B.: 65% Schreiben, dann sehen die Werte gleich anders aus:
ACHTUNG: Ein Schreibzugriff löscht ohne weitere Rückfrage das angegebene Laufwerk !!!!
Durch das aktivierte "Schreiben" sackt nicht nur der Wert für IOPS ab, sondern auch die Schreibgeschwindigkeit kommt nun eher in einen "realistischen" Bereich. Das die SD-Karte aber wohl beim Schreiben etwas "länger" braucht, müssen die anderen IOs hinten anstehen. So bleiben also nicht mehr viele IOPS übrig.
Wenn Sie eine "Datei" zum Testen nutzen wollen, dann sollten Sie diese nicht nur als Pfad angeben, sondern auch die Größe mit -c spezifizieren, z.B. "-c1G",
Ohne Angabe einer Dateigröße wird keine Datei angelegt und der Test abgebrochen. Eine kleine Datei ist viel schneller angelegt als eine große Datei, aber Sie haben so natürlich keine Kontrolle über die Verteilung der Blöcke auf der Festplatte. Die Daten sind daher nicht besonders aussagekräftig. Auch im Ressourcenmonitor ist die Aktivität zu sehen:
DiskSPD selbst misst und zeigt die CPU-Last in der Auswertung mit an. Dies ist wichtig, da eine überlastete CPU nicht eine maximale Last auf einem Disk-System generieren kann. Die Anzeige hier erlaubt auch eine Kontrolle, ob und welche andere Dienste eventuell noch IOPS generieren und die Messung verfälschen.
Messwerte
Bei der Menge an Parametern stellt sich natürlich die Frage, mit welchen "Messwerten" sie auch relevante Werte bekommen. Ein Dateiserver hat natürlich andere Anforderungen als ein SQL-Server oder Exchange Server. Dennoch sollen die Werte ja vergleichbar sein. Auf http://www.altaro.com/hyper-v/storage-performance-baseline-diskspd/ wird für SQL folgendes Muster angegeben:
512B sequential write using 2 threads with 1 outstanding IO 64KB quential write using 2 threads with 1 outstanding IO 8KB random read using 2 threads with 1 outstanding IO 12128KB random read using 2 threads with 1 outstanding IO
Das geht natürlich nur mit vier parallelen Aufrufen auf der gleichen Disk. Ich haben daher mal die Werte von JetStress als Basis genommen, da die meisten Administratoren hier ja mit Exchange zu tun haben. Die Definition ist natürlich etwas "willkürlich" und kann nicht die ausgefeilte Messung von JetStress ersetzen. Aber es ist ja zumindest mal ein kleiner Schnelltest, wenn man Server mit Disks zusammen baut und einfach nur mal "Vorher/Nachher-Vergleiche nach TreiberUpdates etc. machen will oder eine grobe Richtung für die IOPS-Leistung bekommen möchte.
# -c1G 1GB Testdatei - für Disks mit Daten ist es ein kompromiss Besser ist es leere Disks komplett zu nutzen. # -t6 6 Threads -bei sehr vielen CPUs sollten sie mehr Threads vresuchen. # -w65 65% Write-Anteil - Exchange schreibt mehr als dass es liest. Bei Dateiservern ist es anders # -b64k 64k Blocksize - Exchange arbeitet mit 64k Blöcken # -r Random Zugriff ist für Server anzusetzen. Ergibt den niedrigeren Wert # -o2 2 Outstanding Requests - 2 Requests pro Thread in der Queue zu halten verhindert Pausen # -h kein Cache - nicht dass hier eine Software oder ein RAID-Controller mit viel RAM die Werte verschiebt # -L Latenz Statistik anzeigen # -d60 60 Sekunden Laufzeit sind eine erste Stichprobe. # D:diskspd.dat Dateiname c:\diskspd.exe -c1G -t6 -w65 -b64K -r -o2 -h -L -d60 a:\diskspd.dat
Mit dem Parameter habe ich nun einige Disks "gemessen". Beachten Sie, dass bei ihren Messungen die Disks "idle" sind und der Host-CPU nicht durch andere Prozesse "beschränkt" sein sollte. Der Schwerpunkt der Messung ist nicht die CPU, der RAID-Controller oder der RAM, sondern möglichst nur das Storage Subsystem. RAID-Disks messen natürlich den RAID-Controller indirekt mit. Als Negativ-Beispiel für eine ungültige Messung ist die SSHD hier zu sehen. die bei der ersten Messung mehr als doppelt so schnell war. Wenn Sie nicht sicher sind, ob ein Cache dazwischen funkt, dann sollten Sie auf jeden Fall eine größere Datei und eine längere Laufzeit in Betracht ziehen und die Werte vergleichen.
Disk | U/Min | Anzahl | RAID | Total MB/Sec | Total-IOPS | Bemerkung |
---|---|---|---|---|---|---|
Samsung 840 EVO 1TB |
SSD |
1 |
Single |
364 |
5832 |
Meine primäre SSD für Windows 7 |
ST1750LM000 2,5" SATA |
5400 |
1 |
Single |
8,84 |
141 |
Meine zweite Festplatte im Notebook mit 1,75TB als großer "Datenspeicher" |
"Platinum" Class 10 SD-Karte |
Flash |
1 |
Single |
0,13 |
2,1 |
Eine einfache SD-Karte Class 10. Extrem lahm |
WD 1TB US 3.0 |
? |
1 |
Single |
8,8 |
141 |
Einfache USB 3.0 Festplatte |
Samsung 840EVO 256 GB |
SSD |
1 |
Single |
220 |
3528 |
Eine Consumer SSD in einem Server von 2012 unter Windows 2012. |
Kingston 480GB SSD |
SSD |
1 |
Single |
244 |
3912 |
Eine weite SSD im
gleichen Server |
Hitachi HDS721075CLA332 |
7200 |
1 |
Single |
13,5 |
210 |
Eine Single SATA Disk in einem Hyper-V-Server |
ST3750528AS |
7200 |
1 |
Single |
11 |
165 |
Eine Single SATA Disk in einem Hyper-V-Server |
Transcend MTS400 TS256GMTS400 |
SSD |
1 |
Single |
235 |
3774 |
M.2-SSD in einem Thinkpad Yoga |
ST500LM000-SSHD 8GB |
SSHD |
1 |
Single |
38 |
618 |
SATA-SSHD mit 8 GB Flash in einem Thinkpad Yoga. Hier dürfte der SSHD-Cache die Werte zu hoch halten, da in 60 Sek nur 2,4 GB geschrieben wurden. Der zweite Durchlauf ist dann auch schon langsamer. (http://www.seagate.com/de/de/solutions/solid-state-hybrid/) |
|
|
|
|
|
|
|
Hier fehlen noch einige Messwerte, speziell von potenteren Servern
Achtung
Beachten Sie bitte, dass die meiste dieser Messungen einfach
nur "Single Disks" sind und wenn sie nur mit einer 1GB Datei
arbeiten, dann sind die Werte sicher zu hoch, da der Test
nur einen Teilbereich der Festplatte überstreicht.
Aussagekräftig sind solche Daten erst bei einem Test über
eine gesamte "leere" Disk im "Idle"-Zustand.
Der Test mit einer kleinen Datei auf einem "aktiven"
Dateisystem kann aber dennoch einen ersten Eindruck speziell
bei schon aktiven Servern liefern. Es ist aber eher
Autofahren auf einer belebten Autobahn und weniger ein
Höchstgeschwindigkeitstest auf einer leeren Piste.
Vergessen sie nicht danach die Testdatei "diskspd.dat" zu löschen, speziell wenn Sie etwas "Größer" war.
Weitere Links
- JetStress
- IOPS
- Exchange Leistungstest
- DT Performance Messung
- NETIO, IPERF und TTCP
- Exchange Sizing - Wie dimensioniere ich die Hardware ?
- DiskSpd, PowerShell and storage performance: measuring IOPs, throughput
and latency for both local disks and SMB file shares
https://blogs.technet.microsoft.com/josebda/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and-smb-file-shares/ - Don’t do it: consumer-grade solid-state
drives (SSD) in Storage Spaces Direct
https://blogs.technet.microsoft.com/filecab/2016/11/18/dont-do-it-consumer-ssd/
Sehr guter Artikel zu SSDs und deren Durchsatz für Storage Spaces und andere Server. - Test Storage Spaces Performance Using
Synthetic Workloads in Windows Server
https://technet.microsoft.com/en-us/library/dn894707 - Test Storage Spaces Performance Using
Synthetic Workloads in Windows Server
https://technet.microsoft.com/en-us/library/dn894707#BKMK_InstallDiskSpd - Storage Performance Baseline with
Diskspd
http://www.altaro.com/hyper-v/storage-performance-baseline-diskspd/ - Messen von I/O Performance
https://www.thomas-krenn.com/de/wiki/Messen_von_I/O_Performance - SQLIO Tutorial: How to Test Disk Performance
https://www.brentozar.com/archive/2008/09/finding-your-san-bottlenecks-with-sqlio/ - Benchmarking SQL Server IO with SQLIO
https://www.mssqltips.com/sqlservertip/2127/benchmarking-sql-server-io-with-sqlio/ - SQLIO Disk Subsystem Benchmark Tool
https://www.microsoft.com/en-us/download/details.aspx?id=20163 - Storage-Performance messen mit dem
kostenlosen DiskSpd von Microsoft
https://www.windowspro.de/tool/storage-performance-messen-dem-kostenlosen-diskspd-von-microsoft - Diskspd: Reale Storage-I/O-Lasten
nachbilden
http://www.faq-o-matic.net/2014/09/30/diskspd-reale-storage-io-lasten-nachbilden/ - Storage Benchmarking with DiskSpd
http://www.davidklee.net/2015/04/01/storage-benchmarking-with-diskspd/ - Understanding RAID Performance at
Various Levels
http://www.storagecraft.com/blog/raid-performance/ - IOPS Berechnung
https://www.elasticsky.de/2012/06/iops-berechnung/ - DISK RAID AND IOPS CALCULATOR
http://www.thecloudcalculator.com/calculators/disk-raid-and-iops.html - TKperf performance test tool for SSDs,
HDDs and RAID devices
https://github.com/thomas-krenn/TKperf