站长手记 - 站长手记
打印】【收藏此页
Intel Nehalem CPU Errata 导致 VMWare ESXi(vSphere) 以及 Windows 2008 Hyper-V 崩溃(watchdog timeout)原因
作者:本站:苏信东  来源:WaveCN.com 世纪音频  发布日期:2012-02-10  最后修改日期:2013-12-23  

在用的两台DELL R710服务器,初始安装VMWARE ESXi 4.0,后来升级多次到现在vSphere 5.0,一直以来都有一个很困惑的问题,就是两台服务器都会莫名其妙地在不确定的时间突然重启。正常情况下VMWARE在崩溃时会产生一个紫色背景的出错信息屏幕,俗称PSOD(相对Microsoft Windows则是蓝屏BSOD),但我碰到的情况却只是服务器直接重启,没有任何出错信息。困惑了好久。期间尝试了多种方法试图确定原因,包括开启了ESXi所有默认不开的日志、增加了日志滚动、开启Kernel Dump、增加独立的SysLog 服务器以实现日志的独立保存等等,均一无所获。除了最后偶然在iDRAC的日志里面看到在机器重启时产生的:WATCHDOG CLOCK TIMEOUT事件之外,再没有找到任何记录,而服务器BIOS里面的WATCHDOG功能是DISABLED的,因此这个错误也说明不了什么。网上搜索也找不到类似的信息。

然后,开始怀疑是否硬件问题,着手进行服务器的BIOS更新和DRAC固件更新。在着手进行BIOS更新时,突发奇想转换一下搜索关键字。之前一直搜索的都是诸如“VMWARE SUDDENLY REBOOT”、“VMWARE WATCHDOG TIMEOUT”等关键字,总是带着个VMWARE。这次改为搜索“R710 WATCHDOG TIMEOUT REBOOT”,结果搜到在DELL的论坛上有这样一个主题:

Random Reboots with a R710 and Windows 2008 R2

讨论结果指出Windows 2008 Hyper-V有类似现象,解决办法是在系统BIOS中设置C1E、C States两个选项为Disabled并安装Hotfix。其中还给出了Microsoft内部员工的一篇博文:

Hyper-V Hotfix for "0x00000101 - CLOCK_WATCHDOG_TIMEOUT" on Nehalem systems

该文提到微软给出了一个KB:

已安装 Hyper-V 角色并使用代码名称为 Nehalem 的一个或多个 Intel CPU 的基于 Windows Server 2008 R2 的计算机上出现 Stop 错误消息:“0x00000101 - CLOCK_WATCHDOG_TIMEOUT”

该KB指出问题出在Intel Nehalem 系列的CPU上,详情参见Intel Xeon 5500 处理器系列规格更新,但到Intel网站的链接已失效。于是在Intel的网站上查询,终于找到文档的正确路径:

Intel Xeon Processor 5500 Series Specification Update


虽然微软的KB没有正面指出那个Errata导致Windows 2008 Hyper-V 蓝屏死机,但从文档内容、发布时间并结合之前DELL论坛讨论内容来看,估计会是AAK47: A P-state Change While Another Core is in C6 May Prevent Further C-state and P-state Transitions 导致。因为这个Errata的影响是会导致处理器停止对进一步的功耗状态切换请求的处理。简单理解就是处理器会挂起,于是WATCHDOG TIMEOUT就有了前提条件。

鉴于微软提供了Hotfix去临时解决问题,于是到VMWARE进行搜索,但没有结果。另一方面,比较坑爹的是Intel这个文档里面列出的很多Errata都指出状态是No Fix,即没有计划进行修正,包括AAK47。文档内还指出应该可以通过BIOS来提供绕过这一问题的方法。这样一来,就只能继续进行R710的BIOS更新。偏偏R710 BIOS更新的说明里面并没有指出有对5500系列XEON 进行了任何CPU微码更新(事实上Intel的文档也没有说BIOS提供的绕过方法就是CPU微码更新即microcode update),所以,最后的最稳固的处理方法就只有在BIOS中设置C1E和C States均为DISABLE。无奈地换来的负面效果就是耗电增加。

2012-09-12 后记:经过一段时间的运行测试,对于ESXi,关闭C1E和C States,甚至尽量少开虚机,都只能减少这个问题发生的频率,也就是仍然会发生莫名重启的现象。

2013-12-23 后记:在这一年中,升级ESXi到 5.1、5.5版本,保持关闭C1E和C States,在vSphere内部设置Maximum Performance,都仍然会发生莫名重启的现象。看来直到服务器报废都不会有解决了。差评。