SUSE Linux的CPU节电模式引发的故障案例解析

生产系统的一台SUSE  Linux10服务器,在深夜零点后突然失去响应了,远程连接也无法登陆。安排驻场工程师去机房看看,发现服务器上各种指示灯均正常,网线也无松动。当接上键盘、鼠标后,现场工程师发现服务器无任何反应,键盘鼠标也无任何响应,服务器像冰冻休眠了一样。因为这台服务器是负载均衡服务器组中的一台,即使离线也不影响业务。所以就让现场工程师重启了该服务器,重启后发现一切正常,收集了日志后,发现有一段报错代码如下: 

SUSE Linux的CPU节电模式引发的故障案例解析


根据英文提示:CPU不支持频率调整,需要设置'CPUFREQ_ENABLED=no' 和SUSPEND2RAM_FORCE=yes 。
 
分析:现在服务器的CPU耗电很大,按需调节CPU频率有对节能有重要的意义,目前多数Linux发行版都已经默认启用了这个功能,但是也有一些LINUX发行版需要经过简单的设置才行(启用相关的模块,并安装CPU频率调节程序)。实际上这个CPU的节电模式,也就是变频技术,在负载不高的时候,CPU会自动降频使用。cpufreq的驱动程序,就是用来动态调整CPU频率以降低能源消耗的。但这个功能有的时候会有问题,比如当你没有相应的模块和频率调节驱动时,会造成内核错误,进而引发服务器不响应。
 
我们可以看下系统中支持CPU频率调整的模块驱动
 
# cd /lib/modules/2.6.16.60-0.21-smp/kernel/arch/x86_64/kernel/cpufreq
 web132:/lib/modules/2.6.16.60-0.21-smp/kernel/arch/x86_64/kernel/cpufreq # ls -l
 total 104
 -rw-r--r-- 1 root root 30264 May  6  2008 acpi-cpufreq.ko
 -rw-r--r-- 1 root root 37808 May  6  2008 powernow-k8.ko
 -rw-r--r-- 1 root root 29544 May  6  2008 speedstep-centrino.ko
 
加载的方法
 
#modprobe acpi-cpufreq
 
#modprobe powernow-k8
 
#modprobe speedstep-centrino
 
在本故障案例中,提示没有cpufreq driver available,所以解决办法
 
# vi /etc/powersave/cpufreq
 CPUFREQ_ENABLED="no"  (注:默认为yes)
 
重启/etc/init.d/powersave,然后就生效了。
 
 
可以通过命令cpufreq-info 来查询cpu频率状态
 #  cpufreq-info
cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
 Report errors and bugs to [email protected], please.
 analyzing CPU 0:
  no or unknown cpufreq driver is active on this CPU
 analyzing CPU 1:
  no or unknown cpufreq driver is active on this CPU
 analyzing CPU 2:
  no or unknown cpufreq driver is active on this CPU
 analyzing CPU 3:
  no or unknown cpufreq driver is active on this CPU
 
如上显示为关闭CPU频率调整后的状态显示。

相关推荐