我听说,如果您在 ESXi 下有一个具有 N 个虚拟核心的来宾,则虚拟机管理程序会等待主机上总共 N 个逻辑处理器同时可用,然后再将工作从来宾委派给硬件。因此,建议您应该非常仔细地考虑将来宾增加 X 个核心,除非您确实需要处理周期,因为您将导致等待时间与 X 成比例增加,并且您希望确保添加 vcpus 带来的收益大于增加延迟的成本。
在极端的例子中,假设 ESXi 主机 hA 和 hB 具有相同的硬件和配置,并且每个主机都有一个客户机(分别是 gA 和 gB),并且除了 gA 有 1 个虚拟 CPU 而 gB 有 2 个虚拟 CPU 之外,客户机是相同的。如果在两个主机上放置相同(不可并行化)的工作负载,则 gA“应该”能够“更快地”完成任务。
- 这个 proc 等待延迟是真的吗?可以通过 VMWare 文档确认吗?
- 如果这是真的(但提供的文档并不明显),是否有方程式可以提前测量客户 vcpu 增加的预计影响?是否有工具可以测量延迟已经产生了什么样的实际影响?
—- 如果这完全相关的话,引发这个问题的现实问题是我们有一台 4 核的 MS SQL Server 2014,白天平均运行 60% 的容量,经常会达到 100%,我们正在内部讨论是否应该将客户机增加到 6 或 8 核以缓解我们遇到的一些性能问题。主机有(我不知道型号,只知道规格)双插槽英特尔六核处理器,频率为 2.6GHz,带超线程 - 因此每个主机有 24 个逻辑核心。
答案1
超线程会谎报核心数量,以获得几个百分点的提升。您没有 24 个核心,只有 12 个。不过,如果能为具有超线程的客户机充分利用这 12 个核心,我会感觉好一点。
当客户机超过节点大小时,访问远程 CPU 或 RAM 时将产生 NUMA 效应。对于那些六核插槽,绝对由 vCPU 8 产生。这些也适用于没有虚拟机管理程序的物理服务器上的操作系统。考虑到 ESXi 和 MS SQL 的规模要大得多,这可能是可控的。只需知道收益递减。
严格的联合调度,如果出现调度偏差,则虚拟机的所有 vCPU 都将停止,自 ESX 2 以来一直未使用宽松协同调度更多是每个 vCPU 的决定。您可以通过以下方式衡量 CPU 是否比其他 CPU 取得更多进展esxtop 中的 %CSTP。
无论使用哪种调度程序,为了获得最大吞吐量和最小延迟,都不要超额订购 vCPU。这些双六核处理器总共为客户机提供 12 个 vCPU。当您有效地将一些 CPU 专用于客户机时,无需等待空闲 CPU。
答案2
目前存在许多糟糕的 VMware 建议和已失效的最佳实践。
甚至 VMware 的网站也因为糟糕的 SEO 而推广过时的解决方案。
但正确的评估这一点的方法是使用类似vSphere Realize Operations Manager (vROP)根据您的实际活动获取尺寸建议。
否则,只需增加并测试影响。转到 5 vCPU 并测量。然后是 6 vCPU... 等等。
另外,请阅读一本《技术深度探讨》书籍,以更好地理解资源分配:https://www.amazon.com/gp/product/1540873064
例子: