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