日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android省电开发之cpu降频

發布時間:2023/12/29 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 android省电开发之cpu降频 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

眾所周知,在android系統的耗電量排行里,cpu的耗電占了比較大的一部分比例,也就是說,cpu的使用率和使用頻率將直接或間接的影響電量的分配和使用,但很遺憾,android-sdk中沒有為android的開發者提供類似cpu管理的功能,但是當下很多省電類應用或專業的cpu管理軟件都提供了cpu的降頻甚至是超頻的功能,那么這樣的功能是如何實現的,本文將詳細說明在android環境下調整cpu頻率的一些方法,僅供參考。

按照我寫文章的風格,在闡述過程和結論之前,都不得不對關鍵性的概念做一下解釋,本文也不例外。

1.CPU的工作頻率

單位赫茲或者兆赫茲,具體含義不解釋,說實話也不太清楚,不過可以確認一點的是,CPU的工作頻率越高,耗電量越大,反之亦然。我們做這個模塊省電的終極目標就是降低cpu的工作頻率。

2.CPU的調控模式

英文詞為:Governor,解釋為調速器,控制器。大家都指導android的framework是基于linux平臺的,那么cpu的管理體系這塊也跟linux基本上一樣,其中包括cat命令,和一些文件的讀寫配置都是基本上差不多的。Linux在管理CPU方面,提供了如下集中調控模式,分別為:

Governor Select this governor if How it works
performance Performance is the only consideration. Sets the CPU to run at the highest frequency (scaling_max_freq)
powersave Efficiency is the only consideration Sets the CPU to run at the lowest frequency (scaling_min_freq)
ondemand Adaptation to the current load is the main consideration. Checks the load regularly. When the load rises aboveup_threshold, sets the CPU to run at the highest frequency (scaling_max_freq). When the load falls below the same threshold, sets the CPU to run at the next lowest frequency. Causes less latency than the conservative governor.
conservative Close adaptation to the current load is the consideration. Checks the load regularly. When the load rises aboveup_threshold, sets the CPU to run at the next highest frequency. When the load falls belowdown_threshold, sets the CPU to run at the next lowest frequency. Has more latency than the ondemand governor.
userspace Control by other user space program is preferred. Sets the CPU frequency to the value specified by the user space program (through the use of thescaling_setspeedparameter).

這個表格的出自:http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaai%2Fcpufreq%2FTheCPUFreqGovernors.htm

按照原文給出的解釋,我大概把這5種調控模式理解為一下幾種觀點,如有不足,還請指正!

1.performance,這個不多說,就是將cpu的工作頻率調整到最大模式,讓cpu充分的工作。

2.powersave,將cpu的工作頻率調整到節能模式,也就是這個模式下的cpu平率是最低的。

3.ondemand,定期檢查負載。當負荷超越了閾值,設置的CPU運行以最高的頻率。當負載低于相同的閾值,設置的CPU運行在下一個的最低頻率。導致更少的延遲比。這個理解起來可能比較困難,我用白話大概解釋一下,ondemand從字面翻譯是“根據需求,按照需要”,cpu在工作的時候頻率會在一個最大值和最小值之間波動,當負載提高時,該調控期會自動提高cpu的頻率,反之亦然。“Causes less latency than the conservative governor.”這句話的意思是,該模式跟conservative相比,會導致更少的延遲。ok,那讓我們再看看conservative是如何解釋的。

4.conservative,改詞用來形容保守的,守舊的。該模式與ondemand的最大區別在于,conservative模式不會立刻在負載增加的情況下將cpu頻率調整到最大,他會調整到比目前頻率稍微大的頻段去工作,保守,實在是保守!所以換來的結果是,在某種極端情況下,該模式的延遲會大于ondemand。

5.usersapce,該模式將cpu的掌控權交給了用戶態,也就是交給了應用程序,應用程序可以通過配置文件的方式修改cpu的頻率信息,上面3種模式好比linux已經給你定義好的4種模式,userspace好比上面4種模式無法滿足我的需求,我需要自定義!(由于第四種方式需要進行大量的文件操作和配置,本文不闡述了,與省電的目標相差比較遠)

ok!我們了解了這5種省電模式,那么如何查看你的android手機當前運行在哪種模式下呢?當前的cpu運行的工作頻率是多少呢?最大最小頻率是多少?我如何修改模式呢?

其實很簡單,android的cat命令都為我們解決了這些問題,首先要強調的是,必須要獲得系統的root權限,才能進行以下操作。

第一步:adb shell 進入root 命令行模式

第二步 cd /sys/devices/system/cpu/cpu0/cpufreq 進入這個目錄下面

第三步 ls

第四步 你能看見很多的文件

第五步 參考下面的命令,打一遍就清楚了,不過為了給傻瓜提供更好的服務,我還是盡可能的將命令的使用和作用寫的詳細。

/**
* cpu cat命令大全
* cat [%cpuFreqPath%]/cpuinfo_cur_freq (當前cpu頻率)
* cat [%cpuFreqPath%]/cpuinfo_max_freq (最大cpu頻率)
* cat [%cpuFreqPath%]/cpuinfo_min_freq (最小cpu頻率)
* cat [%cpuFreqPath%]/related_cpus (cpu數量標號,從0開始,如果是雙核,結果為0,1)
* cat [%cpuFreqPath%]/scaling_available_frequencies (cpu所有可用頻率)
* cat [%cpuFreqPath%]/scaling_available_governors (cpu所有可用調控模式)
* cat [%cpuFreqPath%]/scaling_available_governors (cpu所有可用調控模式)
* cat [%cpuFreqPath%]/scaling_cur_freq (?????)
* cat [%cpuFreqPath%]/scaling_driver(調控驅動)
* cat [%cpuFreqPath%]/scaling_governor(當前使用哪種調控模式)
* cat [%cpuFreqPath%]/scaling_max_freq(?????)
* cat [%cpuFreqPath%]/scaling_min_freq(?????)
* cat [%cpuFreqPath%]/scaling_setspeed(?????)
* cat [%cpuFreqPath%]/cpuinfo_transition_latency(變頻延遲)
*/

熟悉了這些語法和密令之后,我們就可以很輕松的明白,如何省電了,無非就是將cpu降頻嘛,把當前的調控模式調整為powersave就可以了嘛,不錯,但是還不完全正確。

首先我先講一下如何通過命令行改寫當前的調控模式,很簡單,一句命令:

echo "你想使用的調控模式" /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

但是因為手機出場適配等問題,有些機器上是沒有powersave這個模式的,對了,你一定要確認當前手機是否有powersave這個模式,具體怎么看就在我上面給的命令大全里面,自己找!在沒有powersave模式的情況下,我們只好通過更狠的方法修改cpu的頻率,那就是直接改寫cpu的頻率,命令:

echo 2331000 > cpu0/cpufreq/scaling_min_freq 設置最小的工作頻率,同時也可以設置最大的工作頻率。

ok!設置cpu的頻率的兩種方式我基本上說清楚了,本質沒什么差別。那么在實際java端的開發中,我們如何使用呢?

貼貼代碼吧,不做過多的解釋了,相信大家多能讀懂!

[java]view plaincopy

<spanstyle="font-family:MicrosoftYaHei;">/**
*@authormatrixxu
*
*/
publicclassCPUFreqSetting{
/**
*cpucat命令大全
*cat[%cpuFreqPath%]/cpuinfo_cur_freq(當前cpu頻率)
*cat[%cpuFreqPath%]/cpuinfo_max_freq(最大cpu頻率)
*cat[%cpuFreqPath%]/cpuinfo_min_freq(最小cpu頻率)
*cat[%cpuFreqPath%]/related_cpus(cpu數量標號,從0開始,如果是雙核,結果為0,1)
*cat[%cpuFreqPath%]/scaling_available_frequencies(cpu所有可用頻率)
*cat[%cpuFreqPath%]/scaling_available_governors(cpu所有可用調控模式)
*cat[%cpuFreqPath%]/scaling_available_governors(cpu所有可用調控模式)
*cat[%cpuFreqPath%]/scaling_cur_freq(?????)
*cat[%cpuFreqPath%]/scaling_driver(?????)
*cat[%cpuFreqPath%]/scaling_governor(?????)
*cat[%cpuFreqPath%]/scaling_max_freq(?????)
*cat[%cpuFreqPath%]/scaling_min_freq(?????)
*cat[%cpuFreqPath%]/scaling_setspeed(?????)
*cat[%cpuFreqPath%]/cpuinfo_transition_latency(?????)
*/
privatefinalStringTAG="SetCPU";
privatefinalStringcpuFreqPath="/sys/devices/system/cpu/cpu0/cpufreq";

privatefinalstaticStringPERFORMANCE_GOVERNOR="performance";
privatefinalstaticStringPOWER_SAVE_GOVERNOR="performance";
privatefinalstaticStringONDEMAND_GOVERNOR="performance";
privatefinalstaticStringCONSERVATIVE_GOVERNOR="performance";
privatefinalstaticStringUSERSAPCE_GOVERNOR="performance";

//publicvoidpowerSaveGovernor(){
//List<String>governors=readCpuGovernors();
//if(governors.contains(object)){
//
//}
//}

/**
*獲得當前CPU調控模式
*/
publicvoidgetCpuCurGovernor(){
try{
DataInputStreamis=null;
Processprocess=Runtime.getRuntime().exec("cat"+cpuFreqPath+"/scaling_governor");
is=newDataInputStream(process.getInputStream());
Stringline=is.readLine();
}catch(IOExceptione){
e.printStackTrace();
}
}

/**
*重寫CPU調控模式
*@paramgovernor
*@return
*/
privatebooleanwriteCpuGovernor(Stringgovernor){
DataOutputStreamos=null;
byte[]buffer=newbyte[256];
Stringcommand="echo"+governor+">"+cpuFreqPath+"/scaling_governor";
Log.i(TAG,"command:"+command);
try{
Processprocess=Runtime.getRuntime().exec("su");
os=newDataOutputStream(process.getOutputStream());
os.writeBytes(command+"
");
os.writeBytes("exit
");
os.flush();
process.waitFor();
Log.i(TAG,"exitvalue="+process.exitValue());
}catch(IOExceptione){
Log.i(TAG,"writeCpuGovernor:writeCPUGovernor("+governor+")failed!");
returnfalse;
}catch(InterruptedExceptione){
e.printStackTrace();
}
returntrue;
}

/**
*獲得CPU所有調控模式
*@return
*/
privateList<String>readCpuGovernors(){
List<String>governors=newArrayList<String>();
DataInputStreamis=null;
try{
Processprocess=Runtime.getRuntime().exec("cat"+cpuFreqPath+"/scaling_available_governors");
is=newDataInputStream(process.getInputStream());
Stringline=is.readLine();

String[]strs=line.split("");
for(inti=0;i<strs.length;i++)
governors.add(strs[i]);
}catch(IOExceptione){
Log.i(TAG,"readCpuGovernors:readCPUGovernorsfailed!");
}
returngovernors;
}
}</span>

完!

總結

以上是生活随笔為你收集整理的android省电开发之cpu降频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av男女| 高清av一区 | 亚洲精品一区二区三区蜜桃 | 中文字幕av久久爽 | 老司机激情影院 | 久久精品97 | 色香av| 成人啪啪网站 | 欧美黑人性猛交xxxx | 韩国av在线| 日本精品一区二区三区四区的功能 | 亚洲一区在线电影 | www成人在线 | 蜜臀99久久精品久久久久小说 | 神宫寺奈绪一区二区三区 | 在线精品亚洲欧美日韩国产 | 久久亚洲国产精品 | 熟女视频一区 | av网站在线免费观看 | 国产精品人人做人人爽人人添 | 中文字幕在线不卡视频 | 亚州av影院 | 欧洲成人一区二区三区 | 欧美一区二区三区久久妖精 | 成人福利午夜 | 天天射美女 | 色诱av| 色哟哟中文字幕 | 72成人网 | 欧美高潮视频 | 伊人影院在线播放 | 精品视频在线免费观看 | 色吟av | 97爱视频| 欧美精品video | 亚洲精品国产视频 | 亚洲精品一区二区三区在线观看 | 国产一级片视频 | 成人看片| 国产精品久久久久蜜臀 | 国产欧美综合一区 | 日韩色道 | 男女那个视频 | 96国产在线 | 99精品乱码国产在线观看 | 国产人妖视频 | 桃色视频在线 | 欧美一区二区三区四区视频 | 狂野欧美性猛交xxxxhd | 天天干天天操 | 久久午夜国产 | 黑人巨大精品欧美一区免费视频 | 欧美在线免费观看 | 国内自拍视频网站 | 国产亚洲精品女人久久久久久 | 97香蕉久久超级碰碰高清版 | 性自由色xxxx免费视频 | 成人做爰66片免费看网站 | 欧美夜夜骑 | 中文字幕乱码免费 | 欧洲成人在线观看 | 韩国女主播一区 | 国产精品高清网站 | 成人黄色av| 国产污视频在线 | 少妇性色av | 国产色图片 | 午夜啪视频 | 久久cao| 日韩www. | 日本黄色激情视频 | 青青草婷婷 | 欧美中文 | 色碰视频| 污网站在线免费看 | 久久网伊人 | av噜噜在线 | av女人的天堂 | 在线看片| 日本sm调教—视频|vk | 国产超级av | 亚洲特级黄色片 | 中国黄色免费网站 | 三级理论电影 | 日本呦呦 | 国产乱码精品一区二区三区亚洲人 | 国产午夜福利片 | 午夜一级视频 | 三女同志亚洲人狂欢 | 日本高清免费视频 | 五月天超碰 | 天堂网在线资源 | 国产在线999| 欧美一级成人 | 99精品人妻国产毛片 | 男人操女人动态图 | 日本欧美一本 | 光棍影院手机版在线观看免费 | 不卡视频一区 |