所有虚拟机的 CPU 间歇性达到 100%

所有虚拟机的 CPU 间歇性达到 100%

我们是一家小商店,使用一台 Dell T420(双 CPU,只有一个,6 核)和 32GB RAM 作为主服务器。我们只有 5 个虚拟机,其中一个是我们的 WSE 2012 DC。

时不时地,我们所有的虚拟机都会同时达到 100% 的 CPU 使用率,而且我们无法确定其发生的频率。主机则保持在 4-5% 的水平。主机热启动并不能缓解问题,但冷启动至少可以让一切恢复正常,直到问题再次出现。

有时我们可以让它平静一周或更长时间;有时只能平静一天。一个不可靠的模式似乎是它在长时间的空闲期间(即夜间)的某个时间启动。检查服务器的温度日志首先让我们怀疑是过热,但对最近事件的进一步调查推翻了这一结论。

我们还在戴尔论坛上找到了类似问题的描述,声称通过安装最新一轮的戴尔更新可以解决问题。我们最近参与了一个项目,就是为了做到这一点(顺便说一句,将大约 700GB 的 VHD 安全地从那台机器上取下来然后再放回去是一次相当冒险的事情),但令我们非常沮丧的是,它并没有起到什么作用。

我们完全糊涂了。Microsoft 支持也是如此(或者至少第一层支持是如此,尽管他们试图不这样做)。我在下面附上了我们的 SystemInfo 输出。

有人知道从哪里开始寻找吗?

谢谢

===================================

主机名:SERVER1
操作系统名称:Microsoft Hyper-V Server 2012 R2
操作系统版本:6.3.9600 N/A 内部版本 9600
操作系统制造商:Microsoft Corporation
操作系统配置:独立服务器
操作系统构建类型:多处理器免费
注册所有者:Windows 用户
注册组织:   
产品编号:06401-029-0000043-76293
最初安装日期:2014 年 4 月 3 日,下午 4:07:15
系统启动时间:2014 年 5 月 4 日,下午 1:56:47
系统制造商:戴尔公司
系统型号:PowerEdge T420
系统类型:基于 x64 的 PC
处理器:已安装 1 个处理器。
                           [01]:Intel64 系列 6 型号 45 步进 7 GenuineIntel ~2200 Mhz
                           [Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20 GHz](手动添加)
BIOS 版本:Dell Inc. 2.1.2,2014 年 1 月 20 日
Windows 目录:C:\Windows
系统目录:C:\Windows\system32
启动设备:\Device\HarddiskVolume1
系统区域设置: en-us;英语(美国)
输入法区域设置: en-us;英语(美国)
时区: (UTC-09:00) 阿拉斯加
总物理内存:32,723 MB
可用物理内存:12,716 MB
虚拟内存:最大大小:37,587 MB
虚拟内存:可用:17,129 MB
虚拟内存:使用中:20,458 MB
页面文件位置:C:\pagefile.sys
领域:OIT
登录服务器:\\SERVER1
修补程序:已安装 31 个修补程序。
                           [01]:KB2843630
                           [02]:KB2862152
                           [03]:KB2868626
                           [04]:KB2876331
                           [05]:KB2883200
                           [06]:KB2884846
                           [07]:KB2887595
                           [08]:KB2892074
                           [09]:KB2893294
                           [10]:KB2894179
                           [11]:KB2898514
                           [12]:KB2898871
                           [13]:KB2901101
                           [14]:KB2901128
                           [15]:KB2903939
                           [16]:KB2904266
                           [17]:KB2908174
                           [18]:KB2909210
                           [19]:KB2911106
                           [20]:KB2913760
                           [21]:KB2916036
                           [22]:KB2917929
                           [23]:KB2919394
                           [24]:KB2919442
                           [25]:KB2922229
                           [26]:KB2923300
                           [27]:KB2923768
                           [28]:KB2928193
                           [29]:KB2928680
                           [30]:KB2930275
                           [31]:KB2939087
网卡:已安装 3 个 NIC。
                           [01]:Broadcom NetXtreme 千兆以太网
                                 连接名称:NIC1
                                 DHCP 已启用:否
                                 IP 地址
                           [02]:Broadcom NetXtreme 千兆以太网
                                 连接名称:NIC2
                                 DHCP 已启用:是
                                 DHCP 服务器:192.168.1.12
                                 IP 地址
                                 [01]:192.168.1.135
                                 [02]:fe80::915b:8de0:712e:29f1
                           [03]:Hyper-V 虚拟以太网适配器
                                 连接名称:vEthernet(外部 NIC 1_Internal)
                                 DHCP 已启用:否
                                 IP 地址
                                 [01]:192.168.1.11
                                 [02]:fe80::2d35:f582:4958:9eb2
Hyper-V 要求:已检测到虚拟机管理程序。不会显示 Hyper-V 所需的功能。

== 编辑 ========================

我找到了解决这个问题的方法;我等了一年多以确保我们不会再遇到这个问题。

主持人:我想请求重新提出该问题,以便我可以发布答案。

答案1

经过一年多的等待,为了证明该解决方案的有效性,我终于能够发布这个答案。

Dell 的默认 BIOS 设置已启用 C-States,这会使计算机在空闲时处于低功耗模式。这会导致虚拟机管理程序主机(包括 VMWare、Citrix)上的虚拟机 CPU 使用率达到 100%。

解决方案是将 BIOS 中的系统配置文件设置设为性能,而不是每瓦性能 [OS] 或每瓦性能 [DAPC](后者为默认值)。

相关戴尔文档,第 3 页:

http://en.community.dell.com/techcenter/extras/m/white_papers/20161975/download

以下是熟悉此问题的少数戴尔支持工程师之一的回复:

简而言之:C 状态会在空闲时间禁用额外的处理器核心。对于绑定到核心的虚拟机(这是操作系统控制的,我认为它是不可配置的),这可能会导致它们锁定,因为它们试图使用它们眼中不再存在的资源执行操作。

一般来说,C 状态通常用于备份服务器、辅助角色服务器(备份 DNS、DHCP、域控制器等)等项目,这样备份服务器可以保持开启,但处于低功耗模式以节省能源。

您可以在此处找到其他文档:

http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

简而言之,对于虚拟机管理程序主机,应始终关闭戴尔服务器上的电源空闲状态(设置为性能)。

感谢 Kitsap Bank 的 Eddy Simons 帮助我找到这个解决方案。

答案2

目前还不清楚问题是什么;您已经知道了。我们无法告诉您原因是什么。

但是,您可以运行一些测试:

  • 构建虚拟机 1

    • 在此虚拟机上持续运行 CPU 密集型任务
      (每秒执行数百万次复杂的数学计算)
  • 构建 VM 2

    • 在此虚拟机上持续运行 RAM 密集型任务
      (在内存中创建一个巨型数组,删除它,重复)
  • 构建 VM 3

    • 在此虚拟机上持续运行磁盘密集型任务
      (从文件中读取/写入/删除数百万行)
  • 构建 VM 4

    • 在此虚拟机上持续运行网络密集型任务
      (将文件复制到 SMB 共享/从 SMB 共享复制文件)

等到问题再次发生,观察每台服务器的性能数据。
哪台服务器受影响最大?
有没有哪台服务器完全没有受到影响?

我的猜测是,你的磁盘很差,CPU 正在等待 IO 操作完成后才能继续,这可能会导致某些应用程序的 CPU 耗尽。

答案3

很高兴我发现了这一点。我有一台运行 Hyper-v 的 2012R2 服务器。AMD,6 核 CPU。它已经完美运行了一年多。突然间,我开始看到无法连接的虚拟机 - 无法通过 RDP 连接,也无法通过 Hyper-V 连接。唯一的选择是关闭虚拟机。关闭没有得到响应。所以... 从墙上拔下虚拟插头。打开。

症状是单个机器似乎使用了 100% 的分配 CPU(例如:六核主机上的单核 VM 的使用率为 16%)。

这个问题是偶尔发生的。没有明显的规律或原因。

我终于意识到,这与我尝试将主板从 32GB 升级到 64GB 失败是一致的。问题是,我可以让 1、2 或 3 根 16GB 内存条用于 16、32 或 48GB,但不能让 4 根内存条用于 64GB。我得花很多时间处理 BIOS 设置等。在这方面我一点也不开心。就在那时,我发现了 VM 上启用动态内存的绝妙功能。原来,没有 64GB 我也能活下去!!

我猜测我在修补时打开了 CPU 的电源管理,然后就出现了这个问题。

我已经在 bios 中关闭了 APM。我需要几天时间才能 60% 确信这解决了问题。需要几周时间才能宣布胜利。但这感觉像是问题的一个很好的理由。

现在已经过去24小时了,一切顺利。

祈祷吧。

感谢您的信息!!

相关内容