我可以安全地减少虚拟机上的处理器数量吗?

我可以安全地减少虚拟机上的处理器数量吗?

我有许多虚拟机,它们都是从物理服务器创建的。其中一些虚拟机的处理器数量(在我看来)不合适 - 例如,我们有一个仅供内部访问的 Web 应用程序,运行在分配了 4 个处理器的 VM 上。这是我们 VM 中配置最高的,但我怀疑其他 VM 的配置过高。

据我了解,这可能会导致性能下降,因为虚拟机管理程序在为该虚拟机分配处理器时间时会等待主机上有 4 个处理器可用。在尝试在主机之间迁移虚拟机时,这也会导致问题。这些假设合理吗?

从服务器本身来看,我看不出它需要 4 个处理器的任何理由。它安装的物理服务器恰好有那么多处理器。

所以问题是——减少该虚拟机上的处理器数量有什么风险?

一些细节:

我们在具有 8 个核心和 20Gb 的服务器上运行 VMware ESX 3.5。上例中的虚拟机分配了 4 个处理器和 3Gb RAM。虚拟机上的服务器操作系统是 Windows Server 2003 Standard SP2(不是 R2)。

答案1

唯一严重的问题可能来自于从多核(即 2 个或更多)到单核的转变。Windows 2000、XP 和 2003(我不确定 Vista、2008 或 7)对多核使用的内核与对单核使用的内核不同。也就是说,它可能只是某种性能损失,而不是事情完全崩溃。

我会检查以确保任何关键应用程序都没有设置处理器亲和性 - 这可能会毁了你的一天。看这里:http://forums.whirlpool.net.au/archive/735180或者https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6168870.html

编辑:Linux 也是如此,但 SMP 核心问题只是性能问题,而不是句号问题。另一方面,Linux 更容易永久设置处理器亲和性。参见http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html

答案2

是的,您的假设是正确的:ESX 调度程序需要有 4 个可用核心才能调度具有 4 个 vCPU 的 VM 的执行,因此如果只有 2 个或 3 个可用,它就根本无法运行,无论 VM 实际如何使用它们;客户操作系统可能只有一个线程在运行,但如果没有足够的可用核心,ESX 调度程序仍然无法使 VM 运行。

减少 vCPU 数量通常是一个安全的操作,但这在很大程度上取决于客户操作系统,它实际上需要应对(虚拟)硬件变化。最近的 Windows 和 Linux 系统通常不会遇到任何问题。

相关内容