How to measure disk-performance under Windows?
I'm trying to find out why my application is very slow on a certain machine (runs fine everywhere else). I think i have traced the performance-problems to hard-disk reads and writes and i think it's simply the very slow disk.
What tool could i use to measure hd read and write performance under Windows 2003 in a non-destructive way (the partitions on the drives have to remain intact)?
9 Answers
There is a built-in disk performance checker in Windows called winsat:
winsat disk -drive g
(Run winsat with Administrator privileges)
More info: Info on winsat disk on
e.g:
C:\WINDOWS\system32>winsat disk -drive g
Windows System Assessment Tool
> Running: Feature Enumeration ''
> Run Time 00:00:00.00
> Running: Storage Assessment '-drive g -ran -read'
> Run Time 00:00:04.17
> Running: Storage Assessment '-drive g -seq -read'
> Run Time 00:00:08.64
> Running: Storage Assessment '-drive g -seq -write'
> Run Time 00:00:17.47
> Running: Storage Assessment '-drive g -flush -seq'
> Run Time 00:00:03.53
> Running: Storage Assessment '-drive g -flush -ran'
> Run Time 00:00:04.16
> Disk Random 16.0 Read 21.05 MB/s 6.0
> Disk Sequential 64.0 Read 38.29 MB/s 4.9
> Disk Sequential 64.0 Write 39.67 MB/s 4.9
> Average Read Time with Sequential Writes 1.324 ms 7.4
> Latency: 95th Percentile 2.585 ms 7.3
> Latency: Maximum 26.977 ms 7.9
> Average Read Time with Random Writes 1.299 ms 8.1
> Total Run Time 00:00:39.41 12 HD Tach has been end of lifed. HD Tune appears to be equivalent:
For those who might be looking for something capable of testing SQL type scenarios there's Diskspd.exe which has superseded SQLIO.
You can use Perfmon to gather physical disk based counters, such as:
Physical Disk (instance)\Disk Transfers/sec counter for each physical disk
Physical Disk(instance)\% Idle Time
Avg. Disk Queue Length
Or download PAL (very useful monitoring tool) and use the built-in template targeting the OS.
ATTO Disk Benchmark is freeware and does not require installation.
1IOMeter will do this. It can do non-destructive testing by writing to its own files within the partitions.
6The performance counters in windows can show you transfer-speeds, current disk queue etc in order to trace the actual bottleneck on the machine when your app is running.
Look at Performance Object: Physical Disk
And look especially at the queue-counters. A disk can be very fast ad sequential reads, but as soon as it tries to access the disk simultaneously the queue might peak and give you horrible performance.
Try with Harddisk benchmark programs:
Also there is a tool, which is used by Microsoft engineers to test hard drive performance (information taken from the tool project's github readme file): . Although not sure if it's compatible with Windows 2003
A nice thing about it is that it can measure IOPS performance (e.g. it's possible to compare your VM with Azure instance IO performance specifications).
Example usage:
diskspd.exe -c10G -d30 -b4K -h -o32 -t4 -r -w100 tempfile.dat 1