0

I have an Azure Service Fabric cluster with 5 nodes, baked by an Azure Virtual Machine Scale Set. The size of the instances is Standard_D2ds_v4 with an advertised disk speed of max 3200 IOPS. At the VMSS there's a "Premium SSD LRS" data disk attached with the size of 50 GB / 240 Max IOPS / 50 MBps throughput.

Since I need this disk for an EventStoreDB database, I guess 240 IOPS is too slow for production. So I tried another "Premium SSD LRS" data disk with 257 GB size which should reach 2300 Max IOPS / 150 MBps throughput. Still slow, especially for a SSD, but at least better than the first disk.

Specified Premium SSD speeds for data disks

Before I started the migration of the database to the new disk, I wanted to be sure and measured the speed and realized that the new disk is exactly the same slow as the first disk.

I used the DISKSPD tool as documented at the Microsoft Docs to measure. I got the following results:

PS C:\Users\<user>\Downloads\DiskSpd\amd64> .\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Command Line: C:\Users\<user>\Downloads\DiskSpd\amd64\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Input parameters:

        timespan:   1
        -------------
        duration: 30s
        warm up time: 30s
        cool down time: 0s
        random seed: 0
        thread pool with 4 threads
        number of outstanding I/O operations per thread: 0
        path: 'testfile.dat'
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 50/50)
                block size: 8KiB
                using random I/O (alignment: 8KiB)
                number of outstanding I/O operations per thread: 128
                IO priority: normal

System information:

        computer name: prod000000
        start time: 2022/06/20 08:03:39 UTC

Results for timespan 1:
*******************************************************************************

actual test time:       30.00s
thread count:           4
proc count:             2

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|   5.68%|   2.34%|    3.33%|  94.32%
   1|   4.17%|   3.23%|    0.94%|  95.83%
-------------------------------------------
avg.|   4.92%|   2.79%|    2.14%|  95.08%

Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |        46063616 |         5623 |       1.46 |     187.41 | testfile.dat (10GiB)
     1 |        45998080 |         5615 |       1.46 |     187.14 | testfile.dat (10GiB)
     2 |        46170112 |         5636 |       1.47 |     187.84 | testfile.dat (10GiB)
     3 |        46120960 |         5630 |       1.47 |     187.64 | testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         184352768 |        22504 |       5.86 |     750.03

Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |        23109632 |         2821 |       0.73 |      94.02 | testfile.dat (10GiB)
     1 |        22732800 |         2775 |       0.72 |      92.49 | testfile.dat (10GiB)
     2 |        22986752 |         2806 |       0.73 |      93.52 | testfile.dat (10GiB)
     3 |        23117824 |         2822 |       0.73 |      94.05 | testfile.dat (10GiB)
------------------------------------------------------------------------------
total:          91947008 |        11224 |       2.92 |     374.08

Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |        22953984 |         2802 |       0.73 |      93.39 | testfile.dat (10GiB)
     1 |        23265280 |         2840 |       0.74 |      94.65 | testfile.dat (10GiB)
     2 |        23183360 |         2830 |       0.74 |      94.32 | testfile.dat (10GiB)
     3 |        23003136 |         2808 |       0.73 |      93.59 | testfile.dat (10GiB)
------------------------------------------------------------------------------
total:          92405760 |        11280 |       2.94 |     375.95
PS C:\Users\<user>\Downloads\DiskSpd\amd64> .\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh D:\testfile.da
t

Command Line: C:\Users\<user>\Downloads\DiskSpd\amd64\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh D:\testfile.dat

Input parameters:

        timespan:   1
        -------------
        duration: 30s
        warm up time: 30s
        cool down time: 0s
        random seed: 0
        thread pool with 4 threads
        number of outstanding I/O operations per thread: 0
        path: 'D:\testfile.dat'
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 50/50)
                block size: 8KiB
                using random I/O (alignment: 8KiB)
                number of outstanding I/O operations per thread: 128
                IO priority: normal

System information:

        computer name: prod000000
        start time: 2022/06/20 08:07:46 UTC

Results for timespan 1:
*******************************************************************************

actual test time:       30.01s
thread count:           4
proc count:             2

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|  12.39%|   2.19%|   10.20%|  87.61%
   1|  12.18%|   5.10%|    7.08%|  87.82%
-------------------------------------------
avg.|  12.29%|   3.64%|    8.64%|  87.71%

Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       629145600 |        76800 |      19.99 |    2558.97 | D:\testfile.dat (10GiB)
     1 |      1155129344 |       141007 |      36.71 |    4698.34 | D:\testfile.dat (10GiB)
     2 |       634142720 |        77410 |      20.15 |    2579.29 | D:\testfile.dat (10GiB)
     3 |      1145102336 |       139783 |      36.39 |    4657.56 | D:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:        3563520000 |       435000 |     113.24 |   14494.16

Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       315432960 |        38505 |      10.02 |    1282.98 | D:\testfile.dat (10GiB)
     1 |       579280896 |        70713 |      18.41 |    2356.15 | D:\testfile.dat (10GiB)
     2 |       317087744 |        38707 |      10.08 |    1289.71 | D:\testfile.dat (10GiB)
     3 |       574537728 |        70134 |      18.26 |    2336.86 | D:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:        1786339328 |       218059 |      56.76 |    7265.71

Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       313712640 |        38295 |       9.97 |    1275.99 | D:\testfile.dat (10GiB)
     1 |       575848448 |        70294 |      18.30 |    2342.19 | D:\testfile.dat (10GiB)
     2 |       317054976 |        38703 |      10.07 |    1289.58 | D:\testfile.dat (10GiB)
     3 |       570564608 |        69649 |      18.13 |    2320.70 | D:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:        1777180672 |       216941 |      56.47 |    7228.45
PS C:\Users\<user>\Downloads\DiskSpd\amd64> .\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh S:\testfile.da
t

Command Line: C:\Users\<user>\Downloads\DiskSpd\amd64\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh S:\testfile.dat

Input parameters:

        timespan:   1
        -------------
        duration: 30s
        warm up time: 30s
        cool down time: 0s
        random seed: 0
        thread pool with 4 threads
        number of outstanding I/O operations per thread: 0
        path: 'S:\testfile.dat'
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 50/50)
                block size: 8KiB
                using random I/O (alignment: 8KiB)
                number of outstanding I/O operations per thread: 128
                IO priority: normal

System information:

        computer name: prod000000
        start time: 2022/06/20 08:11:46 UTC

Results for timespan 1:
*******************************************************************************

actual test time:       30.00s
thread count:           4
proc count:             2

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|   9.48%|   1.30%|    8.18%|  90.52%
   1|   7.14%|   4.64%|    2.50%|  92.86%
-------------------------------------------
avg.|   8.31%|   2.97%|    5.34%|  91.69%

Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       215162880 |        26265 |       6.84 |     875.46 | S:\testfile.dat (10GiB)
     1 |       214958080 |        26240 |       6.83 |     874.63 | S:\testfile.dat (10GiB)
     2 |       215547904 |        26312 |       6.85 |     877.03 | S:\testfile.dat (10GiB)
     3 |       214466560 |        26180 |       6.82 |     872.63 | S:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         860135424 |       104997 |      27.34 |    3499.75

Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       107978752 |        13181 |       3.43 |     439.35 | S:\testfile.dat (10GiB)
     1 |       107872256 |        13168 |       3.43 |     438.91 | S:\testfile.dat (10GiB)
     2 |       107470848 |        13119 |       3.42 |     437.28 | S:\testfile.dat (10GiB)
     3 |       107282432 |        13096 |       3.41 |     436.51 | S:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         430604288 |        52564 |      13.69 |    1752.06

Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       107184128 |        13084 |       3.41 |     436.11 | S:\testfile.dat (10GiB)
     1 |       107085824 |        13072 |       3.40 |     435.71 | S:\testfile.dat (10GiB)
     2 |       108077056 |        13193 |       3.44 |     439.75 | S:\testfile.dat (10GiB)
     3 |       107184128 |        13084 |       3.41 |     436.11 | S:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         429531136 |        52433 |      13.65 |    1747.69
PS C:\Users\<user>\Downloads\DiskSpd\amd64> .\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh T:\testfile.da
t

Command Line: C:\Users\<user>\Downloads\DiskSpd\amd64\diskspd.exe -c10G -w50 -b8K -F4 -r -o128 -W30 -d30 -Sh T:\testfile.dat

Input parameters:

        timespan:   1
        -------------
        duration: 30s
        warm up time: 30s
        cool down time: 0s
        random seed: 0
        thread pool with 4 threads
        number of outstanding I/O operations per thread: 0
        path: 'T:\testfile.dat'
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 50/50)
                block size: 8KiB
                using random I/O (alignment: 8KiB)
                number of outstanding I/O operations per thread: 128
                IO priority: normal

System information:

        computer name: prod000000
        start time: 2022/06/20 08:13:01 UTC

Results for timespan 1:
*******************************************************************************

actual test time:       30.00s
thread count:           4
proc count:             2

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|   9.17%|   1.51%|    7.66%|  90.83%
   1|   3.39%|   1.93%|    1.46%|  96.61%
-------------------------------------------
avg.|   6.28%|   1.72%|    4.56%|  93.72%

Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       214761472 |        26216 |       6.83 |     873.79 | T:\testfile.dat (10GiB)
     1 |       215842816 |        26348 |       6.86 |     878.18 | T:\testfile.dat (10GiB)
     2 |       214679552 |        26206 |       6.82 |     873.45 | T:\testfile.dat (10GiB)
     3 |       215810048 |        26344 |       6.86 |     878.05 | T:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         861093888 |       105114 |      27.37 |    3503.47

Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       107831296 |        13163 |       3.43 |     438.73 | T:\testfile.dat (10GiB)
     1 |       108183552 |        13206 |       3.44 |     440.16 | T:\testfile.dat (10GiB)
     2 |       106881024 |        13047 |       3.40 |     434.86 | T:\testfile.dat (10GiB)
     3 |       108150784 |        13202 |       3.44 |     440.03 | T:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         431046656 |        52618 |      13.70 |    1753.77

Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  file
------------------------------------------------------------------------------
     0 |       106930176 |        13053 |       3.40 |     435.06 | T:\testfile.dat (10GiB)
     1 |       107659264 |        13142 |       3.42 |     438.03 | T:\testfile.dat (10GiB)
     2 |       107798528 |        13159 |       3.43 |     438.59 | T:\testfile.dat (10GiB)
     3 |       107659264 |        13142 |       3.42 |     438.03 | T:\testfile.dat (10GiB)
------------------------------------------------------------------------------
total:         430047232 |        52496 |      13.67 |    1749.70

I ran the test on all disks for comparison:

  • C:\ -> OS Disk
  • D:\ -> Ephemeral Disk (not usable for a database, as the data can be lost during certain maintenance work)
  • S:\ -> the 50 GB data disk
  • S:\ -> the 257 GB data disk

As you can see, I'm only achieving a fraction of the IOPS and throughput of the specified speed, and the two data disks are equally slow. Have I configured something wrong?

EDIT: It looks like the IOPS are ok. I had assumed that reading and writing happened one after the other and accordingly the IOPS are at 1750. The total measured 3500 IOPS are even higher than the 2800 stated as maximum. EDIT 2: the 3500 IOPS are probably related to the bursting on managed Premium SSDs.

However, it doesn't look so good with the throughput, where the 27.3 MBps are definitely lower than the stated 50 MBps resp. 150 MBps. EDIT 2: with bursting I should reach 170 MBps, without 150 MBps.

The question why the two drives are equally fast also remains.

1 Answer 1

1

Microsoft Support pointed out that the reason for the low throughput is that the block size on testing was too small. I verified this with a larger blocksize and I got the promised numbers.

The reason why the small and the large disk were at the same speed was because both of them has a credit based burst speed which is equal. After the credits is consumed the speed is reduced the the individual lower speed.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .