VMWare VMotion 导致性能提高?

Jay*_*hen 2 sql-server sql-server-2008-r2 vmware

一段时间以来,我们在运行 SQL Server 的虚拟环境中遇到了一些奇怪的问题。

我们从用户那里随机收到关于 SQL 盒性能非常差的电话。果然,当我查看时,我看到 CPU 固定在 100%。我对另一台主机执行 VMotion,一旦它完成移动到另一台主机,性能立即恢复正常。

我一直在与 VMWare 管理员合作,他们向我保证 VMotion 不会影响 SQL Server 上的任何内容。就好像移动到另一台主机会导致执行计划更改等。然而,我不明白为什么 CPU 使用率突然飙升,除非由于参数嗅探而导致重新编译的查询计划很糟糕,但我认为 VMotion 不会解决这个问题,因为它应该是透明的。

VM 场由 19 台戴尔服务器(抱歉,我不知道确切型号)组成,每个服务器有 2 个物理插槽和 12 个内核。

以前有没有其他人观察过这种行为?我想知道这是否与容量有关,因为似乎有一些大型 VM 供主机处理(有 14 个 80GB、12 个核心 VM 浮动)。即使在场中使用这些虚拟机,我也可以在 Vsphere 控制台中看到主机没有被过度使用(内存确实在很多时候爬升到 80% 标记,但没有膨胀)。

此外,这会发生在所有不同版本的 SQL(2008、2008R2、2012 和 2014)上。

非常感谢您的任何见解!

Tom*_*m V 6

VMWare VMotion 不会重新启动您的服务器、重新启动任何服务或删除缓存。VM 在 VMotion 期间保持活动状态,因此您不应丢失缓存或计划,除非您要移动到的主机处于严重的内存压力下并且膨胀处于活动状态。

VMotion 期间发生的情况是网络延迟增加,并且可能在迁移过程中 ping 下降,但是一旦迁移结束,这种影响就会完全消失,并且不会影响来宾内部的 CPU 使用率。

但是,您需要了解的是,来宾内部的 CPU 使用百分比是您从管理程序(而不是底层 CPU)分配给您的资源池中消耗的百分比,因此如果您从分配给您的主机移动4Ghz 给主机分配 2Ghz 来宾内部的 CPU 使用率会翻倍。

您可以在来宾 VM 内监控一些性能计数器,以查看您从 Hypervisor 获得的实际 CPU 时间,例如:

  • % 处理器时间
  • 以 MHz 为单位的有效 VM 速度
  • 主机处理器速度 (MHz)
  • 以 MHz 为单位的限制

这里开始

这可以让您了解您获得的实际 MHz,VMWare 配置施加的任何限制等。

如果您确定 Hypervisor 没有为您的 VM 分配足够的周期,您可以设置预留以保证一定数量的 MHz 或向 VM 添加 CPU 权重,从而使您的 VM 优先于其他人。

如果您可以访问 esxtop(不是来自 vCenter 的扁平采样平均值图表),您应该关注 %RDY(表示您的 VM 有线程等待物理 CPU)或 %CSTP(表示协同调度问题)。有关更多信息,请阅读此黄砖帖子

由于您是说主机具有其他高负载 VM,因此您还需要考虑 VMWare 在使用默认配置时试图将资源分配给要求最高的 VM。另一个 VM 中负载的突然增加可能会对 VM 的 CPU 分配产生巨大的(暂时的)影响。

除非存在严重的内存压力问题,否则我不知道如何获得缓存刷新,除非新主机通过气球驱动程序或动态内存设置回收大量内存导致缓存刷新。否则机器会保持活动状态并且内存会被锁步复制