171

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

Daniel Andersson
  • 23,895
  • 5
  • 57
  • 61

10 Answers10

269

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

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

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.

David d C e Freitas
  • 4,511
  • 4
  • 27
  • 35
  • 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. – Jürgen Steinblock Jul 20 '15 at 08:14
  • 45
    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. – David Krider Oct 14 '15 at 11:05
  • Note that `winsat` is new in Vista. – ivan_pozdeev Sep 11 '16 at 18:46
  • What does the number in 3rd column in the last rows specify? The link also doesn't provide info in this respect. Any idea? – mtk Feb 05 '17 at 20:10
  • 1
    @mtk It looks like the WinSAT score assigned to the result. https://en.m.wikipedia.org/wiki/Windows_System_Assessment_Tool – David d C e Freitas Feb 06 '17 at 20:01
  • Any info on how to benchmark these numbers? How can I know if my stats are slow or not? – aaaidan Jun 23 '18 at 05:01
  • @aaaidan Well, the 3rd column is the WinSAT Score which is "the WEI scores on a scale from 1.0 to 5.9 for Windows Vista,[3] 7.9 for Windows 7,[4] and 9.9 for Windows 8 and Windows 10.[5]" – David d C e Freitas Jun 25 '18 at 13:59
  • 3
    Unfortunately does not support software RAID. – Drew Noakes Oct 11 '18 at 14:15
22

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

HD Tune screenshot

TopBanana
  • 392
  • 2
  • 10
  • The link is dead and there's now a [HD Tach End of Life Announcement](http://www.simplisoftware.com/) at their website saying it's no longer supported. – Hugo Mar 27 '12 at 12:49
  • 2
    the free version of HD Tune 2.55 does not allow to benchmark disk write:( – Andrej Adamenko Jul 04 '15 at 03:30
10

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

MrEdmundo
  • 261
  • 3
  • 8
9

ATTO Disk Benchmark is freeware and does not require installation.

enter image description here

nixda
  • 26,823
  • 17
  • 108
  • 156
user3132194
  • 231
  • 3
  • 3
8

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.

Mitch Wheat
  • 181
  • 7
6

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. –  Aug 30 '09 at 21:41
  • The latest version 1.1.0 doesn't run in XP, version 2006.07.27 does. – ivan_pozdeev Sep 12 '16 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. – ivan_pozdeev Sep 12 '16 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. – ivan_pozdeev Sep 12 '16 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. – ivan_pozdeev Sep 12 '16 at 15:46
5

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.

jishi
  • 31
  • 3
  • 9
1

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

RvdK
  • 121
  • 1
  • 7
1

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

victorm1710
  • 111
  • 3
  • 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](/help/how-to-answer). – Community Apr 01 '22 at 16:51
0

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

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

Example

pbies
  • 2,757
  • 3
  • 21
  • 23