Hyper-V и производительность. Часть 1 — как тестировать?

Обычно перед принятием решения о консолидации серверов в виртуальной среде или миграции с альтернативных платформ на виртуализацию Microsoft требуется провести тестирование производительности работы гостевой ОС и приложений. Сегодня мы немного поговорим о том, что необходимо иметь в виду при подготовке к такому тестированию, как правильно настраивать гостевую ОС и саму виртуальную машину, чтобы получить хорошую производительность. Рассмотрим три главных шага, ведущих к получению достойного результата. Эти шаги следует выполнять не только при тестировании, но и для достижения нужных результатов в эксплуатируемых системах.

Шаг 1. Установите компоненты интеграции. Integration Components — это такой же важный элемент работы виртуальной машины Hyper-V, как Virtual Machine Additions в Virtual Server 2005. Установка компонентов интеграции увеличивает производительность на десятки, а иногда и на сотни процентов. Поэтому прежде всего убедитесь, что у вас установлены компоненты интеграции. Есть несколько способов сделать это. Один из способов — подключить виртуальный диск к контроллеру SCSI вашей ВМ. Виртуальный контроллер SCSI использует шину VMBus, и если компоненты интеграции не установлены или работают некорректно, то вы не увидите подключенного диска.

В Hyper-V операционная система может загружаться только с контроллера IDE, для работы которого не требуется запущенных компонентов интеграции. Сами же данные и приложения я рекомендую размещать на дисках, подключенных к виртуальному контроллеру SCSI. В отличии от Virtual Server 2005, в Hyper-V после установки компонентов интеграции как правило нет существенной разницы в производительности дисков, подключенных к контроллерам IDE или SCSI. Однако на некоторых задачах такая разница все-таки существует, поэтому если вы собираетесь производить тестирование — я рекомендую использовать для данных и приложений диски, подключенные к виртуальному контроллеру SCSI.

Втором способом проверки наличия установленных компонентов интеграции будет просто открыть Диспетчер устройств и проверить наличие шины VMBus и устройств, ассоциированных с Hyper-V. Их список может отличаться в зависимости от версии и языка ОС, а также версии самих компонентов интеграции. Также в Диспетчере устройств вы сможете изучить свойства драйвера шины VMBus, чтобы узнать версию установленных компонентов интеграции. Убедитесь в том, что версия компонентов интеграции и самого Hyper-V на сервере совпадают. Подробнее о версиях смотрите «Версии Hyper-V».

Шаг 2. Во время замера производительности закройте все подключения к данному серверу через Hyper-V Manager. В открытом окне Hyper-V Manager нет ничего плохого, однако он постоянно запрашивает статус виртуальных машин и отображает консоль в небольшом окне, что влияет на производительность. Если для вас важно иметь запущенный Hyper-V Manager — сверните его, при этом он перестанет опрашивать виртуальные машины. Я все-таки рекомендовал бы именно закрыть его на время тестирования.

Шаг 3. Не используйте VMConnect для соединения с тестируемой машиной. Если вы установили соединение с виртуальной машиной из Hyper-V Manager — у вас открылось окно утилиты VMConnect, через которое вы получаете доступ к ее консоли. Даже если затем вы перехватите сессию используя «Удаленный рабочий стол» — окно VMConnect все равно будет отображать заблокированную консольную сессию гостевой ОС, потребляя ресурсы. Для задач тестирования пользуйтесь только «Удаленным рабочи столом», а не VMConnect. Вы же не будете постоянно держать консоль открытой после внедрения. Если тестирование происходит автоматически и не требует вашего вмешательства, то и «Удаленный рабочий стол» следует свернуть или закрыть. Для получения максимальных результатов запускайте задачи на тестируемой ВМ удаленно при помощи утилиты PsExec.

Выполнив эти три простых рекомендации вы добьетесь от вашей виртуальной машины мксимума производительности. В дальнейшем я расскажу о резервировании и ограничении ресурсов, а также дам советы по оптимизации и способах измерения производительности.