每个虚拟机的逻辑处理器数量?

每个虚拟机的逻辑处理器数量?

我有一台运行 Windows Hyper-V Server 2008 R2 的服务器(四核),其中有两台 Windows Server 208 R2 标准客户虚拟机。

我注意到逻辑处理器数量设置(根据处理器) 每个 VM 的设置页面默认为 1,但允许我选择 1 到 4 个“虚拟处理器”(或者我认为是“逻辑处理器”)中的任意一个。

我的问题是:a) 这些“虚拟处理器”/“逻辑处理器”是否直接映射到我的 Intel Q6600 四核 CPU 上的核心?b) 在这种情况下,建议将两个客户虚拟机的数量都设置为 2 吗?这样是否能为 Hyper-V 主机留下足够的 CPU 能力?

除了处理能力之外,我还想知道是否/如何为 Hyper-V 主机保留一定数量的 RAM。

答案1

这是一种权衡。假设您有四个物理核心和两个虚拟机。

如果您在每个虚拟机中映射两个虚拟核心,那么几乎每个客户机都会看到它所期望的内容。它将看到两个它期望完全控制的核心,并且或多或少地得到了控制。(假设主机负载不高。)您不会经常将客户的调度程序与以下情况混淆:它将任务分配给一个核心,期望该任务立即完成,但由于没有可用的物理核心,该任务没有完成。但是,如果一个客户机 CPU 不足而另一个处于空闲状态,则两个核心将无所事事。

另一方面,如果您为每个客户机提供四个虚拟核心,则当其他客户机和主机不需要时,每个客户机将能够使用所有可用的 CPU 能力。但是,当有来自其他来源的负载时,客户的调度程序将无法获得其预期的行为,并且某些任务将立即启动,而有些任务则不会以客户机调度程序无法轻松预期和处理的方式启动。

我的建议通常是,在每个可能需要大量 CPU 的虚拟机中放置尽可能多的物理核心。除非您的虚拟机严重依赖延迟。我还会减少与更关键的虚拟机共享物理机箱的任何“较小”或“不太重要”虚拟机的核心数量。

作为其调度策略的一部分,虚拟机管理程序将逻辑核心分配给物理核心。除非您专门进行映射,否则没有固定的映射。(我不建议这样做,除非在特定情况下,您想要为延迟关键型虚拟机保留一个核心。)

答案2

不,逻辑处理器与物理处理器之间没有直接映射……就其本身而言……基本上,会为每个逻辑处理器创建一个新线程,并将亲和性设置为特定的物理核心……因此每个线程可以消耗每个核心上 100% 的资源。将 2 台机器分配给所有 4 个核心(2x4 逻辑核心)可能是也可能不是一个好主意。如果您的应用程序占用大量 CPU……或者在两台机器上生成大量线程……两者都会定期滞后,等待对方完成……为每个实例分配专用核心意味着将任务交给 CPU 的延迟降到最低。

您无法真正为主机分配特定数量的 RAM...除了限制客户机可以使用的数量。您可以在其他虚拟框架中做到这一点...但 hyper-v 是该领域的新手,没有老一代的所有花哨功能。

相关内容