QEMU-KVM Numa проблемы с топологией воздействия

Я пытаюсь достичь следующего сценария.

У меня есть linux box с 4 узлами numa, каждый с 6 процессорами. Чтобы улучшить производительность гостевой системы kvm, я прикрепляю каждый vcpu к набору процессоров, предпочтительно в одной ячейке numa.

Например, если я хочу запустить 12-ядерную гостевую систему, я прикрепляю первые 6 vcpus к процессору в узле NUMA 1, а вторые 6 - к процессору в узле NUMA 2.

Пока все хорошо, проблемы начинают возникать, когда я пытаюсь представить эту топологию гостю, то есть дать гостю понять, что у него есть два процессора на двух узлах NUMA.

Я думаю, что если я использую варианты -smp 12,sockets=2,cores=6,threads=1 qemu-kvm, скорее всего, разделит их пополам, сгруппировав первые 6 в один сокет и вторые 6 в другой и используя -numa возможность установить 2 узла numa на соответствующем vcpus. Итак, мои вопросы таковы:

  1. Будет ли -numa вариант сделать свое дело? В документации сказано, что это для моделирования numa. Если это симуляция, не означает ли это, что это повредит производительности? Мне нужен способ сказать гостю: "Эти процессоры находятся на одном узле NUMA" (даже если это не так). Это способ достичь этого?

  2. Кажется, есть ошибка в qemu (1.2.0), и топология выставлена ​​очень плохо. Когда я устанавливаю топологию процессора в (например) -smp 9,sockets=3,cores=3,threads=1По какой-то странной причине внутри гостя я вижу их (с помощью lstopo), расположенных в три гнезда, но с четырьмя ядрами на первом, четырьмя ядрами на втором и одним ядром на третьем ( 4|4|1). Я полагал, что это разделяет их на степени 2, а не в равной степени. Я также наблюдал такое же поведение с sockets=2,cores=10; sockets=2,cores=18 Вы называете это, всегда делит их не на половину, а на степени 2 (то есть 8|2 и 16|2). sockets=2,cores=8 работает хорошо, хотя (что отчасти ожидается). Кто-нибудь испытывал что-то подобное?

1 ответ

Начиная с версии 0.9.8 можно использовать элемент numa для указания гостевой топологии NUMA. В сочетании с элементами vcpupin в разделе cputune вы сможете при желании достичь желаемого отображения процессора / памяти между хостом и гостем.

http://libvirt.org/formatdomain.html

Другие вопросы по тегам