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. Итак, мои вопросы таковы:
Будет ли
-numa
вариант сделать свое дело? В документации сказано, что это для моделирования numa. Если это симуляция, не означает ли это, что это повредит производительности? Мне нужен способ сказать гостю: "Эти процессоры находятся на одном узле NUMA" (даже если это не так). Это способ достичь этого?Кажется, есть ошибка в 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 вы сможете при желании достичь желаемого отображения процессора / памяти между хостом и гостем.