ESX 客户端上存在严重的性能问题,但是从我所在的地方我无法直接查看服务器配置,但我想确定他们是否正确设置了它。
运行 CPU-Z 后,我可以看到两个处理器,每个处理器有一个核心,而我使用的是 Yorkfield 处理器,因此预计会出现四个核心。虚拟 CPU 在 CPU-Z 中显示的是这种形式吗?
我如何从客户端确定 ESX 的配置?我知道 ESX 可以启用 HT。我的系统大量使用 SMP,因此应该会受益。据我所知,ESX 配置了两个 vCPU。我对数据的解读正确吗?
编辑:CPU 阻塞主要有两个原因。首先,应用程序并不完美,我们正在努力解决这个问题。其次,我们的 CPU 能力不足。该图像来自类似的本机机器,现在位于虚拟机上。性能应该相似,但事实并非如此。通常我们可以在每个本机系统上处理 500 多个会话。在这个系统上,阻塞从 280 个会话开始。我知道把责任归咎于 CPU 配置有点短视,但经过两天的密集监控和分析,一切都开始指向那个方向(内存、磁盘 IO、数据库连接和网络运行良好)。
答案1
如果您在具有两个 vCPU 的 VM 上获得 280 个会话,并在使用所有 4 个核心的同一物理机上获得 500 多个会话,则您接近该 VM 配置的裸机性能。重新配置 VM 以使用 4 个 vCPU,并且性能应该接近,前提是 ESX 主机上没有其他任何消耗大量资源的东西。但是,对于在 4 核单 CPU 主机上运行的 4-vCPU VM,虚拟机管理程序开销将占用总容量的一小部分,这可能相当可观。ESX 虚拟机管理程序仅在可以同时调度所有 4 个 vCPU 时才会调度您的 VM,因此在这样的设置下,任何其他运行的程序(虚拟机管理程序、服务控制台、其他 VM)都会导致所有 4 个 vCPU 停滞。在此设置下,如果您可以在两个双 vCPU VM 上运行您的应用程序,您可能会发现即使增加了运行额外客户操作系统的开销,它的扩展性也会更好,并且虚拟机管理程序处理调度问题会容易得多,因为只有当其他任务需要访问 CPU 资源时,您才会停止两个核心。
每个 VMware vCPU 相当于多核系统上的单个核心,这就是 VMware 分配处理器资源的方式。Yorkfield 是一款 Core2 Quad,绝对不支持 HT - 它有 4 个物理核心,但没有 HT 核心。
在虚拟机中运行的 CPU-Z 只会报告虚拟机中 vCPU 的数量,尽管它会正确识别底层 CPU。根据 ESX 版本和虚拟机的配置方式,它可以将它们显示为双核单处理器或两个独立的处理器,但这对性能没有影响,它只是一种用于促进某些许可情况的呈现选择。
经过编辑以提供更准确和最新的数据:
上面提到的严格协同调度有点儿像烟幕弹。ESX 自 ESX V3 以来一直使用宽松的协同调度机制,该机制允许一定的余地(vCPU 核心之间的时钟漂移),并且该机制在后续版本中得到了改进。
一般来说,与 vCPU 数量较少的 VM 相比,具有与物理核心数量相同数量的 vCPU 的 VM 在负载下调度会遇到更多麻烦,但情况并不像我最初的回答中所说的那么严重。关于它如何实际工作的非常详细的解释可以在此 VMware 白皮书。
答案2
当系统受 CPU 限制时,有多少个进程占用 CPU?您的描述意味着只有一个可运行的进程。
Yorkfield CPU 不支持 HT,因此您可以排除这种可能性。