Intel處理器都支持Turbo和EIST,且通常狀況下,各家廠商在BIOS中都會設置EIST和PState的開關,那麼這些開關與CPU的頻率的關係是什麼呢?今天對此作個總結:linux
按照國際慣例,本次梳理將會解決下列問題:緩存
1. EIST是什麼?服務器
2. EIST與Turbo與PState和CPU頻率得關係工具
3. 如何在linux下使用Pwr工具查看CPU頻率,以及Linux系統安裝MSR相關的驅動接口ui
4. BIOS關閉了EIST,爲什麼Linux系統下CPU主頻會下降?spa
EIST是什麼?blog
EIST---全稱爲「Enhanced Intel SpeedStep Technology」,是Intel開發的專門爲移動平臺和服務器平臺處理器開發的一種節電技術。它可以根據不一樣的系統工做量自動調節處理器的電壓和頻率,以減小耗電量和發熱量。這樣一來,咱們就不需要大功率散熱器散熱,也不用擔憂長時間使用電腦會不穩定,並且更加節能。接口
EIST與Turbo與PState的關係開發
Turbo是睿頻開關,顧名思義,若是設爲Enable,則CPU能夠睿頻運行。通常來講,EIST做爲智能降頻開關,優先級較高,若是EIST設爲diable,則不容許CPU節能,CPU正常運行主頻應當一直在標頻。Turbo爲睿頻開關,當EIST設爲disable後則Turbo應當加灰失效。get
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保存開機便可