虚拟化软件如何在主机上并行执行任务?

虚拟化软件如何在主机上并行执行任务?

我使用 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

你可能想阅读这个文档CPU资源管理来自 VMware。

尽管它来自 ESX1.5 的一个旧版本,但较新的版本使用相同的技术,甚至更多。后续版本的文档是可在此处获得但似乎没有被谷歌搜索过

抽象的:VMware ESX Server 可动态控制每个已调度虚拟机的执行率和处理器分配。调度程序可在多处理器系统上执行自动负载平衡。

答案4

QEMU 上的文档并不是很清楚;使用“-smp <核心数>”选项允许您模拟多个 CPU,但不清楚这是否是跨多个主机核心的真正 smp,或者实际上是绑定到单个核心的“线程”。

VMware 产品确实会将负载分散到多个核心上,但要小心繁忙客户机的调度问题,因为这会影响整体性能。更多信息这里

相关内容