Ответ
В VMware ESXi виртуальные процессоры (vCPU) назначаются виртуальной машине (ВМ) через её конфигурацию. vCPU — это виртуальное представление физического ядра или потока ЦП гипервизора.
Основные параметры конфигурации vCPU в vSphere Client/Web Client:
- Количество vCPU: Общее число виртуальных процессоров для ВМ. Например, 4 vCPU.
- Количество ядер на сокет (Cores per Socket): Определяет топологию процессора, видимую гостевой ОС. Например, 4 vCPU можно представить как
2 сокета × 2 ядра.- Зачем это нужно? Для лицензирования ПО внутри гостевой ОС (некоторые лицензии привязаны к сокетам) и для оптимизации работы приложений, чувствительных к NUMA.
Управление ресурсами ЦП (на вкладке "Ресурсы" ВМ):
- Резервирование (Reservation): Гарантированная доля физической мощности ЦП (в МГц), которая всегда будет выделена ВМ. Например, 2000 МГц.
- Лимит (Limit): Максимальная доля ЦП (в МГц), которую может использовать ВМ. По умолчанию — неограниченно.
- Доли (Shares): Относительный приоритет при конкуренции за ресурсы ЦП между ВМ. Значения: Low, Normal, High, Custom.
Практические рекомендации из опыта:
- Не завышайте количество vCPU. Назначение ВМ больше vCPU, чем ей реально нужно, может привести к увеличению времени CPU Ready (ожидания в очереди планировщика гипервизора) и снижению общей производительности. Начинайте с минимального необходимого количества.
- Соотношение vCPU к физическим ядрам. Для высокопроизводительных ВМ (СУБД, серверы приложений) старайтесь не превышать соотношение 4-6 vCPU на одно физическое ядро на хосте, чтобы избежать contention.
- Используйте резервирование для критически важных ВМ, чтобы гарантировать их производительность.
- Мониторинг. Всегда отслеживайте метрики
CPU Ready(должно быть < 5%) иCPU Usageв vCenter или черезesxtop.
Пример настройки через PowerCLI:
Get-VM "App-Server" | Set-VM -NumCpu 4 -CoresPerSocket 2 -CpuReservationMhz 2000 -CpuLimitMhz 8000 -CpuSharesLevel High