Previous Topic

Next Topic

Book Contents

Book Index

Measure and Tune Disk Performance

Microsoft has a utility called Diskspd that can be used to quickly measure the disk subsystem performance. It can be downloaded from Microsoft Technet. .

Download the zip file and extract the files to the target system where Ipswitch Analytics Server will be installed. Then use the command line listed below to:

  1. Set the block size to 8K
  2. Run the test for 60 seconds.
  3. Disable all hardware and software caching, leverage 2 overlapped IOs and 4 threads per target, random 30% writes and 70% reads and create a 10GB test file at c:\io.dat.

In the sample output below, pay attention to the values of columns I/O per s, MB/s and "AvgLat. They collectively represent the performance of the disk. Specifically, if the total IOPS (I/O per s column) is lower than the expected value, you must either tune your disk configurations or replace with better physical hardware.

Note: There could be additional caching in some virtual environments. To prevent the results from being skewed by I/O caching, the size of the test file must be large enough. Depending how much free disk space you have, you might want to try different sizes with -c option, starting from 10GB and then incrementing by 10GB for each additional test, and capture the screen output for each run. Remember to delete the test file c:\io.dat at the end to free up the disk space.

Command Line (amd64fre\diskspd.exe):

diskspd.exe -b8K -d60 -Sh -L -o2 -t4 -r -w30 -c10G c:\io.dat

Sample Output

The following is a sample output for 20G workload file, with a relatively slow hard disk, IOPS for SSD drives will be much higher. The total I/O per s is 314.25 for Total IO, and the average latency (AvgLat) is 25.864.


Command Line: diskspd.exe -b8k -d60 -Sh -L -o2 -t4 -r -w30 -c20G c:\io.dat
Input parameters:
        timespan:   1
        -------------
        duration: 60s
        warm up time: 5s
        cool down time: 0s
        measuring latency
        random seed: 0
        path: 'c:\io.dat'
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 70/30)
                block size: 8192
                using random I/O (alignment: 8192)
                number of outstanding I/O operations: 2
                thread stride size: 0
                threads per file: 4
                using I/O Completion Ports
                IO priority: normal
Results for timespan 1:
*******************************************************************************
actual test time:       60.01s
thread count:           4
proc count:             4
CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|  98.84%|   2.45%|   96.40%|   1.17%
   1|  97.67%|   1.15%|   96.53%|   2.40%
   2|  98.32%|   1.56%|   96.76%|   1.74%
   3|  98.37%|   1.30%|   97.07%|   1.69%
-------------------------------------------
avg.|  98.30%|   1.61%|   96.69%|   1.75%
Total IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |        37060608 |         4524 |       0.59 |      75.39 |   26.385 |  27.878 | c:\io.dat (20GB)
     1 |        38715392 |         4726 |       0.62 |      78.76 |   25.285 |  26.946 | c:\io.dat (20GB)
     2 |        39542784 |         4827 |       0.63 |      80.44 |   24.704 |  25.889 | c:\io.dat (20GB)
     3 |        39157760 |         4780 |       0.62 |      79.66 |   24.999 |  26.461 | c:\io.dat (20GB)
-----------------------------------------------------------------------------------------------------
total:         154476544 |        18857 |       2.46 |     314.25 |   25.328 |  26.793
Read IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |        26075136 |         3183 |       0.41 |      53.04 |   25.090 |  27.321 | c:\io.dat (20GB)
     1 |        26902528 |         3284 |       0.43 |      54.73 |   23.654 |  25.688 | c:\io.dat (20GB)
     2 |        28024832 |         3421 |       0.45 |      57.01 |   23.621 |  25.272 | c:\io.dat (20GB)
     3 |        27377664 |         3342 |       0.44 |      55.69 |   23.151 |  23.991 | c:\io.dat (20GB)
-----------------------------------------------------------------------------------------------------
total:         108380160 |        13230 |       1.72 |     220.48 |   23.864 |  25.582
Write IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |        10985472 |         1341 |       0.17 |      22.35 |   29.459 |  28.927 | c:\io.dat (20GB)
     1 |        11812864 |         1442 |       0.19 |      24.03 |   29.000 |  29.274 | c:\io.dat (20GB)
     2 |        11517952 |         1406 |       0.18 |      23.43 |   27.339 |  27.152 | c:\io.dat (20GB)
     3 |        11780096 |         1438 |       0.19 |      23.96 |   29.294 |  31.038 | c:\io.dat (20GB)
-----------------------------------------------------------------------------------------------------
total:          46096384 |         5627 |       0.73 |      93.77 |   28.770 |  29.157

  %-ile |  Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
    min |      0.279 |      0.448 |      0.279
   25th |     11.928 |     14.880 |     12.685
   50th |     18.962 |     23.046 |     20.092
   75th |     27.768 |     33.176 |     29.308
   90th |     38.372 |     44.770 |     40.827
   95th |     49.850 |     58.433 |     52.565
   99th |    163.746 |    182.827 |    170.291
3-nines |    248.696 |    265.721 |    251.552
4-nines |    276.149 |    278.435 |    277.200
5-nines |    277.200 |    278.435 |    278.435
6-nines |    277.200 |    278.435 |    278.435
7-nines |    277.200 |    278.435 |    278.435
8-nines |    277.200 |    278.435 |    278.435
9-nines |    277.200 |    278.435 |    278.435
    max |    277.200 |    278.435 |    278.435