我计划构建一个由(可能)KVM 监控的多操作系统工作站,我将在该工作站上执行各种任务。其中一些任务比其他任务更适合多线程,因此我希望尽可能地提高时钟速度。为此,我正在考虑双插槽设置的利弊,以便我可以使用相同数量的内核获得更高的时钟速度。但是,据我所知,双插槽构建的实用性受到 CPU 之间通信速度缓慢的限制。所以我的想法是,如果我明智地分配资源,双插槽可能会运行良好,但如果不这样做,它可能会是一场灾难。
因此,我想了解以下几点:
如果主机操作系统独占使用一个套接字,而活跃使用的客户机独占使用另一个套接字,那么这两个套接字需要进行多少通信?
拥有更多内核能给虚拟机管理程序带来多少好处?
KVM(或其他虚拟机管理程序)在 CPU 插槽与 CPU 核心之间分配资源方面有多智能?有些事情我应该手动设置,而其他事情我应该由虚拟机管理程序决定吗?
一个重要的考虑因素是,在任何给定时间,只有一个或最多两个虚拟机需要大量资源,其他两个或三个虚拟机应该始终非常轻松。
答案1
通过遵循系统特定的 NUMA 拓扑,可以获得巨大的性能改进。使用 Pinning 选项会将客户机的 vCPU 线程限制到单个 NUMA 节点;但是,线程将能够在该 NUMA 节点内移动。要获得更紧密的绑定功能,请使用 lscpu 命令的输出通过 virsh cpupin 建立 1:1 的物理 CPU 到 vCPU 绑定。
在 RHEL 7 的文档中,您可以将 VCPU 绑定到其对应的物理 CPUnumatune
然后使用将客户机固定到某个 NUMA NODE使用和lscpu
。使用 时virsh cpupin
用于lstopo
可视化您的 NUMA NODE 拓扑numatune
。