CPU 节能与修改

  • A+
所属分类:Linux

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

CPU 节能与修改
更多状态请查看下面链接:
https://www.dell.com/support/article/us/en/19/qna41893/what-is-c-state?lang=en
三、Linux 系统上查看CPU节能
1. Linux 下命令快速查看

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

CPU 节能与修改
从这个图我们可以看到目前所有核心都没有100%在C0的状态。
所有核心都运行C0模式下:
图中红框部分说明,所有核心都工作在C0模式下,没有降频的发生。
四、从系统层面禁止CPU节能
1. RHEL6.X的调整方法
RHEL6.X的设置相对比较简单,可直接在系统grub中添加:intel_idle.max_cstate=0和idle=poll这两个参数,如下图:

CPU 节能与修改
修改完成后保存退出,重启系统。
2. RHEL7.X的调整方法
1)修改配置文件添加“intel_idle.max_cstate=0 processor.max_cstate=1 intel_pstate=disable idle=poll”设置。
[root@localhost ~]# cat /etc/default/grub

CPU 节能与修改
2)编辑grub2文件。

CPU 节能与修改
3)重启系统
4)检查当前CPU MHz

CPU 节能与修改
3.Ubuntu的设置方法
修改方式与RHEL7一样,在kernel选项添加下面两个参数,具体加入位置请看图红框位置。
processor.max_cstate=1 intel_idle.max_cstate=0

CPU 节能与修改
然后运行grub-mkconfig -o /boot/grub/grub.cfg命令,重启机器。
五、总结
这里所使用的方法是从系统kernel层面设置参数关闭CPU节能模式,不管BIOS里的C1E与C States是否设置了Enable,CPU节能都会被disable。
此测试在RHEL6.x,CentOS 7.2/7.3,RHEL 7.2/7.3 都能正常关闭CPU节能,使CPU跑在C0模式下。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: