Назад | Перейти на главную страницу

Снижение производительности оборудования для виртуальных машин Hyper-V поколения 2

У меня такая конфигурация:

Я провел несколько тестов на дисках 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 в процессе внутреннего контроля качества.

https://blogs.technet.microsoft.com/josebda/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and- smb-файловые-ресурсы /

Во-вторых, это известная проблема с 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.

Надеюсь, что-то у вас сработает. Пожалуйста, обновите свои результаты для будущих люркеров :)