[英]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节点。 所以我的问题如下:
-numa
选项会执行其操作吗? 在文档中,它说是用于numa模拟的。 如果进行仿真,那是否会损害性能? 我需要对访客说一种方式:“这些cpus在同一NUMA节点上”(即使它们不在)。 这是实现这一目标的方法吗?
似乎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 /内存映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.