繁体   English   中英

qemu-kvm numa拓扑暴露问题

[英]qemu-kvm numa topology exposure problems

我正在尝试实现以下方案。

我有一个带有4个numa节点的Linux盒子,每个节点有6个cpus。 为了获得更好的kvm guest虚拟机性能,我将每个vcpu固定到一组cpus,最好在同一numa单元中。

例如,如果我要启动一个12核心来宾,则将前6个vcpus固定在NUMA节点1中的cpuset上,将后6个vcpus固定在NUMA节点2中的cpuset上。

到目前为止,当我尝试向来宾展示该拓扑时(即让来宾意识到它在2个NUMA节点上有两个cpuset),问题开始出现。

我虽然说如果我使用选项-smp 12,sockets=2,cores=6,threads=1到qemu-kvm,它很可能会将它们分成两半,将前6个放在一个插槽中,然后将6个放在另一个插槽中,使用-numa选项在适当的vcpus上设置2个numa节点。 所以我的问题如下:

  1. -numa选项会执行其操作吗? 在文档中,它说是用于numa模拟的。 如果进行仿真,那是否会损害性能? 我需要对访客说一种方式:“这些cpus在同一NUMA节点上”(即使它们不在)。 这是实现这一目标的方法吗?

  2. 似乎qemu(1.2.0)上有一个错误,并且拓扑暴露得非常糟糕。 当我将CPU拓扑设置为(例如) -smp 9,sockets=3,cores=3,threads=1 ,出于某些奇怪的原因,在来宾内部,我看到了它们(使用lstopo)排列在三个插槽中,但是有四个内核在第一个(4 | 4 | 1)上,在第二个和第三个上有4个核。 我算了一下,将它们分解为2的幂,而不是相等。 我还观察到sockets=2,cores=10的相同行为; sockets=2,cores=18 ,您总是这样命名,总是将它们不除以一半,而是以2的幂(即8 | 2和16 | 2)进行拆分。 尽管sockets=2,cores=8可以正常工作(这是一种预期)。 有没有人经历过类似的事情?

从0.9.8开始,可以使用numa元素指定来宾NUMA拓扑。 结合cputune元素下的vcpupin,如果需要,您应该能够在主机和来宾之间实现所需的CPU /内存映射。

http://libvirt.org/formatdomain.html#elementsCPU

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM