我使用QEMU进行虚拟化,以testing不同操作系统和处理器架构上的软件。
我被一个客户经常堵塞一个主机核心而停顿,而另一个核心闲置的事实让我感到恼火。 我的假设是,这是因为qemu不会为guest中的并行任务启动本地线程。 如果这是真的,那么虚拟化软件如何处理这个更聪明? 我正在寻找一个解决scheme,不需要修改客人(所以Xen不是一个选项)。
我在看KVM,但还没有find明确的答案。 我应该说,我不确定是否正确理解了SMP支持,是否对主机上的任务如何并行执行了任何操作?
我还没有看过VMWare。
我对我们的虚拟环境(VMWare)工作方式的理解是这样的:
您可以select将专用CPU分配给任何VM。 分配2个专用的CPU就相当于一个物理的2核心盒子。
但是,如果您不这样做,则可以为每个VM分配一定数量的处理器份额 。 所以,如果你分配100股到一个,200股到另一个,第二台机器有一个双倍强大的CPU。 但是实际的周期可以由任何主机cpus来处理。
因此,使用单个虚拟CPU来构build一台机器,并将这些共享增加一倍将会提高虚拟机的速度和功耗,而不需要为SMPconfiguration软件。
通常,虚拟化软件允许您设置VM可以访问的CPU数量,并允许您设置所有CPU使用的最小/最大CPU使用率。 尽pipe我没有使用QEMU的经验,但Hyper-V和Virtual Server确实如此。
SMP支持是指主机向客户机操作系统提供多处理器虚拟机的能力。 如果你想分配更多的主机CPU资源给客人,这可能是你需要采取的路线。
您可能需要从vmware中阅读本文档“ CPU资源pipe理” 。
尽pipe它来自ESX1.5的一个古老版本,但是更新的版本使用相同的技术,甚至更多。 更高版本的文档可以在这里find,但似乎没有被Googlesearch到
摘要: VMware ESX Server提供了对每个计划虚拟机的执行速率和处理器分配的dynamic控制。 调度程序在多处理器系统上执行自动负载平衡。
你也可能想看看虚拟盒子 。
QEMU的文档不是很清楚, 使用“-smp <核心数量>”选项可以模拟多个CPU,但不清楚这是跨多个主机核心的实际smp,还是有效地将“线程”绑定到单个核心。
VMware产品确实将负载分散到多个核心中,但要注意与繁忙客人的计划问题,这会影响整体性能。 更多信息在这里 。