Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 4)

Опубликовано: 19 Апреля, 2023

  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 2)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 3)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 5)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 6)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 7)

Одна из тем, которую я пытался подчеркнуть в этой серии статей, — это идея о том, что достижение максимально возможной плотности виртуальных машин означает эффективное использование доступных физических аппаратных ресурсов. Идея состоит в том, чтобы предоставить виртуальным машинам достаточно ресурсов, чтобы обеспечить их правильную работу, но не допустить предоставления виртуальных машин ненужных ресурсов.

Не менее важно отслеживать предоставленные ресурсы. Каждый хост-сервер Hyper-V имеет ограниченное количество доступных аппаратных ресурсов. Эти ресурсы должны совместно использоваться родительским разделом (Windows Server и Hyper-V) и любыми виртуальными машинами, работающими на узле.

Небольшим организациям, использующим автономные серверы Hyper-V или неуправляемые кластеры Hyper-V, обычно приходится отслеживать распределение ресурсов вручную. Консоль диспетчера Hyper-V на самом деле не включает механизм отслеживания назначенных и доступных ресурсов. Если вам нужны эти возможности, предпочтительным инструментом является диспетчер виртуальных машин systems Center 2012 (VMM 2012). VMM 2012 позволяет резервировать ресурсы специально для операционной системы хоста. Это также позволяет вам определять пулы ресурсов, которые могут быть выделены виртуальным машинам.

Использование System Center 2012 Virtual Machine Manager для предоставления ресурсов выходит за рамки этой серии статей. Тем не менее, я хотел упомянуть его возможности, потому что вы можете использовать VMM 2012, чтобы сделать то, что я собираюсь показать вам в оставшейся части этой серии статей, немного проще.

Назначение виртуального процессора

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

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

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

Итак, если виртуальный процессор отличается от физического ядра ЦП, то что такое виртуальный процессор? Виртуальный процессор на самом деле не что иное, как виртуализированное представление ядра ЦП. Hyper-V предоставляет процессорное время каждому виртуальному ЦП и делает это на основе циклического перебора. На самом деле, вы можете думать о виртуальных процессорах как об очередях процессоров.

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

В случае Windows Server 2012 Hyper-V (Hyper-V 3.0) Microsoft не накладывает никаких ограничений на соотношение виртуальных процессоров к логическим процессорам (Microsoft определяет логические процессоры как ядра ЦП). Однако Hyper-V поддерживает максимум 320 логических процессоров (ядер ЦП) на хост-сервер. Hyper-V также ограничивает создание максимум 2048 виртуальных процессоров на одном хост-сервере.

Максимальное количество виртуальных процессоров, которое можно назначить любой отдельной виртуальной машине, равно 64. Однако большинство гостевых операционных систем не будут поддерживать даже то, что они воспринимают как 64-ядерный сервер. Таким образом, вы должны учитывать ограничения гостевой операционной системы при определении количества виртуальных процессоров, назначаемых каждой виртуальной машине.

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

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

Насколько мне известно, у Microsoft нет текущей рекомендации по максимальному соотношению виртуального процессора к логическому процессору. Однако есть статья MSDN, в которой четко указано, что для достижения наилучшей производительности следует использовать соотношение один к одному. Соотношение один к одному будет означать, что вы создаете виртуальный процессор, только если у вас есть соответствующее ядро ЦП.

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

Хотя соотношение виртуальных процессоров к логическим процессорам один к одному хорошо для производительности, оно не так хорошо работает для достижения максимально возможной плотности виртуальных машин. Чтобы дать вам более конкретный пример, все серверы Hyper-V в моей лаборатории имеют восемь логических процессоров. Если бы я настаивал на соотношении один к одному и зарезервировал рекомендуемые два физических ядра ЦП для операционной системы хоста, это означало бы, что самое большое количество виртуальных машин, которое я мог бы разместить на сервере было бы шесть. Излишне говорить, что на сервере с логическими процессорами можно добиться гораздо большей плотности виртуальных машин.

Как я уже говорил ранее, я не нашел официальных рекомендаций Microsoft по максимальному соотношению виртуальных процессоров к логическим процессорам. Есть некоторые действительно старые документы, относящиеся к первому выпуску Hyper-V, в которых рекомендуется максимальное соотношение 1,5 к 1 или 2 к 1, но эти статьи очень устарели.

По моему опыту, в большинстве случаев можно добиться соотношения примерно 6 к 1 (а в некоторых случаях даже 8 к 1), прежде чем производительность начнет страдать.

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

Вывод

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

  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 2)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 3)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 5)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 6)
  • Максимальное увеличение плотности виртуальных машин в Hyper-V (часть 7)