Замер производительности дисковой подсистемы

Существует множество способов и утилит произвести замер IOps и скорости чтения/записи дискового массива. Но к сожалению нет какого-то эталона или правила, как и с какими параметрами производить эти замеры. Поэтому в этой статье я опишу то, чем пользуюсь я и приведу примеры замеров того оборудования, с которым я сталкивался.
ИМХО: а вообще я считаю эти искусственные замеры не показывают, насколько хорошо годиться дисковая подсистема для конкретной задачи, слишком много условий. Поэтому замеры я делаю чисто понять, насколько новая железка более производительная чем старая.

В качестве инструмента я использую утилиту от компании Microsoft — DiskSpd.exe. Ссылка на скачивание exe. Она пришла на замену Powershell скрипту DiskPerformance.ps1 совместно с SQLIO.exe.
DiskSpd.exe запускается с определенным набором параметров из консоли CMD или Powershell.
Ниже пример команды, которой я произвожу тестирование:
PS C:\tmp> .\diskspd.exe -c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L C:\tmp\testfile.dat
Описание основных параметров:
  • -c50G — тестирование проходит на файле размером в 50Гб. Чем больше файл, тем лучше, т.к. маленький файл может весь попасть в кэш контроллера.
  • -d300 — продолжительность измерения
  • -r — Random запись/чтение (если указать -s — будет последовательная запись/чтение)
  • -w40 — процент записи (в данном примере получается 60% на чтение и 40% на запись)
  • -t8 — кол-во потоков
  • -o32 — длина очереди
  • -b64K — размер блока
  • -Sh — не использовать кэширование
  • -L — измерять задержки (latency)
  • C:\tmp\testfile.dat — путь для тестового файла

Тестирование СХД Lenovo DS4200
Технические данные:
Сервер: ThinkSystem SN550 с ОС vmWare ESXi 6.7
Связь с СХД: Fibre Channel 16Gb/s
Тестовая VM: Windows 10 — 4Core, 4 Gb ram
Raid10 из 6-ти SSD 1.6Tb
Input parameters:
        timespan:   1
        ————-
        duration: 300s
        warm up time: 5s
        cool down time: 0s
        measuring latency
        random seed: 0
        path: ‘C:\temp\testfile.dat’
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 60/40)
                block size: 65536
                using random I/O (alignment: 65536)
                number of outstanding I/O operations: 32
                thread stride size: 0
                threads per file: 8
                using I/O Completion Ports
                IO priority: normal
Results for timespan 1:
*******************************************************************************
actual test time:       300.00s
thread count:           8
proc count:             4
CPU |  Usage |  User  |  Kernel |  Idle
——————————————-
   0|  13.30%|   1.34%|   11.96%|  86.70%
   1|  13.41%|   1.44%|   11.97%|  86.59%
   2|  35.96%|   0.82%|   35.14%|  64.04%
   3|  13.22%|   1.47%|   11.76%|  86.78%
——————————————-
avg.|  18.97%|   1.27%|   17.71%|  81.03%
Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     44280840192 |       675672 |     140.76 |    2252.24 |   14.212 |    28.072 | C:\temp\testfile.dat (50GiB)
     1 |     44284313600 |       675725 |     140.78 |    2252.42 |   14.214 |    21.080 | C:\temp\testfile.dat (50GiB)
     2 |     43600904192 |       665297 |     138.60 |    2217.66 |   14.436 |    20.308 | C:\temp\testfile.dat (50GiB)
     3 |     44350177280 |       676730 |     140.99 |    2255.77 |   14.188 |    19.784 | C:\temp\testfile.dat (50GiB)
     4 |     44225069056 |       674821 |     140.59 |    2249.40 |   14.232 |    23.223 | C:\temp\testfile.dat (50GiB)
     5 |     44279136256 |       675646 |     140.76 |    2252.15 |   14.219 |    23.678 | C:\temp\testfile.dat (50GiB)
     6 |     43532812288 |       664258 |     138.39 |    2214.19 |   14.471 |    26.346 | C:\temp\testfile.dat (50GiB)
     7 |     44311314432 |       676137 |     140.86 |    2253.79 |   14.203 |    20.604 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      352864567296 |      5384286 |    1121.73 |   17947.61 |   14.271 |    23.059
Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     26538147840 |       404940 |      84.36 |    1349.80 |   12.790 |     9.769 | C:\temp\testfile.dat (50GiB)
     1 |     26569801728 |       405423 |      84.46 |    1351.41 |   12.789 |     9.769 | C:\temp\testfile.dat (50GiB)
     2 |     26155745280 |       399105 |      83.15 |    1330.35 |   13.022 |     9.901 | C:\temp\testfile.dat (50GiB)
     3 |     26604208128 |       405948 |      84.57 |    1353.16 |   12.804 |     9.813 | C:\temp\testfile.dat (50GiB)
     4 |     26480017408 |       404053 |      84.18 |    1346.84 |   12.793 |     9.774 | C:\temp\testfile.dat (50GiB)
     5 |     26542604288 |       405008 |      84.38 |    1350.03 |   12.782 |     9.746 | C:\temp\testfile.dat (50GiB)
     6 |     26122584064 |       398599 |      83.04 |    1328.66 |   12.988 |     9.745 | C:\temp\testfile.dat (50GiB)
     7 |     26560561152 |       405282 |      84.43 |    1350.94 |   12.780 |     9.756 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      211573669888 |      3228358 |     672.57 |   10761.19 |   12.843 |     9.785
Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     17742692352 |       270732 |      56.40 |     902.44 |   16.340 |    42.620 | C:\temp\testfile.dat (50GiB)
     1 |     17714511872 |       270302 |      56.31 |     901.01 |   16.352 |    30.985 | C:\temp\testfile.dat (50GiB)
     2 |     17445158912 |       266192 |      55.46 |     887.31 |   16.557 |    29.602 | C:\temp\testfile.dat (50GiB)
     3 |     17745969152 |       270782 |      56.41 |     902.61 |   16.264 |    28.752 | C:\temp\testfile.dat (50GiB)
     4 |     17745051648 |       270768 |      56.41 |     902.56 |   16.378 |    34.552 | C:\temp\testfile.dat (50GiB)
     5 |     17736531968 |       270638 |      56.38 |     902.13 |   16.368 |    35.352 | C:\temp\testfile.dat (50GiB)
     6 |     17410228224 |       265659 |      55.35 |     885.53 |   16.695 |    39.809 | C:\temp\testfile.dat (50GiB)
     7 |     17750753280 |       270855 |      56.43 |     902.85 |   16.333 |    30.162 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      141290897408 |      2155928 |     449.15 |    7186.42 |   16.410 |    34.306
total:
  %-ile |  Read (ms) | Write (ms) | Total (ms)
———————————————-
    min |      4.273 |      4.676 |      4.273
   25th |      9.180 |     10.148 |      9.414
   50th |     10.746 |     12.973 |     11.508
   75th |     13.249 |     15.445 |     14.376
   90th |     16.570 |     21.192 |     17.932
   95th |     19.865 |     25.831 |     23.767
   99th |     67.118 |    108.693 |     78.532
3-nines |    109.000 |    315.040 |    229.451
4-nines |    141.611 |   1014.329 |    687.713
5-nines |    235.820 |   3179.126 |   2023.188
6-nines |    246.224 |   8088.128 |   6240.128
7-nines |    256.618 |  15750.365 |  15750.365
8-nines |    256.618 |  15750.365 |  15750.365
9-nines |    256.618 |  15750.365 |  15750.365
    max |    256.618 |  15750.365 |  15750.365
Raid6 из 8-ми SSD 1.6Tb
Input parameters:
        timespan:   1
        ————-
        duration: 300s
        warm up time: 5s
        cool down time: 0s
        measuring latency
        random seed: 0
        path: ‘C:\temp\testfile.dat’
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 60/40)
                block size: 65536
                using random I/O (alignment: 65536)
                number of outstanding I/O operations: 32
                thread stride size: 0
                threads per file: 8
                using I/O Completion Ports
                IO priority: normal
Results for timespan 1:
*******************************************************************************
actual test time:       300.00s
thread count:           8
proc count:             4
CPU |  Usage |  User  |  Kernel |  Idle
——————————————-
   0|  13.30%|   1.34%|   11.96%|  86.70%
   1|  13.41%|   1.44%|   11.97%|  86.59%
   2|  35.96%|   0.82%|   35.14%|  64.04%
   3|  13.22%|   1.47%|   11.76%|  86.78%
——————————————-
avg.|  18.97%|   1.27%|   17.71%|  81.03%
Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     44280840192 |       675672 |     140.76 |    2252.24 |   14.212 |    28.072 | C:\temp\testfile.dat (50GiB)
     1 |     44284313600 |       675725 |     140.78 |    2252.42 |   14.214 |    21.080 | C:\temp\testfile.dat (50GiB)
     2 |     43600904192 |       665297 |     138.60 |    2217.66 |   14.436 |    20.308 | C:\temp\testfile.dat (50GiB)
     3 |     44350177280 |       676730 |     140.99 |    2255.77 |   14.188 |    19.784 | C:\temp\testfile.dat (50GiB)
     4 |     44225069056 |       674821 |     140.59 |    2249.40 |   14.232 |    23.223 | C:\temp\testfile.dat (50GiB)
     5 |     44279136256 |       675646 |     140.76 |    2252.15 |   14.219 |    23.678 | C:\temp\testfile.dat (50GiB)
     6 |     43532812288 |       664258 |     138.39 |    2214.19 |   14.471 |    26.346 | C:\temp\testfile.dat (50GiB)
     7 |     44311314432 |       676137 |     140.86 |    2253.79 |   14.203 |    20.604 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      352864567296 |      5384286 |    1121.73 |   17947.61 |   14.271 |    23.059
Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     26538147840 |       404940 |      84.36 |    1349.80 |   12.790 |     9.769 | C:\temp\testfile.dat (50GiB)
     1 |     26569801728 |       405423 |      84.46 |    1351.41 |   12.789 |     9.769 | C:\temp\testfile.dat (50GiB)
     2 |     26155745280 |       399105 |      83.15 |    1330.35 |   13.022 |     9.901 | C:\temp\testfile.dat (50GiB)
     3 |     26604208128 |       405948 |      84.57 |    1353.16 |   12.804 |     9.813 | C:\temp\testfile.dat (50GiB)
     4 |     26480017408 |       404053 |      84.18 |    1346.84 |   12.793 |     9.774 | C:\temp\testfile.dat (50GiB)
     5 |     26542604288 |       405008 |      84.38 |    1350.03 |   12.782 |     9.746 | C:\temp\testfile.dat (50GiB)
     6 |     26122584064 |       398599 |      83.04 |    1328.66 |   12.988 |     9.745 | C:\temp\testfile.dat (50GiB)
     7 |     26560561152 |       405282 |      84.43 |    1350.94 |   12.780 |     9.756 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      211573669888 |      3228358 |     672.57 |   10761.19 |   12.843 |     9.785
Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |     17742692352 |       270732 |      56.40 |     902.44 |   16.340 |    42.620 | C:\temp\testfile.dat (50GiB)
     1 |     17714511872 |       270302 |      56.31 |     901.01 |   16.352 |    30.985 | C:\temp\testfile.dat (50GiB)
     2 |     17445158912 |       266192 |      55.46 |     887.31 |   16.557 |    29.602 | C:\temp\testfile.dat (50GiB)
     3 |     17745969152 |       270782 |      56.41 |     902.61 |   16.264 |    28.752 | C:\temp\testfile.dat (50GiB)
     4 |     17745051648 |       270768 |      56.41 |     902.56 |   16.378 |    34.552 | C:\temp\testfile.dat (50GiB)
     5 |     17736531968 |       270638 |      56.38 |     902.13 |   16.368 |    35.352 | C:\temp\testfile.dat (50GiB)
     6 |     17410228224 |       265659 |      55.35 |     885.53 |   16.695 |    39.809 | C:\temp\testfile.dat (50GiB)
     7 |     17750753280 |       270855 |      56.43 |     902.85 |   16.333 |    30.162 | C:\temp\testfile.dat (50GiB)
——————————————————————————————————
total:      141290897408 |      2155928 |     449.15 |    7186.42 |   16.410 |    34.306
total:
  %-ile |  Read (ms) | Write (ms) | Total (ms)
———————————————-
    min |      4.273 |      4.676 |      4.273
   25th |      9.180 |     10.148 |      9.414
   50th |     10.746 |     12.973 |     11.508
   75th |     13.249 |     15.445 |     14.376
   90th |     16.570 |     21.192 |     17.932
   95th |     19.865 |     25.831 |     23.767
   99th |     67.118 |    108.693 |     78.532
3-nines |    109.000 |    315.040 |    229.451
4-nines |    141.611 |   1014.329 |    687.713
5-nines |    235.820 |   3179.126 |   2023.188
6-nines |    246.224 |   8088.128 |   6240.128
7-nines |    256.618 |  15750.365 |  15750.365
8-nines |    256.618 |  15750.365 |  15750.365
9-nines |    256.618 |  15750.365 |  15750.365
    max |    256.618 |  15750.365 |  15750.365

Тестирование СХД Lenovo V3700v2
Технические данные:
Сервер: ThinkSystem SR650 с ОС vmWare ESXi 6.7
Связь с СХД: SAS 12Gb/s
Тестовая VM: Windows 10 — 4Core, 4 Gb ram
Raid10 из 8-ми HDD 1.2Tb
Input parameters:
        timespan:   1
        ————-
        duration: 300s
        warm up time: 5s
        cool down time: 0s
        measuring latency
        random seed: 0
        path: ‘C:\tmp\testfile.dat’
                think time: 0ms
                burst size: 0
                software cache disabled
                hardware write cache disabled, writethrough on
                performing mix test (read/write ratio: 60/40)
                block size: 65536
                using random I/O (alignment: 65536)
                number of outstanding I/O operations: 32
                thread stride size: 0
                threads per file: 8
                using I/O Completion Ports
                IO priority: normal
Results for timespan 1:
*******************************************************************************
actual test time:       300.00s
thread count:           8
proc count:             2
CPU |  Usage |  User  |  Kernel |  Idle
——————————————-
   0|   5.36%|   1.10%|    4.26%|  94.64%
   1|  11.41%|   1.17%|   10.24%|  88.59%
——————————————-
avg.|   8.39%|   1.14%|    7.25%|  91.61%
Total IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |      3516465152 |        53657 |      11.18 |     178.86 |  178.896 |    89.420 | C:\tmp\testfile.dat (50GiB)
     1 |      3501850624 |        53434 |      11.13 |     178.11 |  179.654 |    87.727 | C:\tmp\testfile.dat (50GiB)
     2 |      3506307072 |        53502 |      11.15 |     178.34 |  179.440 |    92.605 | C:\tmp\testfile.dat (50GiB)
     3 |      3503489024 |        53459 |      11.14 |     178.20 |  179.582 |    90.849 | C:\tmp\testfile.dat (50GiB)
     4 |      3500670976 |        53416 |      11.13 |     178.05 |  179.725 |    91.092 | C:\tmp\testfile.dat (50GiB)
     5 |      3506044928 |        53498 |      11.15 |     178.33 |  179.454 |    88.880 | C:\tmp\testfile.dat (50GiB)
     6 |      3505717248 |        53493 |      11.14 |     178.31 |  179.456 |    90.562 | C:\tmp\testfile.dat (50GiB)
     7 |      3504930816 |        53481 |      11.14 |     178.27 |  179.503 |    89.441 | C:\tmp\testfile.dat (50GiB)
——————————————————————————————————
total:       28045475840 |       427940 |      89.15 |    1426.46 |  179.463 |    90.083
Read IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |      2113011712 |        32242 |       6.72 |     107.47 |  187.230 |    63.483 | C:\tmp\testfile.dat (50GiB)
     1 |      2106589184 |        32144 |       6.70 |     107.15 |  187.787 |    63.673 | C:\tmp\testfile.dat (50GiB)
     2 |      2097348608 |        32003 |       6.67 |     106.68 |  187.883 |    63.435 | C:\tmp\testfile.dat (50GiB)
     3 |      2095841280 |        31980 |       6.66 |     106.60 |  187.880 |    62.855 | C:\tmp\testfile.dat (50GiB)
     4 |      2102394880 |        32080 |       6.68 |     106.93 |  187.806 |    62.939 | C:\tmp\testfile.dat (50GiB)
     5 |      2103181312 |        32092 |       6.69 |     106.97 |  188.073 |    63.715 | C:\tmp\testfile.dat (50GiB)
     6 |      2098987008 |        32028 |       6.67 |     106.76 |  187.614 |    63.369 | C:\tmp\testfile.dat (50GiB)
     7 |      2097348608 |        32003 |       6.67 |     106.68 |  188.060 |    63.543 | C:\tmp\testfile.dat (50GiB)
——————————————————————————————————
total:       16814702592 |       256572 |      53.45 |     855.24 |  187.791 |    63.378
Write IO
thread |       bytes     |     I/Os     |    MiB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
——————————————————————————————————
     0 |      1403453440 |        21415 |       4.46 |      71.38 |  166.348 |   117.068 | C:\tmp\testfile.dat (50GiB)
     1 |      1395261440 |        21290 |       4.44 |      70.97 |  167.375 |   113.770 | C:\tmp\testfile.dat (50GiB)
     2 |      1408958464 |        21499 |       4.48 |      71.66 |  166.872 |   122.829 | C:\tmp\testfile.dat (50GiB)
     3 |      1407647744 |        21479 |       4.47 |      71.60 |  167.228 |   120.021 | C:\tmp\testfile.dat (50GiB)
     4 |      1398276096 |        21336 |       4.44 |      71.12 |  167.573 |   120.714 | C:\tmp\testfile.dat (50GiB)
     5 |      1402863616 |        21406 |       4.46 |      71.35 |  166.532 |   115.665 | C:\tmp\testfile.dat (50GiB)
     6 |      1406730240 |        21465 |       4.47 |      71.55 |  167.282 |   119.163 | C:\tmp\testfile.dat (50GiB)
     7 |      1407582208 |        21478 |       4.47 |      71.59 |  166.753 |   116.755 | C:\tmp\testfile.dat (50GiB)
——————————————————————————————————
total:       11230773248 |       171368 |      35.70 |     571.23 |  166.995 |   118.286
total:
  %-ile |  Read (ms) | Write (ms) | Total (ms)
———————————————-
    min |     47.425 |     46.367 |     46.367
   25th |    149.868 |    129.191 |    139.985
   50th |    178.619 |    152.818 |    166.230
   75th |    213.378 |    174.553 |    197.617
   90th |    259.509 |    199.680 |    244.662
   95th |    293.236 |    239.224 |    287.586
   99th |    395.146 |    650.713 |    534.227
3-nines |    693.805 |   1597.480 |   1197.029
4-nines |    813.842 |   2602.867 |   2247.943
5-nines |    876.860 |   3913.429 |   3344.462
6-nines |    960.990 |   6291.888 |   6291.888
7-nines |    960.990 |   6291.888 |   6291.888
8-nines |    960.990 |   6291.888 |   6291.888
9-nines |    960.990 |   6291.888 |   6291.888
    max |    960.990 |   6291.888 |   6291.888

Сводная таблица:

Дисковая система Условие Ср. скорость чтения MiB/s Ср. скорость записи MiB/s Ср. read IOps Ср. write IOps
Lenovo DS4200 Raid10 из 6-ти SSD 1.6Tb 672.57 449.15 10761.19 7186.42
Lenovo DS4200 Raid6 из 8-ми SSD 1.6Tb 395.01 263.85 6320.17 4221.67
Lenovo V3700v2
Raid10 из 8-ми HDD 1.2Tb
53.45 35.70 855.24 571.23

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *