Intel处理器都支持Turbo和EIST,且一般情况下,各家厂商在BIOS中都会设置EIST和PState的开关,那么这些开关与CPU的频率的关系是什么呢?今天对此做个总结:
按照国际惯例,本次梳理将会解决下列问题:
1. EIST是什么?
2. EIST与Turbo与PState和CPU频率得关系
3. 如何在linux下使用Pwr工具查看CPU频率,以及Linux系统安装MSR相关的驱动接口
4. BIOS关闭了EIST,为何Linux系统下CPU主频会降低?
EIST是什么?
EIST---全称为“Enhanced Intel SpeedStep Technology”,是Intel开发的专门为移动平台和服务器平台处理器开发的一种节电技术。它能够根据不同的系统工作量自动调节处理器的电压和频率,以减少耗电量和发热量。这样一来,我们就不需要大功率散热器散热,也不用担心长时间使用电脑会不稳定,而且更加节能。
EIST与Turbo与PState的关系
Turbo是睿频开关,顾名思义,如果设为Enable,则CPU可以睿频运行。一般来说,EIST作为智能降频开关,优先级较高,如果EIST设为diable,则不允许CPU节能,CPU正常运行主频应当一直在标频。Turbo为睿频开关,当EIST设为disable后则Turbo应当加灰失效。
PState属于ACPI中得一个概念,本节不是主要介绍ACPI,因此再此不多赘述,PState标志着CPU节能等级,如果PState被设置为Enable后,则CPU将会在不同得PState状态之间进行切换,一般应用较多得是P0-P4,后面还可以到P10。CPU在P状态之间进行切换时,CPU的频率,CPU内部核心电压,Cache缓存的数据量以及唤醒时间会有所变化,总之最终得目的亦是为了节省能耗。
EIST与Turbo和Pstate三者之间得关系:仅关注CPU主频角度来看得话,EIST是总开关,如果设为Disable则Pstate也会设为Disable,体现在BIOS中你可以看到,Pstate得开关会随着EIST得disable而加灰,意思是禁止PState。此时进入到OS后,CPU得主频应该稳定在标频运行,此时Turbo开关也会随着EIST而加灰无效,意为不可睿频,此时即使使用PTU工具加压,也只会稳定在标频。但若EIST设为Enable,情况还稍微复杂下,但也基本是反着来得。我用下面得表格加以说明:
如何在linux下使用Pwr工具查看CPU频率,以及Linux系统安装MSR相关的驱动接口
Linux系统下可以通过‘cat /proc/cpuinfo’命令来看CPU各个核心得频率是多少,同时Intel也提供了PTU加压与查看主频得工具包可以直接使用。以笔者使用得Broadwell De得处理器为例,在intel官网上直接下载工具包后,在Linux系统下运行即可。这里补充一个小问题,有时可能会遇到Pwr得工具无法运行,报错显示MSR得driver没有提供。如下图
针对这个问题,方法其实很简单:
1) 查看/dev/cpu/路径下,按理来说应该有CPU每个core访问MSR得驱动接口才对,如果没有,可以用如下指令:
2) modprobe msr
3)运行完后,再查看/dev/cpu/路径下,应该会多点什么东西,如下图:
这时候再运行PWR工具即可直接运行,
BIOS关闭了EIST,为何Linux系统下CPU主频会降低?
有时候可能遇到BIOS中管别EIST,此时PState也失效了,但是在系统下查看CPU主频发现,频率还是在波动,这个是什么原因呢?
答: Linux内核在加载得时候,有可能会把BIOS关闭得PState重新打开,导致CPU仍开启节能模式,CPU主频会波动,解决方式有两个:
1) 如果有OS源码,直接找到这个地方,关闭即可。
2) 在GRUB添加配置项,load OS时关闭PState即可,以笔者得为例:
a. 在GRUB界面,选择即将加载得os选项,然后按e,进入到开机参数编辑界面
b. 添加指令 ‘intel_pstate=disable’
c. 按下F10保存开机即可