設(shè)置CPU的核心數(shù)
在/sys/devices/system/cpu目錄下可以看到你的CPU有幾個(gè)核心,如果是雙核,就是cpu0和cpu1,如果是四核,還會(huì)加上cpu2和cpu3。隨便進(jìn)一個(gè)文件夾,比如cpu1,里面有個(gè)online文件。我們可以用cat命令查看該文件的內(nèi)容:
cat /sys/devices/system/cpu/cpu1/online
這個(gè)文件只有一個(gè)數(shù)字,0或1。0表示該核心是offline狀態(tài)的,1表示該核心是online狀態(tài)的。所以,如果你想關(guān)閉這個(gè)核心,就把online文件的內(nèi)容改為“0”;如果想打開(kāi)該核心,就把文件內(nèi)容改為“1”。
echo "0" > /sys/devices/system/cpu/cpu0/online # 關(guān)閉該CPU核心
echo "1" > /sys/devices/system/cpu/cpu0/online # 打開(kāi)該CPU核心
設(shè)置CPU的頻率
首先我們要修改governor的模式,但在修改前需要查下CPU支持哪些governor的模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
我用的是Nexus 4手機(jī),所以有以下5個(gè)選擇,其他的手機(jī)型號(hào)可能略有不同
conservative ondemand userspace powersave interactive performance
關(guān)于這些模式,具體解釋如下:
- ondemand:系統(tǒng)默認(rèn)的超頻模式,按需調(diào)節(jié),內(nèi)核提供的功能,不是很強(qiáng)大,但有效實(shí)現(xiàn)了動(dòng)態(tài)頻率調(diào)節(jié),平時(shí)以低速方式運(yùn)行,當(dāng)系統(tǒng)負(fù)載提高時(shí)候自動(dòng)提高頻率。以這種模式運(yùn)行不會(huì)因?yàn)榻殿l造成性能降低,同時(shí)也能節(jié)約電能和降低溫度。一般官方內(nèi)核,還有CM7的默認(rèn)的方式都是ondemand。流暢度: 一般,流暢
- interactive:交互模式,直接上最高頻率,然后看CPU負(fù)荷慢慢降低,比較耗電。 流暢度: 最高,極流暢 Interactive 是以 CPU 排程數(shù)量而調(diào)整頻率,從而實(shí)現(xiàn)省電。InteractiveX 是以 CPU 負(fù)載來(lái)調(diào)整 CPU 頻率,不會(huì)過(guò)度把頻率調(diào)低。所以比 Interactive 反應(yīng)好些,但是省電的效果一般
- conservative:保守模式,類(lèi)似于ondemand,但調(diào)整相對(duì)較緩,想省電就用他吧。Google官方內(nèi)核,kang內(nèi)核默認(rèn)模式。 流暢度: 高,流暢
- smartass:聰明模式,是I和C模式的升級(jí),該模式在比i模式不差的響應(yīng)的前提下會(huì)做到了更加省電流暢度: 最高,流暢
- performance:性能模式!只有最高頻率,從來(lái)不考慮消耗的電量,性能沒(méi)得說(shuō),但是耗電量.......流暢度:還需要說(shuō)么?還有比這種模式更流暢的嗎?
- powersave 省電模式,通常以最低頻率運(yùn)行,打不死我也不用。流暢度: 極低 ?
- userspace:用戶自定義模式,系統(tǒng)將變頻策略的決策權(quán)交給了用戶態(tài)應(yīng)用程序,并提供了相應(yīng)的接口供用戶態(tài)應(yīng)用程序調(diào)節(jié)CPU 運(yùn)行頻率使用。也就是長(zhǎng)期以來(lái)都在用的那個(gè)模式。可以通過(guò)手動(dòng)編輯配置文件進(jìn)行配置流暢度:根據(jù)設(shè)置而定
- Hotplug:類(lèi)似于ondemand, 但是cpu會(huì)在關(guān)屏下嘗試關(guān)掉一個(gè)cpu,并且?guī)в衐eep sleep,比較省電。流暢度:一般,流暢
在這里,我們將模式調(diào)整為performance
。
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
然后我們對(duì)CPU的頻率進(jìn)行修改,CPU的頻率不是可以任意設(shè)置的,需要查看scaling_available_frequencies文件,看CPU支持哪些頻率。
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
從我的手機(jī)中可以獲得以下的值
126000 216000 312000 408000 600000 696000 816000 1008000 1200000 1416000 1512000 1608000 1704000 1800000
這里的頻率是以KHz為單位的,我準(zhǔn)備將cpu0設(shè)置為1.416GHz,那就將1416000寫(xiě)入scaling_setspeed即可。
echo "1416000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
設(shè)置好后,我們可以通過(guò)scaling_cur_freq文件查看當(dāng)前這個(gè)核心的頻率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
最后我們也可以設(shè)置下CPU的最大和最小頻率,只需要將需要設(shè)置的頻率值寫(xiě)入scaling_max_freq和scaling_min_freq即可
echo "1800000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq # 設(shè)置最大頻率
echo "312000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq # 設(shè)置最小頻率
這里要注意的是最大值
需要大于等于最小值
。
注意,如果你需要對(duì)每個(gè)online的CPU核心都進(jìn)行設(shè)置,自行修改cpux.
同時(shí)以上對(duì)文件的修改均需要root權(quán)限**
通過(guò)變化online的核心數(shù)和調(diào)整CPU頻率可以做到功耗和性能的特殊要求。