[Archlinux]CPU節能(AMD k10)

注意:此過程可能用壞你的電腦,請自行考慮後果。至少也會開開關關好幾次。


使用軟體:

K10ctl    (調節電壓)

lm_sensors (觀看電壓 溫度等)

cpupower  (調頻)



1)先安裝lm_sensors
$ sudo pacman -S lm_sensors

2)執行偵測,一直yes就好
$ sudo sensors-detect

3)啟動lm_sensors
 $ sudo rc.d start sensors

4)執行lm_sensors
 $ sensors
此時可以看到很多資料(詳見下方archwiki)
其中cpu0_vid應該是 CPU電壓
可是在我的電腦卻是int1
 
5)安裝 cpupower
$ sudo pacman -S cpupower
6)安裝k10ctl
$ sudo yaourt -S k10ctl 
7)載入模組msr
$ sudo modprobe msr 
8)查看目前設定(此例為雙核心 四核心就0-3  三核心就0-2)
$ sudo k10ctl 0-1 


例子
CPU0
Current P-State: 3      Fastest P-State: 0
               NbVid   NbDid  CpuVid  CpuDid  CpuFid           UNb   CpuMult      UCpu     PCore
P-State 0:        30       0      10       0      14      1175.0mV  15.00000  1425.0mV   32063mW
P-State 1:        30       0      18       0       7      1175.0mV  11.50000  1325.0mV   27030mW
P-State 2:        30       0      26       0       2      1175.0mV   9.00000  1225.0mV   23153mW
P-State 3:        30       0      38       1       0      1175.0mV   4.00000  1075.0mV    8493mW
Low Limit:       124       1     124                         0.0mV   0.50000     0.0mV
High Limit:       10       1      10                      1425.0mV  15.00000  1425.0mV
Target:           30       0      38       1       0      1175.0mV   4.00000  1075.0mV
Current:          30       0      10       1       0      1175.0mV   4.00000  1425.0mV
 
 10) 修改範例並貼上
$ sudo  leafpad /etc/conf.d/k10ctl
 
例子
//////////////////////////////////////////////////////////
CONFIGURATED=true

# 改成核心數
CORES=2

# List of P-states you want to change.
# NOTE: all following arrays must have the same size!
PSTATES=( 0 1 2 3 )

# List of Northbridge VIDs
NBVID=( 30 30 30 30 )

# List of CPU VIDs
CPUVID=( 10 18 26 38 )

# List of CPU FIDs
FID=( 14 7 2 0 )

# List of CPU DIDs
DID=( 0 0 0 1 ) 
 ////////////////////////////////////////////////////////// 
9)觀看頻率訊息
$ sudo cpupower frequency-info
記下
Pstate-P0:  3000MHz
Pstate-P1:  2300MHz
Pstate-P2:  1800MHz
Pstate-P3:  800MHz

 
10)編輯/etc/conf.d/cpupower
$ sudo leafpad /etc/conf.d/cpupower 
 設定freq="3000MHz"(去掉"#")
儲存(意味等等還要設定2300MHz 1800MHz 800MHz)

11)寫一個set.sh
$ leafpad ~/set.sh
貼上以下範例
////////////////////////////////
sudo /etc/rc.d/cpupower start
sudo /etc/rc.d/k10ctl start
sudo /etc/rc.d/cpupower start
sudo /etc/rc.d/k10ctl start
sudo /etc/rc.d/sensors start
sensors
//////////////////////////////
其實有些不用一直啟動
這是為了後面方便才寫成這樣的
sensors可以即時看出電壓是否有更改
重複兩次是因為我自己在用這樣才有變動到電壓
儲存


12)利用mpime燒機
GIMP 下載mprime解壓縮後,假設裏面的mprime解壓縮到~(家目錄)
使用./mprime來執行
第一個選項會是
Join Gimps? (Y=Yes, N=Just stress testing) (Y): N
請選N,剩下可以一路Enter往下,然後你會看到CPU突然衝到100%
這時請停止(ctrl-c再選5  或者關掉終端機)

13)逐步修改電壓並燒機測試穩定


$ sudo  leafpad /etc/conf.d/k10ctl
因為我們現在處理頻率3000MGHz
所以我們要修改CPUVID中的第一個
(也就是說2300MGHz是第二個 1800MGHz是第3個 800MGHz是第四個)
CPUVID=( 10 18 26 38 )
CPUVID=( 11 18 26 38 )
儲存
備份一下
$ sudo cp /etc/conf.d/k10ctl k10ctl.bak
$ sudo sh ~/set.sh
此時可以比較跟之前相比 電壓有沒有變小
$ sudo ~/mprime -t
看到數據於是CPU滿載,至少經過40秒(看個人信心度,久一點比較好)
ctrl-c中斷
重複這個步驟直到出現error 或當機

14)error或當機重開之後
$ sudo modprobe msr
$ sudo cp /etc/conf.d/k10ctl.bak  k10ctl
$ sudo leafpad /etc/conf.d/k10ctl
將剛剛設定的CPUVID減一
$ sudo sh ~/set.sh
$ sudo ~/mprime -t
燒機長一點約五分鐘(長一點也可)
如果又有問題就是重複這個步驟(CPUVID減一)
沒問題可停止ctrl-c
此時設定好了 
此頻率下最適合的電壓

15)編輯/etc/conf.d/cpupower更改下一個頻率
$ sudo leafpad /etc/conf.d/cpupower 
 設定freq="2300MHz"
儲存(意味等等還要設定 1800MHz 800MHz)
修改
$ sudo  leafpad /etc/conf.d/k10ctl
中的CPUVID的"第二個"
CPUVID=( 27 18 26 38 )
重複步驟13 14 15直到所有頻率都設定好了
16)改回設定
$ sudo leafpad /etc/conf.d/cpupower
把#去掉跟補上
///////////////////
governor='ondemand'
#freq=
/////////////////


17)設定開機後自動執行
$ sudo leafpad /etc/rc.conf
在daemon中加上cpupower k10ctl

18)殺掉剛剛暫時使用的的檔案

$ sudo rm /etc/conf.d/k10ctl.bak
$ rm ~/mprime
$ rm ~/set.sh

19)重開機




其他資料:
CPU更新
ARCHWIKI-Microcode

lm_sensors 查CPU溫度電壓風扇等
ARCHWIKI-lm_sensors

K10ctl
ARCHWIKI-K10ctl

留言

熱門文章