9.3.4. 域 vCPU 线程
除了调优域进程外,libvirt 还支持 XML 配置中每个 vcpu 线程的固定策略设置。在
<cputune> 标签内为每个 vcpu 线程设置固定策略:
<cputune>
<vcpupin vcpu="0" cpuset="1-4,ˆ2"/>
<vcpupin vcpu="1" cpuset="0,1"/>
<vcpupin vcpu="2" cpuset="2,3"/>
<vcpupin vcpu="3" cpuset="0,4"/>
</cputune>
在此标签中,libvirt 使用 cgroup 或 sched_setaffinity(2) 将 vcpu 线程固定到指定的 cpuset。
注意
有关
<cputune> 的详情,请查看以下 URL: http://libvirt.org/formatdomain.html#elementsCPUTuning
另外,如果您需要设置一个 vCPU 多于单个 NUMA 节点的虚拟机,请配置主机,以便客户机能够检测到主机上的 NUMA 拓扑。这允许 1:1 个 CPU、内存和 NUMA 节点的映射。例如,这可以与具有 4 个 vCPU 和 6 GB 内存的客户机应用,以及具有以下 NUMA 设置的主机:
4 available nodes (0-3)
Node 0: CPUs 0 4, size 4000 MiB
Node 1: CPUs 1 5, size 3999 MiB
Node 2: CPUs 2 6, size 4001 MiB
Node 3: CPUs 0 4, size 4005 MiB
在这种情况下,使用以下域 XML 设置:
<cputune>
<vcpupin vcpu="0" cpuset="1"/>
<vcpupin vcpu="1" cpuset="5"/>
<vcpupin vcpu="2" cpuset="2"/>
<vcpupin vcpu="3" cpuset="6"/>
</cputune>
<numatune>
<memory mode="strict" nodeset="1-2"/>
</numatune>
<cpu>
<numa>
<cell id="0" cpus="0-1" memory="3" unit="GiB"/>
<cell id="1" cpus="2-3" memory="3" unit="GiB"/>
</numa>
</cpu>