![如何正确配置 ESX VM 以有用的方式使用超线程?](https://linux22.com/image/736396/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%20ESX%20VM%20%E4%BB%A5%E6%9C%89%E7%94%A8%E7%9A%84%E6%96%B9%E5%BC%8F%E4%BD%BF%E7%94%A8%E8%B6%85%E7%BA%BF%E7%A8%8B%EF%BC%9F.png)
我有一个特定的问题,无法在 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 能力。