Proxmox: привязка CPU к виртуальным машинам

Взял отсюда: https://telegra.ph/Proxmox-privyazka-CPU-k-virtualnym-mashinam-09-03

Создаём виртуалку с нужной конфигурацией.

Проверяем архитектуру CPU и NUMA-узлы:

lscpu | grep NUMA

Ожидаемый вывод должен показать NUMA-узлы и ядра:

NUMA node(s):                       4
NUMA node0 CPU(s):                  0-7,32-39
NUMA node1 CPU(s):                  8-15,40-47
NUMA node2 CPU(s):                  16-23,48-55
NUMA node3 CPU(s):                  24-31,56-63

У нас 4 NUMA-узла, в каждом по 8 ядер и 8 потоков.

Если нужно «привязать» виртуалку к конкретному NUMA-узлу, например к первому, то используем affinity 0-7,32-39.

Файл конфигурации VM в Proxmox должен содержать параметры numa, cpu и affinity:

cores: 16
cpu: cputype=host
affinity: 0-7,32-39
numa: 1
numa0: cpus=0-15,hostnodes=0,memory=114688,policy=bind

Здесь мы создаём виртуалку с 16 ядрами и 112 ГБ памяти.

  • cpu: host - используем тип CPU «host» для максимальной производительности
  • affinity: 0-7,32-39 - привязка VM к ядрам NUMA-узла 0
  • numa: 1 - включаем поддержку NUMA внутри виртуалки
  • numa0 - указываем, что у VM есть NUMA-узел 0 с 16 ядрами, привязанный к NUMA-узлу 0 на хосте, и с памятью 114688 MB, выделенной в том же NUMA-узле

На стороне VM видим один NUMA-узел с 16 ядрами:

# lscpu | grep NUMA
NUMA node(s):                         1
NUMA node0 CPU(s):                    0-15
  • software/proxmox/proxmox-numa-vm.txt
  • Последнее изменение: 2025/09/14 14:00
  • fireball