Сравнительный анализ режима совместимости процессоров Hyper-V — каково влияние?
С момента своего дебюта в Windows Server 2008 Hyper-V включает функцию, называемую режимом совместимости процессоров. Идея этой функции заключается в том, что, поскольку хост-серверы не обязательно созданы одинаково, режим совместимости процессоров Hyper-V обеспечивает способ живой миграции виртуальных машин между хост-серверами с разными процессорами. Он делает это, ограничивая виртуальную машину, чтобы она использовала только самые основные функции ЦП, а не могла использовать преимущества более современных возможностей процессора.
Принято считать, что режим совместимости с процессорами Hyper-V не следует использовать, за исключением случаев, когда требуется динамическая миграция виртуальных машин (или миграция виртуальных машин, находящихся в сохраненном состоянии) между серверами с разными процессорами. В противном случае лучше не использовать режим совместимости процессоров, так как неспособность виртуальной машины получить доступ к расширенным функциям ЦП предположительно влияет на производительность виртуальной машины.
Мне всегда было любопытно, насколько сильно влияет на производительность режим совместимости с процессором Hyper-V. На протяжении многих лет я читал (и даже писал) различные сообщения в блогах, в которых говорилось, что режим совместимости процессора не следует использовать, если он действительно не нужен. Тем не менее, я не могу припомнить, чтобы Microsoft когда-либо предупреждала своих клиентов о том, что включение режима совместимости процессоров вызовет серьезные проблемы с производительностью. Возможно, Microsoft в какой-то момент выпустила такое заявление, но я не могу припомнить, чтобы когда-либо видел его. Поэтому я решил провести неформальное тестирование производительности, чтобы определить, насколько режим совместимости процессоров Hyper-V действительно влияет на производительность виртуальной машины.
Идея примерного уровня
Прежде чем я начну, я должен указать, что результаты моего теста не следует рассматривать как окончательные. Некоторые рабочие нагрузки интенсивно используют расширенные функции ЦП, а другие — нет. Таким образом, результаты моих тестов действительны только для моей конкретной рабочей нагрузки. Тем не менее, тесты должны дать хотя бы примерное представление о влиянии режима совместимости процессоров на общую рабочую нагрузку.
Для целей этого теста я установил полностью исправленную копию Windows 10 на виртуальную машину Hyper-V. ВМ работает на хосте Windows Server 2012 R2. Для теста я отключил все остальные виртуальные машины, так что только моя тестовая виртуальная машина работала на хосте.
Затем я установил Cinebench на виртуальную машину и провел тест производительности процессора. Я решил использовать именно этот инструмент, потому что он присваивает ЦП простую числовую оценку на основе его производительности. Я подумал, что такой подход может быть лучше, чем использование набора метрик, с которыми знакомы только те, кто хорошо разбирается в оборудовании.
Таким образом, когда виртуальная машина находится в состоянии простоя, Cinebench дал ЦП виртуальной машины 353 балла. Если вы посмотрите на рисунок ниже, вы увидите, что Cinebench также показывает, как этот ЦП сравнивается с другими широко используемыми ЦП. В этом случае виртуальная машина заняла последнее место в рейтинге. Однако это не столько отражение возможностей Hyper-V, сколько моего оборудования. Мой хост Hyper-V работает на старом лабораторном оборудовании, поэтому я ожидаю низкой оценки.
Включение режима совместимости процессора Hyper-V
Получив результат эталонного теста, я выключил виртуальную машину и включил режим совместимости процессоров. Для тех, кто, возможно, никогда не использовал режим совместимости процессора, вы можете включить его в диспетчере Hyper-V, щелкнув правой кнопкой мыши на виртуальной машине и выбрав команду «Настройки» в контекстном меню. Когда откроется диалоговое окно «Настройки», разверните узел «Процессор» и нажмите «Совместимость». Теперь установите флажок «Мигрировать на физический компьютер с другой версией процессора», как показано ниже, и нажмите «ОК».
С включенным режимом совместимости процессора я загрузил виртуальную машину, вошел в систему, а затем подождал, пока загрузка процессора виртуальной машины стабилизируется. После нескольких минут ожидания я снова запустил Cinebench, чтобы увидеть, какое влияние режим совместимости процессоров оказал на производительность виртуальной машины. На этот раз Cinebench набрал 346 баллов, как показано ниже. Оценка была на семь баллов ниже, чем раньше, но, учитывая шкалу оценок Cinebench, я не считаю это большой разницей.
Одна из вещей, которую я узнал о бенчмаркинге за эти годы, заключается в том, что если вы не проводите бенчмаркинг в очень тщательно контролируемых условиях, результаты нельзя считать научными. Вы можете получить разные результаты для каждого теста, даже если в среде тестирования ничего не изменилось. Эти различия могут быть связаны с такими вещами, как накладные расходы ОС и фоновые процессы. Таким образом, я провел тест производительности еще пять раз, как с включенным режимом совместимости с ЦП, так и без него, а затем усреднил результаты вместе. Вот результаты тестирования:
Глядя на показатели, показанные выше, вы начинаете понимать, почему важно брать несколько точек данных при оценке производительности системы. Значения, полученные в результате тестов, далеки от постоянства. На самом деле тесты дали действительно интересные цифры. Самая низкая оценка, полученная, когда режим совместимости процессоров не был включен, составляла 345, и это число появлялось более одного раза. Наивысший балл, полученный при работе с включенным режимом совместимости процессоров, составил 346 — на один балл выше, чем самый низкий балл, который я получил при включенном режиме совместимости процессоров. Если бы это были единственные две точки данных, это создало бы иллюзию того, что система на самом деле работает лучше с включенным режимом совместимости процессора Hyper-V. Однако в действительности виртуальная машина набрала в среднем на восемь баллов больше, когда она не использовала режим совместимости процессоров.
Выводы — с оговорками
Как я упоминал в начале этой статьи, мои тесты были какими угодно, только не научными. Но они дают представление о том, как режим совместимости процессоров влияет на некоторые рабочие нагрузки. Тем не менее, важно помнить, что влияние включения режима совместимости процессоров сильно зависит от выполняемой рабочей нагрузки. Даже Microsoft говорит, что «трудно количественно оценить общее влияние режима совместимости процессоров на производительность. Потеря производительности в первую очередь зависит от рабочей нагрузки, выполняемой на виртуальной машине. На некоторые рабочие нагрузки это никак не повлияет, в то время как другие покажут заметную разницу. Программное обеспечение, которое в значительной степени зависит от аппаратной оптимизации (например, шифрование, сжатие или интенсивные вычисления с плавающей запятой), будет затронуто больше всего».