CPU頻率調節(SpeedStep, PowerNow)
出自Linux Wiki
目錄 |
前言
現在的CPU耗電很大,按需調節CPU頻率有對節能有重要的意義,目前多數Linux發行版都已經默認啟用了這個功能,但是Debian 4.0和Archlinux還沒有,需要經過簡單的設置才行。,
Debian 4.0和Archlinux的內核已經編譯了調節CPU頻率的模塊,但是默認沒有啟用,所以要做就是啟用相關的模塊,並安裝CPU頻率調節程序(可選)。
選擇並啟用與CPU相對應的內核模塊
為確保接下來的工作是有意義的,首先確保您的CPU頻率調節功能還沒有啟用~
# cd /sys/devices/system/cpu/cpu0 # ls -l
如果你看到一個名為cpufreq的文件夾,則說明頻率調節功能已經啟用,您可以直接跳至下一步。
如果沒有看到名為cpufreq的文件夾,則先看一下可以用的驅動:
# ls /lib/modules/`uname -r`/kernel/arch/*/kernel/cpu/cpufreq
在我的電腦看到的是這樣的,估計你的也差不多。
acpi-cpufreq.ko longrun.ko powernow-k8.ko speedstep-smi.ko cpufreq-nforce2.ko p4-clockmod.ko speedstep-centrino.ko gx-suspmod.ko powernow-k6.ko speedstep-ich.ko longhaul.ko powernow-k7.ko speedstep-lib.ko
這些都是可選的驅動,但是與不同的CPU相匹配。 常用的是:
p4-clockmod.ko | Intel P4的處理器 |
speed-centrino.ko | 迅弛,很多筆記本都是這個 |
powernow-k*.ko | AMD處理器用的 |
acpi-cpufreq.ko | 如果所有的都不行,試試這個,(但2.6.20或以上的內核推薦優先使用該項) |
上表列出的只是常用的,如果不行,試一下其它的。
試的方法是:
1. 加載該內核模塊,如
#modprobe p4-clockmod
又如
#modprobe powernow-k8
注意是模塊名是把上面的文件名去掉.ko。
2. 如果沒有錯誤信息,就對了。如果要確認,看一下
# cd /sys/devices/system/cpu/cpu0 # ls -l
是否有cpufreq。
選擇適當的調節器
調節器即Governor,用它來控制CPU頻率。可選的有
內核模塊 | 調節器名稱 | 功能 |
cpufreq_ondemand | ondemand | 按需調節,內核提供的功能,不是很強大,但有效實現了動態頻率調節 |
cpufreq_powersave | powersave | 省電模式,通常以最低頻率運行, |
cpufreq_userspace | userspace | 用戶模式,一些調頻工具軟件需要在此模式下才能運行 |
cpufreq_conservative | conservative | “保守”模式,類似於ondemand,但調整相對較緩 |
N/A | performance | 不降頻 |
查看當前的調節器:
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
更改使用的調節器,需要加載相應的內核模塊,再更改scaling_governor文件,例如:
# modprobe cpufreq_conservative # echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
當然也可以用GNOME的工具來調節,請參見後面的介紹。
使用軟件管理CPU頻率
內核模塊的CPU頻率管理功能已經很強大了,當然你也可以應用軟件來管理,可選的軟件有:
- cpudynd
- cpufreqd
- cpufrequtils
- powernowd
- powersaved
- speedfreqd
這些源里是有的,不過我認為都不怎麼好用,感覺Fedora的cpuspeed比較好,不過源里沒有。
使用gnome的CPU頻率範圍監視器
在gnome的面板上按右鍵,選擇“添加到面板”,加入“CPU頻率範圍監視器”。 在那個圖標上按右鍵,“首選項”,可以選擇顯示和調速的方式。 普通用戶默認不能調節CPU頻率,要解決這個問題,請參閱為普通用戶提供CPU調頻權限。
設置開機自動加載以上設置
Debian 4.0
1. 編輯 /etc/modules ,加入剛才modprobe掛載的內核模塊
cpufreq-userspace cpufreq-ondemand cpufreq-powersave cpufreq-conservative speedstep-centrino #请修改为相应的频率调节模块
2. 安裝sysfsutils,
#apt-get install sysfsutils
以超級用戶權限編輯/etc/sysfs.conf,文件內容:
devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 1800000 #请修改为您的CPU的最高频率
如果是雙核CPU,還應加入cpu1的內容,與cpu0完全類似。多線程CPU無需進行此項操作。
Archlinux
- 在/etc/rc.conf的MODULES變量中加入剛才modeprobe掛載的內核模塊
cpufreq-userspace cpufreq-ondemand cpufreq-powersave cpufreq-conservative speedstep-centrino #请修改为相应的频率调节模块
- 可以安裝cpudyn和acpid,並
# /etc/rc.d/cpudyn start # /etc/rc.d/acpid start
啟動自動調節,也可以把它們加到rc.conf中,讓其自動啟動。
參考資料
- http://changelog.complete.org/posts/572-Saving-Power-with-CPU-Frequency-Scaling.html
- http://www.math.pku.edu.cn:8000/blog/category/1/7
- http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling
- http://amd64.bokee.com/
- http://wiki.archlinux.org/index.php/SpeedStep
--Chenxing 14:47 2007年4月29日 (CST) --Chenxing 11:39 2007年7月18日 (CST)