У меня такая конфигурация:
Я провел несколько тестов на дисках Windows Storage Space Mirrored 950 PRO с помощью Crystal Disk. Это следующая статистика.
При испытании на голом металле
Sequential Read (Q= 32,T= 1) : 4178.159 MB/s
Sequential Write (Q= 32,T= 1) : 1504.286 MB/s
Random Read 4KiB (Q= 32,T= 1) : 460.155 MB/s [112342.5 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 266.983 MB/s [ 65181.4 IOPS]
Sequential Read (T= 1) : 2042.397 MB/s
Sequential Write (T= 1) : 1500.305 MB/s
Random Read 4KiB (Q= 1,T= 1) : 40.059 MB/s [ 9780.0 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 76.623 MB/s [ 18706.8 IOPS]
При тестировании в ВМ
Sequential Read (Q= 32,T= 1) : 4635.549 MB/s
Sequential Write (Q= 32,T= 1) : 1502.071 MB/s
Random Read 4KiB (Q= 32,T= 1) : 181.225 MB/s [ 44244.4 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 110.272 MB/s [ 26921.9 IOPS]
Sequential Read (T= 1) : 1624.129 MB/s
Sequential Write (T= 1) : 1381.203 MB/s
Random Read 4KiB (Q= 1,T= 1) : 24.528 MB/s [ 5988.3 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 34.563 MB/s [ 8438.2 IOPS]
У меня почти на 50% снизилась производительность при произвольном чтении / записи. Я перепроверил пару раз, чтобы подтвердить значения. Этого следовало ожидать?
Прежде всего, лучше использовать DiskSPD, чем что-либо еще. Просто потому, что Microsoft использует DiskSPD в процессе внутреннего контроля качества.
Во-вторых, это известная проблема с Hyper-V. Это даже более или менее похоже на Windows Server 2016. В двух словах обычно наблюдается падение производительности ввода-вывода в 2–4 раза, если ваше базовое хранилище имеет очень низкую задержку. Вы можете попробовать несколько обходных путей, чтобы улучшить свои условия:
Используйте несколько томов. Не выделяйте несколько CSV поверх одного виртуального диска или пространства имен, а лучше убедитесь, что локальные точки монтирования (если вы запускаете виртуальные машины прямо из DAS), общие ресурсы CSV или SMB3 заканчиваются поверх разных логических томов! Вам понадобится одна виртуальная машина с несколькими файлами VHD или несколько виртуальных машин, чтобы таким образом «агрегировать» комбинированную производительность. Если у вас есть одна виртуальная машина с одним подключенным виртуальным жестким диском, этот подход явно не поможет.
Используйте «среднего человека». Это своего рода постепенное улучшение в рамках первого из перечисленных подходов. Вы получаете несколько логических томов, оборачиваете некоторое программно-определяемое хранилище на основе Windows поверх и позволяете ему агрегировать производительность ввода-вывода для вашей отдельной виртуальной машины с одним подключенным виртуальным жестким диском. Это может произойти, если вы запустите одну виртуальную машину Oracle RAC или SQL Server, и это именно та, для которой вам нужен высокий IOPS.
Отключить планировщик ввода-вывода. Установить ключ реестра ...
"HKLM \ SYSTEM \ CurrentControlSet \ Control \ StorVSP \ IOBalance \ Enabled"
... до нуля! P.S. Не забудьте перезагрузиться, так как на лету ничего не меняется.
Это может работать, а может и не работать. Мы получаем прирост на ± 20% на паре SSD Samsung 850 Pro в RAID0.
Надеюсь, что-то у вас сработает. Пожалуйста, обновите свои результаты для будущих люркеров :)