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

Как найти узкие места в производительности виртуализации?

Недавно мы начали переносить наши серверы сборки C ++ с реальных машин на виртуальные машины. (MS Hyper-V)

У нас есть проблемы с производительностью, которые я пока не знаю, как их решить. У нас есть:

Теперь проблема в том, что мы сравнили время сборки между 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-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.

Но сначала вы выполните нормальную работу шаг за шагом - выясните, где находится узкое место, с помощью монитора ресурсов и производительности.

У меня была аналогичная проблема в прошлом, мы отследили ее до написать кеширование Отключите его на своем физическом сервере и попробуйте еще раз.

Еще нужно иметь в виду, что вы просто боретесь с множеством различий,

  1. ВМ
  2. Различная память
  3. Разные диски (VHD против физических)

Устраните как можно больше и попробуйте снова.

Проверьте настройки BIOS относительно. производительность. (Мы изменили его с «Custom» на «Full Performance».)

Мы выяснили, что на этом сервере система не обнаруживает полную нагрузку, когда полная нагрузка поступает из виртуальной машины Hyper-V, а это означает, что процессор не работал на частоте 1,6 ГГц, а не работал на полную мощность. Speed ​​Stepping действительно работал при работе на «настоящей» ОС - насколько мы можем судить, именно в этом и появилась разница.