Dell服务器和Linux kernel bug造成的CPU性能下降问题

  • Post author:
  • Post category:IT
  • Post comments:0评论

好久没做这种类似技术顾问的工作了。今天处理了一个挺奇怪的问题,我也是第一次碰到这种事情。最后总算比较周折的找到了原因,这个bug比较新,估计碰上问题的人应该不会少,所以我就顺手记在这里一份。

问题是出现在一个朋友的服务器上,这是一台E5-2430的Dell服务器,他给我的描述是"有一台机器非常慢,但负载很低。"按照以往经验,这种问题是出现在程序锁或者IO Block上,一般是某些重要资源的争用导致的。但检查之后这些都没问题。

这种现象我从来没碰上过,直觉上感受就是cpu本身速度很慢,于是,用计算圆周率的办法来测试cpu性能:

time echo "scale=5000; 4*a(1)" | bc -l -q

过了4,5分钟都没算出来结果。基本可以定位问题在CPU上。

查syslog,发现大量的 CPU0: Package power limit notification 这种通知,怀疑是和电源管理有关。

顺着这个终于找到了问题。这是一个目前只出现在Dell服务器上的LInux内核bug,大致是内核在CPU功耗和温度控制上有bug,(确切的说应该是Dell的BIOS造成的,但最终表现出来是内核的bug)没法拿到正确的值,由此导致CPU持续被降频。

最早的报告应该来自Redhat,并且在1个多月之前redhat修复了它。

如果是Redhat的服务器,打补丁即可,如果不是Redhat,这里有几种其他解决方案。

这件事让我明白了为什么一些做运维的人非要坚持用Redhat,我一直认为Redhat在各方面都落后了。但出现这种问题的时候还是这种商业公司响应比较及时。

多谢 @googollee,@yarshure,@holly,@qianhw 的建议和讨论。]]>

发表回复