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

Hyper-V не масштабирует доступ к процессору для виртуальной машины Windows Server 2000

У меня есть стойка Dell R710, в которой размещено несколько виртуальных машин:

Моя проблема связана с виртуальным сервером Windows 2000, работающим в указанной выше системе. На этом сервере работает IIS 6, некоторые cgi-скрипты и некоторые asp-страницы. Все связано с серверной частью Visual FoxPro DB.

Мой вопрос в том, как увеличить мощность моей виртуальной машины Windows 2000, или это вообще возможно? Мои настройки Hyper-V для виртуальной машины были:

С этой конфигурацией, если я вошел в веб-службы с 3 учетными записями, я мог бы резко увеличить виртуальную машину Win2000 до 100%. Затем я настроил параметры Hyper-V для сервера все выше и выше, пока не достиг:

Самое интересное в том, что все мои тесты (верхняя конфигурация и нижняя) мой стоечный сервер сидел прибл. Общая загрузка ЦП 5%. Между тем, моя виртуальная машина Win2000 каждый раз выполняла одно и то же (закрепленный процессор с тремя учетными записями, выполняющими один и тот же поиск, или загрузка ЦП на 30% с одной учетной записью, выполняющей поиск).

Я также попытался настроить параметр совместимости процессора для «Запускать более старую операционную систему, например Windows NT». Однако я не пробовал параметр «Перенести на физический компьютер с другой версией процессора».

Есть ли проблема с виртуализацией сервера Windows 2000? Есть ли что-то еще, что я могу попытаться захватить больше циклов ЦП с хост-сервера? В идеале я бы хотел, чтобы при закреплении виртуальной машины Win2000 на хосте использовалось 25-50%.

Некоторая справочная информация: это наши старые устаревшие сервисы, которые в настоящее время переписываются в .Net. Скорее всего, можно добиться улучшения производительности при рефакторинге устаревшего исходного кода, но это не вариант. Нашему магазину не хватает опыта в FoxPro, и было принято бизнес-решение, что лучше потратить усилия на переписывание.

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

Заранее благодарим за любые предложения, которые могут у вас возникнуть.

Во-первых, только Windows 2000 поддерживает один виртуальный процессор на Hyper-V.

Во-вторых, измерить использование ЦП хост-сервера не так просто, как с помощью диспетчера задач, поскольку диспетчер задач сам работает на виртуальной машине. Для получения дополнительной информации об измерении использования ЦП в Hyper-V, пожалуйста, ознакомьтесь с Эта статья.

Ваша первая проблема в вашем небольшом тесте с 4 ядрами заключается в том, что вы используете неподдерживаемую конфигурацию. Когда вы работаете без поддержки, результаты трудно предсказать. Проверять, выписываться этот документ от Microsoft. Вы можете запустить только один процессор при использовании Windows Server 2000 на Hyper V.

Если вы дадите своей виртуальной машине одно ядро ​​и назначите ей 100% этого ядра, вы достигнете максимальной производительности этой системы. Другие варианты - развернуть физический ящик или развернуть гипервизор, поддерживающий SMP в Windows 2000 (например, ESXi).

Оба других ответа верны. Обращение в Microsoft за поддержкой Hyper-V и Windows 2000 приведет к тому, что вам сообщат, что единственная поддерживаемая конфигурация включает один виртуальный процессор.

С учетом сказанного, я подозреваю, что вы каждый раз получаете точно такую ​​же производительность, потому что Windows 2000 не перенастраивалась автоматически как многопроцессорная установка, когда вы добавляли виртуальные процессоры. Windows 2000 использовала только один CPU, даже когда вы ему присвоили четыре.

Вам нужно перейти в диспетчер устройств и изменить HAL с однопроцессорного HAL на многопроцессорный HAL. (Обновите драйвер на компьютере.) Это вызовет установку многопроцессорного ядра, ntdll, HAL и т. Д. Моя память говорит, что было изменено около шести двоичных файлов.

Обратите внимание, что это поездка в одну сторону. После этого ваш VHD Windows 2000 будет запускать многопроцессорный код в течение неопределенного времени, даже если вы вернетесь к одному виртуальному процессору. Возможно, вы захотите сначала создать резервную копию своего VHD, поскольку эти многопроцессорные двоичные файлы менее эффективны, чем однопроцессорные, при работе с одним виртуальным ЦП.

Наконец, поймите, что причина того, что Microsoft не поддерживает больше процессоров для Windows 2000, частично связана с тем фактом, что ядро ​​Windows 2000 не знает, что оно не виртуализировано, и что у него есть некоторые жесткие предположения, что все процессоры работают постоянно. Нарушение этого предположения путем виртуализации большего количества процессоров приведет к менее линейному приросту производительности (кашель, кашель). Вы можете получить разумную производительность с двумя процессорами. Больше, наверное, не поможет.