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

Разница в производительности дискового ввода-вывода - Hyper-V / CSV - гость или хост

у меня есть два разные Hyper-V 2012 R2 среды, которые используют iSCSI для подключения к хранилищу виртуальной машины. Хотя среды различны (одна - все 10 ГБ, а другая - смешанная 1 ГБ / 10 ГБ, одна использует массив SSD в RAID 6, а другой - RAID 10, распределенный по двум массивам), я наблюдаю странное поведение. тот же самый.

Суть в том, что когда я запускаю тест ввода-вывода диска прямо на хосте по сравнению с CSV я получаю конкретное значение для среднего числа операций ввода-вывода в секунду. Однако когда я запускаю тем же тест в пределах виртуальную машину на ее "локальный" диск (файл vhdx, который хранится в CSV), я получаю значительно уменьшается Значение IOPS.

Для сравнения: вот среда, которую я тестирую.

Когда я запускаю тест с CSV из хозяин (C:\ClusterStorage\VM-Infrastructure), Я получаю около 22k / 9kсоответственно. Однако когда я запускаю тот же тест в виртуальной машине против ее C:\Temp папка (с файлом VHDX виртуальной машины, хранящимся в массиве в C:\ClusterStorage\VM-Infrastructure') Я получаю количество 13 тыс. / 6 тыс..

Это известная проблема? Существуют ли какие-либо конкретные настройки хоста / виртуальной машины, на которые я должен обратить внимание, чтобы приблизить производительность виртуальной машины к той, которую я получаю на хосте? Падение производительности чтения с 22k до 13k довольно драматично. Я подумал, что будет слабый попадает в виртуальную машину, но не так сильно - в некоторых случаях достигает 40%.

[global]
ioengine=windowsaio
directory=C\:\ClusterStorage\VM-Infrastructure
;directory=C\:\Temp
rw=randrw
rwmixread=70
;rwmixwrite=30
direct=1 ; 1 for direct IO, 0 for buffered IO
bs=8k
iodepth=32 ; For async io, allow 'x' ios in flight
invalidate=1 ; Invalidate page cache for file prior to doing io
numjobs=16 ; Create 'x' similar entries for this job
runtime=120
group_reporting ; ?
thread ; Use pthreads instead of forked jobs

[workload]
name=8k7030test
size=500m

После дальнейших исследований и некоторых дискуссий с экспертами по хранению виновник был найден.

Несмотря на то, что хост запускал не замужем виртуальная машина, и эта виртуальная машина была только клиент читает и записывает массив хранения, встроенный Хранилище Hyper-V и подсистема балансировки сетевой нагрузки включали и подавляли виртуальную машину. Когда балансировщик нагрузки был отключен, виртуальная машина показывала значения IOPS, очень близкие к тому, что мы видели непосредственно с хоста.

Для операций хранения задержка порог ценность 83 ms и 2 ms для сетей. Насколько мы можем судить, пороговые значения по умолчанию слишком агрессивны или просто не подходят для подключений к хранилищу iSCSI. (Соединения iSCSI, конечно, увеличивают задержку, которую вы не увидите с напрямую подключенным или локальным хранилищем.) Параметр реестра, который управляет этим (для хранилища), HKLM\System\CurrentControlSet\Services\StorVsp\IOBalance\Enabled. Установка значения 0 отключает балансир.

Более подробную информацию можно найти на сайте http://www.aidanfinn.com/?p=13232

Пока не решили, будем ли держать балансир выключенным. Очевидно, что он есть и срабатывает не зря. Хотя это, вероятно, не должно быть включено для нескольких виртуальных машин, когда я начну загружать хост, это будет более полезно. Моей главной целью было понимание Зачем мои цифры были такими несопоставимыми.