191

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 Answers10

304

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)

See the winsat disk documentation for a full parameter listing.

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.

23

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

HD Tune screenshot

TopBanana
  • 402
12

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

MrEdmundo
  • 281
11

ATTO Disk Benchmark is freeware and does not require installation.

enter image description here

nixda
  • 27,634
10

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.

6

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

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

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

2

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

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

Example

Crucial T705 4TB SSD PCIe Gen5 NVMe M.2 Internal SSD has very nice performance:

Example

pbies
  • 3,550
1

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

RvdK
  • 121