服务器的能耗控制以及高性能模式配置(Dell)

事情的起因要算很久之前一次测试,一个同事借了我们的一台机器测试,在测试之前惯例使用cpupower frequency-set -g performance命令将CPU高性能模式打开,避免因为系统处于节能模式导致性能测试不准确。但是在我们这台机器上执行命令却报错了:

]# cpupower frequency-set -g performance
Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

提示没有权限,或者没有加载模块,搜索了一圈,发现大部分的解释都是需要加载模块,然而在加载模块的时候又出现了其他的错误:

]# modprobe acpi-cpufreq
modprobe: ERROR: could not insert 'acpi_cpufreq': No such device

一开始以为是使用的内核问题,也就没有关心,继续测试了。当然事情还没完,最近又有一个新的需求,希望机器的CPU能一直运行在一个比较稳定的频率,最好是能稳定在全核睿频上不降频。由于上面的原因无法在操作系统层面高性能模式,而且还有个问题,即使可以按上面的方法设置高性能,还是避免不了CPU降频,并且无法将频率设置高于CPU基础频率。

既然软件层面解决不了,那就去看看硬件设置,于是就重启进入BIOS,看看BIOS设置里有没有相关的选项。

说明一下这是一台Dell的14代服务器,所以不确定其他厂商或者不同时期的机器会不会有同样的设置,仅供参考。在BIOS里的System Profile Settings大菜单下有电源管理相关的设置,其中比较重要的配置就是System Profile选项,Dell提供了几个标准的选择,主要的可选项如下:

  • Performance Per Watt (DAPC)
  • Performance Per Watt (OS)
  • Performance
  • Workstation Performance
  • Custom

当前的配置是Performance Per Watt (DAPC), 查了查Dell的BIOS手册,在这个模式下,CPU Power Management选项将被设置为System DBPM (DAPC),什么意思呢,其中DBPM是Demand Based Power Management的缩写,DAPC是Dell Active Power Control的缩写,就是“又Dell BIOS所管理的,按需动态调整CPU频率”。

而第二个Profile Performance Per Watt (OS)的CPU Power Management选项是OS DBPM,一个DAPC,一个OS,到这里就明白了,原来在当前的设置情况下,CPU的频率是由硬件管理的,怪不得想加载模块额时候报错没有设备呢。很显然,只有当CPU Power Management为OS DBPM时,才可以在系统中加载模块,设置电源管理的模式和CPU频率,如果是任何其他的选项,自然系统就无法管理CPU的频率了。

经过上面的描述,应该很容易理解为啥一开始的时候为啥一开始设置高性能失败的原因了,以后再遇到也就不会奇怪了。

还有一个问题没解决,就是希望系统不降频的需求,这个需求也好解决了,直接设置Profile为Performance,贴心的Dell已经把所有该设置的选项都设置好了。主要就是关闭C-states、C1E,开启Turbo等等,这里就不在说了。

保存,重启,问题解决!