Недавно мы начали переносить наши серверы сборки C ++ с реальных машин на виртуальные машины. (MS Hyper-V)
У нас есть проблемы с производительностью, которые я пока не знаю, как их решить. У нас есть:
Test-Box
- это аппаратная часть настольной рабочей станции, которую мой коллега использовал для настройки виртуальной машины, прежде чем мы переместили ее на фактическое серверное оборудование.Srv-Box
- это серверное оборудованиеTest-Box-Real
- Это Windows, работающая непосредственно на Test-Box HW.Test-Box-VM
- Это Windows в виртуальной машине Hyper-V на Test-Box HW.Srv-Box-Real
- Это Server2008R2, работающий на HW Srv-Box.Srv-Box-VM
- Это Windows, работающая в виртуальной машине Hyper-V на HW Srv-Box, то есть на Srv-Box-Real.Теперь проблема в том, что мы сравнили время сборки между Test-Box-Real
и Test-Box-VM
и они были практически равны (в пределах 2%).
Затем мы переместили виртуальную машину на машину Srv-Box, и мы увидели, что у нас есть значительное снижение производительности между Srv-Box-Real
и Srv-Box-VM
, то есть там, где мы не увидели различий в тестовом HW, теперь мы действительно видим существенные различия в производительности на фактическом Server HW. (Строится примерно на 50% медленнее внутри виртуальной машины.)
Я должен добавить, что и Test-Box, и Srv-Box работают только с этим одиночная ВМ и больше ничего не делать.
Я также должен отметить, что «Настоящая» ОС - это Win2008R2 (64-разрядная), а ОС, размещенная на виртуальной машине, - это Wind2003R2 (32-разрядная).
Технические характеристики оборудования:
Srv-Box
:
Test-Box
:
Еще раз обратите внимание, что меня интересуют только различия между Srv-Box-Real и Srv-Box-VM (высокий) и различия между ними. Test-Box-Real и Test-Box-VM (низкий).
Почему одна машина будет иметь паритет при сравнении виртуальной машины с реальной производительностью, а другая (не меньше HW серверного уровня) будет иметь большое несоответствие? (Оба процессора XEON ...)
Начните с очевидного - следите за счетчиками производительности, если возможно, с помощью Ressource MOnitor. Как процессор, обработка ввода-вывода? Стандартное узкое место - это в значительной степени ввод-вывод, и ваши 2 диска звучат как довольно плохой ввод-вывод для всего, что имеет более 2-3 виртуальных машин, особенно когда что-то жесткое, например, сервер сборки для C ++, попадает в него (то есть на основе HEAVY IO, компиляторы в в целом есть, но C ++ довольно обширен в этой области - я использую SSD только для сборки).
Это стандартный Admin - на данный момент ничего особенного в виртуальной машине. В основном, чтобы найти узкое место, вы сначала его находите.
IO также может быть - динамические диски. Помогает вставить нединамический диск ТОЛЬКО на этапе сборки (рабочие файлы). Там происходит ТОННА IO.
Да, у Raptor меньше операций ввода-вывода в секунду, чем у 15k SAS, но тогда он, скорее всего, НЕ ОБЩИЙ.
Использует ли SRV-HW все ядра процессора? Другой предмет, тогда ...
Что касается лимита вашего процессора, кстати, ТЕКУЩАЯ версия Hyper-V поддерживает НАМНОГО больше ядер, чем 4 на виртуальную машину, поэтому обновление может быть в порядке ... Server 2012 доступен практически для всех, кто не покупает коробку в магазине. прямо сейчас я получил свою копию 16 августа из репозиториев MS.
Но сначала вы выполните нормальную работу шаг за шагом - выясните, где находится узкое место, с помощью монитора ресурсов и производительности.
У меня была аналогичная проблема в прошлом, мы отследили ее до написать кеширование Отключите его на своем физическом сервере и попробуйте еще раз.
Еще нужно иметь в виду, что вы просто боретесь с множеством различий,
Устраните как можно больше и попробуйте снова.
Проверьте настройки BIOS относительно. производительность. (Мы изменили его с «Custom» на «Full Performance».)
Мы выяснили, что на этом сервере система не обнаруживает полную нагрузку, когда полная нагрузка поступает из виртуальной машины Hyper-V, а это означает, что процессор не работал на частоте 1,6 ГГц, а не работал на полную мощность. Speed Stepping действительно работал при работе на «настоящей» ОС - насколько мы можем судить, именно в этом и появилась разница.