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保存開機即可