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)?

10 Answers 10


There is a built-in disk performance checker in Windows called winsat:

winsat disk -drive g

(Run winsat with Administrator privileges; g is the G: drive in this example)

More info: Info on winsat disk on technet.microsoft.com/en-us/library/cc742157.aspx


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

By default it doesn't test Random Write speed though, so you could check random 16.0 write with: winsat disk -write -ran -drive c for example.

  • 14
    Finally a solution which is a) build in b) command line - Thanks a lot. To use it on a 2012 Server Core OS I had co copy the files winsat.exe, d3d11.dll, dxgi.dll, d3d10.dll, d3d10_1.dll, d3d10_1core.dll, d3d10core.dll from a windows 8 computer. Jul 20, 2015 at 8:14
  • 46
    You have to run the command prompt as an administrator, otherwise it pops a new command prompt and disappears as soon as it's finished, taking the results with it. Oct 14, 2015 at 11:05
  • Note that winsat is new in Vista. Sep 11, 2016 at 18:46
  • 1
    @mtk It looks like the WinSAT score assigned to the result. en.m.wikipedia.org/wiki/Windows_System_Assessment_Tool Feb 6, 2017 at 20:01
  • 4
    Unfortunately does not support software RAID. Oct 11, 2018 at 14:15

HD Tach has been end of lifed. HD Tune appears to be equivalent: http://www.hdtune.com/

HD Tune screenshot

  • The link is dead and there's now a HD Tach End of Life Announcement at their website saying it's no longer supported.
    – Hugo
    Mar 27, 2012 at 12:49
  • 2
    the free version of HD Tune 2.55 does not allow to benchmark disk write:( Jul 4, 2015 at 3:30

For those who might be looking for something capable of testing SQL type scenarios there's Diskspd.exe which has superseded SQLIO.


ATTO Disk Benchmark is freeware and does not require installation.

enter image description here

  • 1
    As of 2022 requires both to fill a form and also installation... :|
    – Frankie
    Mar 10, 2022 at 22:18

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.


IOMeter will do this. It can do non-destructive testing by writing to its own files within the partitions.

  • 4
    Iometer sucks for the casual user. Requires an installer (wth for) tries to open friggen sockets and the UI is your typical OSS ui--ugly, way more complex than necessary, and ultimately confusing to anybody that doesn't RTFM.
    – user939
    Aug 30, 2009 at 21:41
  • The latest version 1.1.0 doesn't run in XP, version 2006.07.27 does. Sep 12, 2016 at 15:06
  • I must admit the UI is far from being user-friendly. It still gets the job done and, unlike most other benchmarking tools, measures latency. Sep 12, 2016 at 15:10
  • It also saves results in CSV; if you select the same file again, it appends to it - quite nice for comparison, graphing etc. Sep 12, 2016 at 15:43
  • Its force is distributed/remote benchmarking over an arbitrary setup (the utility was originally written by Intel engineers for internal use), though this is hardly ever needed in casual use. Sep 12, 2016 at 15:46

The 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.


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): https://github.com/microsoft/diskspd. 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

Output: enter image description here

  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Apr 1, 2022 at 16:51

Try with Harddisk benchmark programs: http://www.hdtune.com/ http://www.passmark.com/products/pt_advdisk.htm


CrystalDiskMark is for that - https://crystalmark.info/en/software/crystaldiskmark/

It shows read and write speeds - linear and access time, threaded.


You must log in to answer this question.