1. 程式人生 > >Android下設定CPU核心數核螢幕

Android下設定CPU核心數核螢幕

伯龍CSDN部落格: http://blog.csdn.net/menghuanbeike/article/details/78367376

設定CPU的核心數

在/sys/devices/system/cpu目錄下可以看到你的CPU有幾個核心,如果是雙核,就是cpu0和cpu1,如果是四核,還會加上cpu2和cpu3。隨便進一個資料夾,比如cpu1,裡面有個online檔案。我們可以用cat命令檢視該檔案的內容:

cat /sys/devices/system/cpu/cpu1/online

這個檔案只有一個數字,0或1。0表示該核心是offline狀態的,1表示該核心是online狀態的。所以,如果你想關閉這個核心,就把online檔案的內容改為“0”;如果想開啟該核心,就把檔案內容改為“1”。

echo “0” > /sys/devices/system/cpu/cpu0/online # 關閉該CPU核心 
echo “1” > /sys/devices/system/cpu/cpu0/online # 開啟該CPU核心

設定CPU的頻率

首先我們要修改governor的模式,但在修改前需要查下CPU支援哪些governor的模式

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

我用的是Nexus 4手機,所以有以下5個選擇,其他的手機型號可能略有不同

conservative ondemand userspace powersave interactive performance

關於這些模式,具體解釋如下:

    ondemand:系統預設的超頻模式,按需調節,核心提供的功能,不是很強大,但有效實現了動態頻率調節,平時以低速方式執行,當系統負載提高時候自動提高頻率。以這種模式執行不會因為降頻造成效能降低,同時也能節約電能和降低溫度。一般官方核心,還有CM7的預設的方式都是ondemand。流暢度: 一般,流暢
    interactive:互動模式,直接上最高頻率,然後看CPU負荷慢慢降低,比較耗電。 流暢度: 最高,極流暢 Interactive 是以 CPU 排程數量而調整頻率,從而實現省電。InteractiveX 是以 CPU 負載來調整 CPU 頻率,不會過度把頻率調低。所以比 Interactive 反應好些,但是省電的效果一般
    conservative:保守模式,類似於ondemand,但調整相對較緩,想省電就用他吧。Google官方核心,kang核心預設模式。 流暢度: 高,流暢
    smartass:聰明模式,是I和C模式的升級,該模式在比i模式不差的響應的前提下會做到了更加省電流暢度: 最高,流暢
    performance:效能模式!只有最高頻率,從來不考慮消耗的電量,效能沒得說,但是耗電量.......流暢度:還需要說麼?還有比這種模式更流暢的嗎?
    powersave 省電模式,通常以最低頻率執行,打不死我也不用。流暢度: 極低
    userspace:使用者自定義模式,系統將變頻策略的決策權交給了使用者態應用程式,並提供了相應的介面供使用者態應用程式調節CPU 執行頻率使用。也就是長期以來都在用的那個模式。可以通過手動編輯配置檔案進行配置流暢度:根據設定而定
    Hotplug:類似於ondemand, 但是cpu會在關屏下嘗試關掉一個cpu,並且帶有deep sleep,比較省電。流暢度:一般,流暢
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在這裡,我們將模式調整為performance。

echo “performance” > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

然後我們對CPU的頻率進行修改,CPU的頻率不是可以任意設定的,需要檢視scaling_available_frequencies檔案,看CPU支援哪些頻率。

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

從我的手機中可以獲得以下的值

126000 216000 312000 408000 600000 696000 816000 1008000 1200000 1416000 1512000 1608000 1704000 1800000
  • 1
  • 2

這裡的頻率是以KHz為單位的,我準備將cpu0設定為1.416GHz,那就將1416000寫入scaling_setspeed即可。

echo “1416000” > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

設定好後,我們可以通過scaling_cur_freq檔案檢視當前這個核心的頻率

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

最後我們也可以設定下CPU的最大和最小頻率,只需要將需要設定的頻率值寫入scaling_max_freq和scaling_min_freq即可

echo “1800000” > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq # 設定最大頻率 
echo “312000” > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq # 設定最小頻率

這裡要注意的是最大值需要大於等於最小值。

注意,如果你需要對每個online的CPU核心都進行設定,自行修改cpux.
同時以上對檔案的修改均需要root許可權
  • 1
  • 2
  • 3

通過變化online的核心數和調整CPU頻率可以做到功耗和效能的特殊要求。