всегда получать отчет об ошибках настройки памяти NUMA в «предпочтительном» режиме поддерживает только один узел

Я пытаюсь увеличить размер ЦП виртуальной машины, например, 16 виртуальных ЦП, отредактировав XML-файл домена KVM:

<domain type='kvm'>
  <name>bigip-2-10.250.100.102</name>
  <uuid>c978f323-9c61-4db4-bfc0-35e65f06bf05</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='auto'>16</vcpu>
  <numatune>
    <memory mode='preferred' placement='auto'/>
  </numatune>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>

Когда я выключаю и снова запускаю виртуальную машину. Я получил этот отчет об ошибке:

error: internal error: Process exited prior to exec: libvirt: error : internal error: NUMA memory tuning in 'preferred' mode only supports single node

Однако, когда я изменяю размер виртуального ЦП на 9 или изменяю тег режима на strict. ВМ можно запустить снова. Я немного теряюсь, почему он так себя ведет?

Информация о моей машине numa выглядит следующим образом:

[root@localhost ~]# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cpubind: 0 1
nodebind: 0 1
membind: 0 1

[root@localhost ~]# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
node 0 size: 65029 MB
node 0 free: 6220 MB
node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
node 1 size: 65536 MB
node 1 free: 24109 MB
node distances:
node   0   1
  0:  10  21
  1:  21  10

Ошибка сказала NUMA memory tuning in 'preferred' mode only supports single node

Единственный узел numa 0 (одиночный узел) машины имеет 16 ЦП, почему он не может запустить 16 ЦП (или даже 10 ЦП) numa в предпочтительном режиме VM на машине ?

Почему максимальное количество ЦП в предпочтительном режиме numa равно 9? это относительно образов ВМ?

Кто-нибудь может помочь объяснить немного, большое спасибо.


person cosz3    schedule 26.05.2020    source источник


Ответы (1)


Я также боролся с этим. Решение состоит в том, чтобы изменить режим памяти с «предпочтительного» на «чередование». Скорее всего, проблема с предпочтительным режимом заключается в том, что в сочетании с режимом размещения «авто» numad иногда использует набор узлов вместо одиночный узел (когда в нем недостаточно ресурсов). На самом деле libvirt IMHO должен предотвратить это и заставить numad всегда выбирать один узел, но это не так. С другой стороны, иногда выбор только одного узла может быть невозможен (например, на каждом из них недостаточно памяти). Следовательно, единственное решение для предотвращения ошибок libvirt: настройка памяти NUMA в «предпочтительном» режиме поддерживает только один узел — фактически использовать режим «чередования». Согласно https://h50146.www5.hpe.com/products/software/oe/linux/mainstream/support/whitepaper/pdfs/a00039147enw.pdf: при переполнении памяти узла режим чередования работает как предпочтительный режим. То есть режим чередования выбирает узел, из которого будет выделена страница, и, если этот узел не имеет доступной памяти, выделение может быть перенесено на другой узел. Я действительно рекомендую прочитать все материалы в упомянутом PDF-файле, начиная со страницы 26. Скорее всего, это ответит на все ваши вопросы по теме.

person Airstriker    schedule 20.01.2021