PowerEdge服务器在Linux OS下关闭CPU节能方法
摘要: 本文章提供PowerEdge服务器在Linux OS下关闭CPU节能方法。
说明
一、CPU节能概念
随着CPU的发展,Intel出现了EIST技术,它可以动态的调整CPU的频率。当CPU使用率地下或者接近0时候,能降低CPU频率并且降压,从而降低功耗和发热。当检测到CPU使用率增高,它会马上回到原始工作频率,但是你必须考虑CPU被唤醒的时间,并且确保它会再次100%运行。这一系列的过程通常被称为“C-states”或“C-modes”,它是从C0开始的。
随着C-states的不断增加,CPU睡眠模式就更深,即更多的电路和信号被关闭,并且CPU将需要更多时间返回到C0模式,即唤醒。
对于每个模式也有不同的名称与不同功耗的子模式,从而唤醒时间级别等。
二、常见的几种C-states
C0 :工作状态,CPU完全运行。
C1 :停止状态,主CPU停止内部时钟经由软件;总线接口单元和APIC保持全速运行。
C3 :深度睡眠,止所有CPU内部和外部时钟。
C6 : 深度功率下降, 将CPU内部电压降低到任何值,包括0V。

三、Linux 系统上查看CPU节能
1. 通命令检查

从图可以看出当前超线程cpu NHz各有不同,说明都不是跑在C0模式下。
2. 使用i7z工具检查
它是Linux下查看C-state的小工具,使用简单,直接上传i7z_64bit文件到系统里,命令添加可执行权限,如:chmod +x i7z_64bit,然后直接执行 ./i7z_64bit,就能看到下面的信息。

从这个图我们可以看到目前所有核心都没有100%在C0的状态,没有降频的发生。
四、C0模式调整
1. RHEL6的调整方法:
直接在系统grub中添加:intel_idle.max_cstate=0和idle=poll这两个参数。
2. RHEL7 、8、9的调整方法:
intel_idle.max_cstate=0 processor.max_cstate=1 intel_pstate=disable idle=poll
1)修改配置文件添加“intel_idle.max_cstate=0 processor.max_cstate=1 intel_pstate=disable idle=poll”设置。
[root@localhost ~]# cat /etc/default/grub

2)编辑grub2文件。

3)重启系统
4)检查当前CPU MHz

3.Ubuntu的调整方法:
在kernel选项添加下面两个参数,具体加入位置请看图红框位置。
processor.max_cstate=1 intel_idle.max_cstate=0

然后运行grub-mkconfig -o /boot/grub/grub.cfg命令,重启机器。
Redhat参考KB: https://access.redhat.com/solutions/202743
五、总结
这里所使用的方法是从系统kernel层面设置参数关闭CPU节能模式,不管BIOS里的C1E与C States是否设置了Enable,CPU节能都会被Disable。