Что будет, если виртуальной машине в VMware ESXi выделить 2 vCPU из 8 возможных?

«Что будет, если виртуальной машине в VMware ESXi выделить 2 vCPU из 8 возможных?» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Виртуальная машина получит два виртуальных процессора (vCPU), которые гипервизор ESXi будет планировать на выполнение на физических ядрах (pCPU) хоста.

Что это означает на практике:

  1. Производительность VM: VM сможет выполнять две задачи параллельно (или лучше использовать многопоточные приложения). Однако реальная производительность зависит от:

    • Нагрузки других VM на том же хосте.
    • Соотношения vCPU к pCPU на хосте. Если всего 8 физических ядер, а сумма vCPU всех VM сильно превышает это число, возникнет конкуренция (CPU Ready Time).
  2. Планирование гипервизора: ESXi будет использовать механизмы вроде CPU affinity и NUMA awareness, чтобы по возможности размещать vCPU VM на одних и тех же физических ядрах или внутри одного NUMA-узла, снижая задержки.

  3. Накладные расходы: Каждый vCPU добавляет overhead гипервизору на планирование и синхронизацию. Необоснованное завышение количества vCPU (например, выделение 4 vCPU для легкой задачи) ухудшает производительность всей системы.

Пример из опыта: Для веб-сервера с умеренной нагрузкой я бы начал с 2 vCPU, но обязательно настроил бы лимиты (limits) и резервации (reservations) в политиках ресурсов кластера vSphere, чтобы гарантировать VM минимальную производительность и не дать ей монополизировать CPU.

В инфраструктуре как код (например, с Terraform и провайдером vSphere) конфигурация выглядела бы так:

resource "vsphere_virtual_machine" "web_server" {
  # ...
  num_cpus = 2
  memory   = 4096
  # Критически важно для производительности:
  cpu_hot_add_enabled = false # Отключаю горячее добавление CPU для лучшей оптимизации
  # Настройки планирования лучше задавать через политики ресурсов кластера vSphere
}

Главное правило: выделять vCPU по необходимости, а не "про запас", и постоянно мониторить метрики вроде CPU Ready (%) и Co-stop в vCenter для выявления проблем конкуренции.