Ограничение количества vCPU для ВМ

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

Пример сопоставления CPU и NUMA-узла

В CPU применяется логическая структура — NUMA-узел. Часто NUMA-узел назначается в соотношении 1:1 к физическому процессору. Если на сервере имеются два процессора по 28 ядер и 1,5 ТБ памяти, то один физический NUMA-узел будет иметь 28 ядер и 768 ГБ RAM.

Определение количества vCPU для ВМ

Что необходимо учесть при определении количества vCPU для ВМ:

Гипервизор VMware, Inc. применяет виртуальные NUMA-узлы, которые назначает к физическим сокетам (процессорам).

../../_images/recommendations__ent_numa-node-1.svg

Используются два основных типа ВМ, в которых:

  • количество vCPU/RAM не превышает количество vCPU в NUMA-узле;

  • количество vCPU и/или RAM превышает количество vCPU/RAM в NUMA-узле.

ВМ, в которых количество vCPU/RAM не превышает количество vCPU в NUMA-узле.

ВМ размещается в рамках одного физического NUMA-узла и получает максимум производительности.

ВМ, в которых количество vCPU и/или RAM превышает количество vCPU/RAM в NUMA-узле.

VMware vSphere Server, начиная с версии 6.5, умеет выравнивать ресурсы ВМ по физическим NUMA-узлам, чтобы минимизировать интерконнект. Взаимодействие процессора и памяти осуществляется таким образом, что каждый процессор обращается только к памяти, которая взаимодействует непосредственно с ним. В этом случае задержки на вычисления возникают только при обращении через IO-шину.

В решении размеры RAM и L3 Cache не предопределены. Поэтому при создании ВМ с vCPU (pSocket CPUs) необходимо указать параметр «cores/socket» так, чтобы виртуальные сокеты ВМ равнялись количеству физических сокетов (обычно 2). В этом случае vNUMA-узлы обращаются к своей памяти и к своему L3-cache, что важно для приложений критичных к задержкам (latencу). Для этого необходимо вручную править данный параметр и знать на каких процессорах будут размещены ВМ.

Рекомендуется не использовать опцию горячего добавления vCPU. При включении опции горячего добавления vCPU отключается механизм автоматического распределения ВМ по NUMA-узлам. В этом случае необходимо ручное выравнивание ресурсов ВМ по физическим NUMA-узлам, иначе производительность ВМ может быть существенно снижена.

VMware, Inc. выработали правила размещения ВМ:

  1. While there are many advanced vNUMA settings, only in rare cases do they need to be changed from the defaults.

  2. Always configure the virtual machine vCPU count to be reflected as Cores per Socket, until you exceed the physical core count of a single physical NUMA node OR until you exceed the total memory available on a single physical NUMA node.

  3. When you need to configure more vCPUs than there are physical cores in the NUMA node, OR if you assign more memory than a NUMA node contains, evenly divide the vCPU count across the minimum number of NUMA nodes.

  4. Don’t assign an odd number of vCPUs when the size of your virtual machine, measured by vCPU count or configured memory, exceeds a physical NUMA node.

  5. Don’t turn on vCPU Hot Add unless you’re okay with vNUMA being turned off.

  6. Don’t create a VM larger than the total number of physical cores of your host.

Эти правила можно считать официальной рекомендацией VMware, Inc., так как на них ссылаются Performance Best Practices for VMware.

Возможен еще один тип ВМ, в котором количество vCPU больше, чем количество CPUs на хосте. Это нежелательный сценарий, так как такая ВМ разбалансирована. Но иногда подобный сценарий применяется, когда приложения используют в ВМ не сами CPU, а L3-cache этих CPU.

Масштабная конференция
GoCloud 2024:
облачные грани будущего