我对我的帖子太长表示抱歉。
我们最近将业务系统转换为按核心数授权的产品。我们购买了 2 核许可证,目前正在 VMWare 上运行。升级到下一个许可证级别非常昂贵。
我们遇到了一些相当严重的性能问题。我们已经消除了 RAM 瓶颈,以及网络、数据库和磁盘访问。我们遇到问题时并不总是 CPU 使用率高。有时 CPU 使用率低于 20%,但 CPU Ready 很高。
我正在考虑是否可以直接在单独的物理服务器上运行它。由于我只能使用两个核心,因此我会选择我能得到的最快的“单线程性能”CPU,可能是 4 个核心。然后我会将业务系统设置为使用 2 个核心,并允许操作系统使用另外 2 个核心。
我的逻辑是这样的。现在虚拟机正在获得两个线程或 vCPU。这实际上只是一个 pCPU。即使我将其移动到没有超线程的同一个盒子里,它也会获得 2 个完整内核而不是 2 个 vCPU。但如果我选择一个在单线程上速度更快的芯片,我可以获得更多。由于我不再对其进行虚拟化,我可能还会获得一点收益。
根据 Passmark,我们当前的 6 核 CPU 获得以下分数。CPU 分数:8570 单线程性能:1403
我想要的 4 核处理器获得这些分数。CPU 分数:10231 单线程性能:2287
专门为此类应用程序构建服务器以获得最佳单线程性能是否有意义?我需要担心哪些缺点?较新的操作系统会带来很大不同吗?
当前主机服务器具有以下规格:Proliant DL380 G7 2 个物理 CPU:Intel(R) Xeon(R) X5675 @ 3.07 GHz 6 个核心,每个核心有 24 个逻辑处理器 (vCPU),启用了超线程。144 GB RAM
存储位于较新的 SAN 上,我确信这不会对我们的性能问题造成影响。
业务系统 VM 配置了 2 个 vCPU 和 24 GB RAM。操作系统是 Windows Server 2008 R2。业务系统软件经过优化,可在 IIS 中的应用程序池中的 4 - 6 GB RAM 上运行。我从未见过 VM 使用量超过 16 GB。
我们还在主机上运行其他 3 个虚拟机。其中一个虚拟机目前运行得很少,很可能在不久的将来被关闭。它有 2 个 vCPU 和 8 GB RAM。
第二台服务器正在运行我们的 MS SQL 数据库。该数据库有 8 个 vCPU 和 64 GB 的 RAM。我们让一位 DBA 看了看,他认为这不是导致我们出现问题的原因,至少从数据库性能方面来看不是。
第三台虚拟机正在运行我们的公共网站。它的平均 CPU 使用率不到 25%。它有 3 个 vCPU 和 16 GB 的 RAM。
再次感谢您提供的任何帮助或智慧,我们将不胜感激。
谢谢!
答案1
你的假设是正确的。对于你的特定情况,堆叠 Mhz 而不是 vCores 是正确的做法。看看这个处理器:(具有 4x 3,5-3,7 Ghz 物理核心 + HT)。
但是,除非您能提供实际的“CPU Ready”值,否则我无法从您的描述中看出真正的问题。
答案2
几件事;
1) 尝试将 vCPU 数量限制为虚拟机实际需要的数量。这与 VMware ESXi 中的资源调度程序有关,如果您的虚拟机有 8 个 vCPU,则它必须在给定时间在物理 CPU 上找到一个有 8 个内核空闲的时隙来运行虚拟机的时钟周期。因此,如果每个 CPU 有 6 个内核,则调度程序必须在两个 pCPU 上找到一个时隙,这基本上会暂停其他所有操作。虚拟机不像物理机那样连续运行,它们在时钟周期之间“冻结”,如果调度程序无法跟上,您的虚拟机将花费越来越多的时间“冻结”。如果您没有在 SQL VM 上运行大型数据库,请尝试将其 vCPU 降低到 6 个,看看这是否会改善情况。我通常默认运行 1 个 vCPU,对于较大的虚拟机运行 2 个,对于某些较大的数据库运行最多 4 个。我从未见过需要添加更多。
2) 忘记 VMware 中的超线程,它会为您提供更多一点的性能,根据 VMware 的一些测试,大约可提高 10%,因此请保留它,但在指定硬件时不要指望获得 2 倍的性能。
3) 时钟频率更快的 CPU 可为您提供更快的单线程性能,但核心数越少,您运行更多虚拟机的能力就越弱。VMware 向您显示主机上所有核心速度的汇总是有原因的,这基本上就是 ESXi 将 CPU 视为计算能力的汇总池的方式。