我使用 QEMU 虚拟化来测试不同操作系统和处理器架构上的软件。
令我恼火的是,客户机经常会完全堵塞一个主机核心并停滞,而其他核心则处于空闲状态。我猜测这是因为 qemu 不会在客户机中启动用于并行任务的本机线程。如果这是真的,哪种虚拟化软件可以更智能地处理这个问题?我正在寻找一种不需要修改客户机的解决方案(因此 Xen 不是一个选项)。
我正在研究 KVM,但尚未找到任何明确的答案。我应该说我不确定我是否正确理解了 SMP 支持,这对主机上任务的并行化有什么影响吗?
我还没有研究过 VMWare。
答案1
我对我们的虚拟环境(VMWare)工作方式的理解是这样的:
您可以选择为任何虚拟机分配专用 CPU。分配 2 个专用 CPU 相当于您拥有的物理 2 核机箱。
但是,如果你不这样做,那么你就会分配一定数量的处理器份额分配给每个虚拟机。因此,如果您为一台虚拟机分配 100 份,为另一台虚拟机分配 200 份,则第二台虚拟机的 CPU 性能将翻倍。但实际周期可能由任何主机 CPU。
因此,构建一台具有单个虚拟 CPU 并将共享加倍的机器将提高 VM 的速度和功率,而无需为 SMP 配置软件。
答案2
通常,虚拟化软件允许您设置 VM 可以访问的 CPU 数量,并允许您设置所有 CPU 的最小/最大 CPU 使用率。虽然我没有使用 QEMU 的经验,但 Hyper-V 和虚拟服务器确实如此。
SMP 支持是指主机向客户操作系统提供多处理器虚拟机的能力。如果您想将更多的主机 CPU 资源分配给客户机,那么您可能需要采取这种方式。
答案3
答案4
QEMU 上的文档并不是很清楚;使用“-smp <核心数>”选项允许您模拟多个 CPU,但不清楚这是否是跨多个主机核心的真正 smp,或者实际上是绑定到单个核心的“线程”。
VMware 产品确实会将负载分散到多个核心上,但要小心繁忙客户机的调度问题,因为这会影响整体性能。更多信息这里。