Hot-plug CPU — возможность динамически добавлять (hot-add) или отключать (hot-remove) виртуальные процессоры (vCPU) у работающей виртуальной машины без остановки гостевой ОС и приложений. Функция применяется в облачных платформах для вертикального масштабирования: при росте нагрузки облако добавляет vCPU, при снижении — убирает, оплачивая только фактически потреблённые ресурсы.
Как работает
Hot-plug CPU реализуется совместно гипервизором и гостевой ОС. Гипервизор (KVM, VMware ESXi) сигнализирует гостевой ОС об изменении конфигурации CPU через ACPI-событие (CPU Hotplug Notification). Гостевая ОС должна поддерживать CPU hotplug — Linux поддерживает с версии ядра 2.6.0 (2003), Windows Server — с 2003 версии. Гостевая ОС инициализирует новый CPU и делает его доступным для планировщика.
Для KVM конфигурация hot-plug CPU задаётся параметрами VM: -smp cpus=2,maxcpus=8 — запускает VM с 2 vCPU, но резервирует до 8 слотов. Добавление в runtime: через QMP-протокол (device_add cpu-x86_64-cpu,id=cpu3) или панель управления. В Proxmox это делается через GUI без перезагрузки VM.
Hot-remove CPU сложнее hot-add: ОС должна корректно вывести CPU из работы, перенести все его процессы на другие ядра и сообщить гипервизору о готовности. Не все ОС поддерживают hot-remove (особенно Windows — поддержка ограничена).
История
CPU hotplug для физических серверов появился в мейнфреймах IBM ещё в 1960-х. Для x86-серверов стандарт ACPI 2.0 (2000) определил CPU hotplug. Linux реализовал CPU hotplug в ядре 2.6.0 (декабрь 2003 года). VMware vSphere поддерживает CPU hot-add с версии 4.0 (2009). В облачном хостинге hot-plug CPU стал ключевой функцией для автомасштабирования: AWS EC2, Google Cloud и Azure используют его для динамического изменения типов инстансов без остановки VM.
Отличия от hot-plug RAM
Hot-plug CPU и hot-plug RAM — связанные, но разные функции. RAM hot-plug в Linux более зрелая технология (поддерживается с ядра 2.6.15 для add). CPU hot-remove поддерживается меньшим числом систем. Оба механизма используются совместно для вертикального автомасштабирования в облаке.
На что обращать внимание
При использовании hot-plug CPU в виртуализированной среде убедитесь: гостевая ОС поддерживает CPU hotplug (Linux 2.6+, Windows Server 2003+), максимальное число vCPU задано при создании VM (параметр maxcpus — нельзя превысить без перезагрузки), приложение корректно использует новые CPU (некоторые legacy-приложения не перебалансируют потоки при добавлении CPU). Для статистики нагрузки используйте htop или mpstat -P ALL.
История и поддержка операционными системами
Аппаратная поддержка Hot-plug CPU появилась в серверных платформах Intel Itanium в 2002 году, затем распространилась на архитектуру x86-64 с процессорами Intel Xeon EX и AMD Opteron. В Linux поддержка CPU hotplug добавлена в ядро 2.6.x. Управление через файловую систему: /sys/devices/system/cpu/cpu1/online — запись 0 отключает ядро, 1 — включает. В KVM-виртуализации Hot-plug CPU реализован через QEMU-monitor: команда cpu-add <index> добавляет vCPU без остановки ВМ.
Типичные ошибки
Основная ошибка — не проверить поддержку Hot-plug в гостевой ОС перед добавлением CPU: Windows требует перезагрузки для распознавания новых процессоров на старых версиях (до Windows Server 2019). NUMA-топология при добавлении CPU может измениться, что влияет на производительность NUMA-оптимизированных приложений. Проверяйте актуальную топологию командой numactl --hardware.