[11/26 update]新增兩個圖並將前兩個step的電壓升高一格,否則使用電池時某些程式當容易出現當機的情況。  

  CPU為了節省電力消耗,擁有許多電源管理機制,其中之一,可依據CPU工作量,動態調整倍頻(Step),讓CPU在工作量少時,可以好好休息(降低頻率),真正忙錄時卻又可以精神百倍地快速處理所有工作(我的生理「機制」,正好相反!Orz)。

  當然電壓也會隨著STEP不同而有所變換,但是通常預設電壓會「比較」保守,不過也別忘了Inte擁有的製程計術,不僅領先全球且堪稱世界工藝極致(45nm都產了,很威),所以毋需害怕降壓。

  就拿ThinkPad X61 所搭載的Core 2 Duo T7100 來說,其降幅之大足以令人吃驚,有圖有真相(如下圖),最高與最低差了有20度之譜,並減少電力浪費,延長了電池續航力,不過,當然這一切的一切,都必需在CPU可以保持穩定工作,系統不當機的前提之下。

更改前   更改後


  由這則『於Ubuntu系統上修改 CPU 電壓降低筆電工作溫度』,可藉由Linux-PHC 的kernel patch 修改每個CPU Step 的電壓,但光是如此並無法確認修改後系統是否穩定,所以這則『筆電、伺服器 夠穩定嗎?用mprime 燒燒看就知道 (for Linux )』,借助mprime「燒機」以提供穩定與否之參考,本文最後將說明如何將新的電壓設定寫入開機程序中(其實很簡單,不過我找了、試了很久才成功)。

  以下主要參閱Linux-PHC 之Finding the lowest voltages that you can safely use on your CPU 官方wiki,並適度添酌個人安裝經驗,全部大概可簡單的分為五個部份:
  • 系統監測
  • 設定cpufreq參數
  • prime燒機
  • 逐步降低電壓值
  • 寫入開機程序

《系統監測》

系統:Ubuntu 7.10
硬體:IBM ThinkPad X61
處理器:Core 2 Duo T7100

在以下動作之前,最好先關閉BIOS中的CPU Power Management

接著安裝監測工具,監控CPU頻率、使用率及溫度:
  1. 打開cpu頻率調整監察程式、系統監察等窗口:
    在欲新增功能鈕的面板上點右鍵,選『加入面板』,找到系統及硬體那欄,新增『CPU頻率調整監察程式』與『系統監察』到該面板上,進入『系統監察』的偏好設定中勾選『處理器』為受監察的資源
  2. 安裝Hardware Sensors Monitor:
      $sudo apt-get install sensors-applet
    接下來一樣,在面板上點右鍵選『加入面板』,找到系統及硬體那欄,新增"Hardware Sensors Monitor",接著點右鍵進入Preferennces 然後到Sensors 的分頁,勾選acpi 中需分別監測溫度的兩個核心。
  3. GKrellM(上面那些夠了,這個可以不裝)-功能強大的監測軟體,介面豐富(左圖),可同時監測多個項目,且具有log的功能,按以下簡單步驟即可安裝與開啟。
      $sudo apt-get install gkrellm
      $gkrellm

《設定cpufreq 參數》
  緊接著進入cpufreq目錄底下查詢各個step所對應的頻率以及電壓,並且記錄下來,等會兒就是要找出每一個step的頻率的最低且可穩定工作之電壓,但在這之前需簡單的設定控制cpu的幾個參數:

  1. 登錄為root。
  2. 進入/sys/devices/system/cpu/cpu0/cpufreq 目錄下。
      $ su
      password:
      # cd /sys/devices/system/cpu/cpu0/cpufreq
      /sys/devices/system/cpu/cpu0/cpufreq#
  3. 用cat列出各step所對應的頻率。(Core 2 Duo T7100 為例)
  4. 將自動變換頻率(step)的參數(ondemand) ,更改為手動(userspace)。(自排換手排!手自排嗎?恩,有那個fu!)
  5. 手動設定CPU頻率。(從最高的開始)
      /sys/devices/system/cpu/cpu0/cpufreq# cat scaling_available_frequencies
      1801000 1800000 1200000 800000
      /sys/devices/system/cpu/cpu0/cpufreq# echo "userspace" > scaling_governor
      /sys/devices/system/cpu/cpu0/cpufreq# echo 1801000 > scaling_setspeed

《mprime燒機》
  進入mprime 目錄中,輸入以下命令:(還沒下載嗎?來吧!還是參考這篇『筆電、伺服器 夠穩定嗎?用mprime 燒燒看就知道 (for Linux )』,別忘了先設定好優先權。)
  $su
  password:
  # cd /home/yours/Desktop/mprime2414
  /home/yours/Desktop/mprime2414# ./mprime -t

再開啟終端機,輸入底下指令,產生任務給另一個CPU執行。
  /home/yours/Desktop/mprime2414# ./mprime -a2 -t
看一下CPU 使用率,應該是100%,接下來需一段時間讓溫度升到最高。

《逐步降低電壓值》
  先用cat 讀取預設值,接下來echo 較低的「對應」電壓,
  /sys/devices/system/cpu/cpu0/cpufreq# cat phc_vids
  45 37 18 11
  /sys/devices/system/cpu/cpu0/cpufreq# echo "42 37 18 11" > phc_vids

  接著再讓他跑一陣子(愈久愈好,建議最好超過半個小時),如果程式沒出現error的訊息,就繼續往下調降,若發現錯誤訊息,這時候再把電壓往上調一格,接著讓mprime 跑更長一段時間,如果都沒產生認何錯誤,那這個值就是穩定運作可容忍的最低電壓了。

  例如Core 2 Duo T7100 (頻率設1801000),電壓調降到16時,mprime 馬上就出現error ,因此必須調升一格到17,之後如果mprime 跑很長一段時間後,都沒有問題,那17就是最低穩定工作電壓。

  接著改找第二個step,回到《設定cpufreq 參數》的第五個步驟修改頻率,重覆之後的步驟,直到找出每個step的電壓為止。

  當時脈為1200000,降壓前後的溫度,差了11度,也算下降了不少。

《設定開機載入》
  進入/etc/目錄底下,打開rc.local:
  $su
  password:
  #gedit /etc/rc.local
加入以下命令(中間的是你的電壓設定),在這之後開機就會自行載入設定值。
  sudo chmod 700 /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
  sudo echo "18 18 11 11" > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
  sudo chmod 700 /sys/devices/system/cpu/cpu0/cpufreq/phc_vids

最後收工前,將各個step下,更改電壓前後的溫度差異,整理如下圖: