hostprofi.ru
Подобрать хостинг
Термин·буква V

vCPU

краткое определение

vCPU (virtual CPU) — виртуальный процессорный поток, предоставляемый гипервизором виртуальной машине, соответствующий одному логическому ядру физического CPU хост-сервера.

vCPU — логическая единица процессорной мощности, которую гипервизор предоставляет виртуальной машине. Один vCPU соответствует одному потоку исполнения (hardware thread) на физическом процессоре. На сервере с двумя 8-ядерными Intel Xeon с Hyper-Threading доступно 32 аппаратных потока — значит, можно выделить до 32 vCPU без оверкоммита.

Как работает vCPU

Гипервизор (KVM, VMware ESXi, Xen) реализует планировщик vCPU: он решает, какие виртуальные ядра в какой момент получают реальное время физического процессора. При оверкоммите продаётся больше vCPU, чем есть физических потоков. Если все VM одновременно нагружают CPU на 100%, каждая получит меньше заявленного — так работает CPU steal (метрика %st в top).

CPU pinning — привязка vCPU к конкретным физическим ядрам. Это устраняет «шумного соседа» и полностью предсказуемую производительность. В KVM: virsh vcpupin vmname vcpu cpulist. На хостинге без CPU pinning производительность может деградировать в пиковые часы.

vCPU vs физический CPU

ПараметрФизический CPU-потокvCPU
ДоступностьВсегда (hardware)Зависит от планировщика гипервизора
Производительность100% (baseline)85–97% при малом оверкоммите
ИзоляцияФизическая (ядро)Программная (scheduler)
CPU StealНе применимо0–30%+ при перегрузке хоста

История

Концепция виртуального процессора появилась вместе с первыми гипервизорами IBM в 1960–70-х годах. Для x86-платформы термин vCPU стал употребляться с VMware GSX/ESX в 1999–2001 годах. KVM внёс vCPU как ядерную концепцию в Linux в 2007 году. AMD добавила расширения виртуализации AMD-V в 2006 году (Pacifica), Intel VT-x — в 2005 году (Vanderpool) — оба стандарта сделали реализацию vCPU эффективной на аппаратном уровне.

Практические рекомендации

Для баз данных и CPU-интенсивных задач: vCPU = количество реальных физических потоков, без оверкоммита. Для веб-серверов и приложений с I/O-ожиданием: умеренный оверкоммит 1,5–2× допустим. При выборе VPS: спрашивайте провайдера, есть ли CPU pinning или CPU steal ограничен. Метрика steal >5% — признак перегруженного хоста. На Proxmox: qm config VMID | grep cpu показывает тип CPU и привязку.

Оверкоммит CPU в различных гипервизорах

В KVM оверкоммит CPU — программный: scheduler Linux CFS распределяет время между vCPU. По умолчанию нет жёсткого ограничения ratio. Рекомендация Red Hat: не более 10:1 (vCPU:pCPU). В VMware vSphere: рекомендуемый ratio 3:1 для серверной нагрузки, 6:1 для VDI. В Proxmox VE: параметр cpulimit ограничивает суммарный % CPU одной VM — например, cpulimit: 2 означает максимум 200% (2 полных ядра). CPU shares (cpuunits) управляют приоритетом при конкуренции. Для production баз данных: cpulimit = числу выделенных vCPU, оверкоммит отключить.

vCPU в облачных провайдерах

AWS EC2: vCPU — это один поток гипервизора (hardware thread с HT). c6i.xlarge — 4 vCPU = 2 физических ядра Intel с HT. В отчётах AWS прямо указано: "1 vCPU = 1 hyper-thread". Google Compute Engine: похожая схема, 2 vCPU = 1 физическое ядро. Исключение: bare-metal инстансы (AWS m5.metal, i3.metal) — здесь вы получаете реальные физические ядра без виртуализации, overhead = 0%. Для задач с максимальными требованиями к CPU (компиляция ядра, ML inference) bare-metal даёт 5–15% прироста над виртуализованными инстансами.

Другие термины