Ответ
Виртуальная машина получит два виртуальных процессора (vCPU), которые гипервизор ESXi будет планировать на выполнение на физических ядрах (pCPU) хоста.
Что это означает на практике:
-
Производительность VM: VM сможет выполнять две задачи параллельно (или лучше использовать многопоточные приложения). Однако реальная производительность зависит от:
- Нагрузки других VM на том же хосте.
- Соотношения vCPU к pCPU на хосте. Если всего 8 физических ядер, а сумма vCPU всех VM сильно превышает это число, возникнет конкуренция (CPU Ready Time).
-
Планирование гипервизора: ESXi будет использовать механизмы вроде CPU affinity и NUMA awareness, чтобы по возможности размещать vCPU VM на одних и тех же физических ядрах или внутри одного NUMA-узла, снижая задержки.
-
Накладные расходы: Каждый 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 для выявления проблем конкуренции.