如何正确配置 ESX VM 以有用的方式使用超线程?

如何正确配置 ESX VM 以有用的方式使用超线程?

我有一个特定的问题,无法在 VMware 的官方文档或该平台上其他一些非常有用的线程中找到答案,因此这里是:

我有一台使用 ESX 6.0 的主机,它有 2 个插槽,每个插槽有 6 个带 HT 的内核。因此,该硬件上总共有 12 个内核和 24 个线程。

它正在运行 10 台虚拟机。我分配了 34 个核心(我知道这很糟糕,但现在无法更改)。但是,我遇到了其中 1 台虚拟机的严重问题,该虚拟机分配了 8 个核心(2 x 4)。

我知道超线程是如何工作的,并且知道在理想的工作负载下,HT-Core 的性能约为“真实”核心的 50%。

所以我的问题是:使用 CPU 亲和性来确保该服务器具有 8 个“真实”(=更快)核心,而不是让 VMware 处理核心,对我是否有好处?

答案1

你的问题不是 HT。50% HT 提升是一个毫无根据的数字。通常,对于某些多线程应用程序,它可以提升 5-20%,具体取决于代码和工作负载。关键是你在分配核心时不应该依赖这一点。

在 VMWare 的情况下,CPU 被视为真正的核心,而逻辑处理器被视为 HT 部分。

例子:

Intel(R) Xeon(R) CPU E5-2620 v4 有 8 个内核和 16 个线程。使用双插槽配置的戴尔服务器将有 2 个这样的处理器,这意味着 16 个内核和 32 个逻辑处理器(又称线程)。因此,ESXi 主机将显示:16 个 CPU x Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz

这正是您遇到的情况:您有 2 个 CPU,每个 CPU 有 6 个核心,这意味着 ESXi 将有 12 个核心可供使用(和 24 个逻辑处理器)。

您遇到的问题是:34 个核心明显大于 12 个,甚至大于 24 个。只要您没有多个客户机最大限度地使用分配给他们的 CPU,这才是没问题的。

分配 2 个核心和 4 个插槽并不好,因为您有 2 个插槽。ESXi 可以处理转换,但您最好分配 4 个 CPU 核心和 2 个插槽。如果您真的需要该 8 核客户机的处理能力,那么在分配 CPU 时应该使用预留选项。这将确保其他客户机不会从您的 CPU 密集型客户机那里窃取 CPU 能力。

相关内容