Работа Hyper-V с процессорами Sandy Bridge и Westmere

Sandy Bridge и Advanced Vector Extensions (AVX).

С течением времени мы становимся свидетелями эволюции архитектуры микропроцессоров, а также системы их команд. Новые поколения процессоров приносят новые инструкции, изменение количества ядер, размера кэша. Раз в пару лет появляются существенные изменения, фундаментальные наборы инструкций. Последними примерами таких фундаментальных наборов являются SSE 4.1 и SSE 4.2. В своё время в заметке «Работа процессора в Hyper-V» я рассказывал о том, что такое функциональная спецификация гипервизора, и какие инструкции доступны хосту и виртуальным машинам. В феврале 2011 года Intel представил второе поколение процессоров Core iX, поколения Sandy Bridge. Кроме изменений с оптимизацией, частотами и производительностью, в Sandy Bridge появился новый фундаментальный набор инструкций Advanced Vector Extensions (AVX). Впервые предложенная разработчикам в 2008 году, идея AVX нашла свою реализацию в процессорах Intel лишь в начале 2011 года. Также, этот набор лицензирован компанией AMD, их появление планируется в процессорах Bulldozer. В текущих процессорах Xeon Westmere, вышедших даже позднее Sandy Bridge, этого набора нет. Ждём скорого обновления в линейке Xeon?

В операционной системе Windows Server 2008 и даже в Windows Server 2008 R2 поддержки этому набору инструкций нет. К сожалению, это означает, что гипервизор не понимает фундаментального набора инструкций и из соображений безопасности не запускает виртуальные машины. При попытке запуска вы получаете сообщение типа «An error occurred while attempting to start the selected virtual machine(s). <virtual machine name> could not initialize» и событие 3040 в Журнале Событий от Hyper-V-Worker в разделе Applications and Services Logs: «<virtual machine name> Failed to set/change partition property».

Поддержка набора инструкций AVX добавлена в Windows Server 2008 R2 Service Pack 1. Установив первый пакет обновлений, вы решите проблему на новых серверах. Если по каким-то причинам не можете установить Service Pack 1 (например, ваша система сертифицирована на оригинальную версию ОС), для вас доступно обновление 2517374. Обновление предназначено только для оригинальной версии Windows Server 2008 R2, оно уже включено в пакет обновлений.

Для Windows Server 2008 пока что не поступало запросов на поддержку Sandy Bridge. Видимо, мало кто из обладателей нового поколения Core i7 устанавливает серверную ОС Microsoft прошлого поколения для задач виртуализации. Если у вас как раз такой случай, и вы имеете контракт Премьер Поддержки, попробуйте обратиться, может быть соберут обновление и для Windows Server 2008.

После установки Service Pack 1 или обновления 2517374 набор инструкций AVX понятен гипервизору и даже транслируется виртуальным машинам. Внутри виртуальных машин также доступны эти инструкции. Очевидно, что если вы добавляете новые серверы с AVX в существующий кластер, вам будет необходимо помнить о работе режима совместимости процессора, нормализующем список инструкций, доступных для виртуальных машин.  Я подробно описывал этот режим в отдельной заметке и кое-что дополнял в статье  «Работа процессора в Hyper-V»

Sandy Bridge, Westmere и большие объёмы памяти.

Те, кто читали мою заметку об обновлениях, появляющихся после выхода Windows Server 2008 R2 Service Pack 1, помнят, что я описывал там обновление 2517329, которое исправляет ошибку работы с большими объёмами памяти на серверах с Sandy Bridge и Westmere. Так вот, обновление 2517329 кумулятивно по отношению к 2517374, и доступно к установке на Windows Server 2008 R2 без Service Pack 1. Его я рекомендую установить всем, кто имеет систему с Sandy Bridge или Westmere, вне зависимости от того, установили ли вы уже пакет обновлений или нет.