国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于用戶交互歷史信息的cpu動(dòng)態(tài)調(diào)頻方法_3

      文檔序號(hào):9326459閱讀:來(lái)源:國(guó)知局
      用頻率中不小于且最接近f。的頻率值,然后將最大調(diào)節(jié)頻率設(shè)為目標(biāo)頻率值f。有了 目標(biāo)頻率,調(diào)節(jié)CPU頻率則更改4]1(11'〇1(1文件系統(tǒng)中最大調(diào)節(jié)頻率1]^1_8〇31;[1^_;1^691161107 為目標(biāo)頻率值。調(diào)節(jié)成功后CPU只能在最低頻率和最大調(diào)節(jié)頻率范圍內(nèi)執(zhí)行,不能超過(guò)目 標(biāo)頻率執(zhí)彳丁從而限制了手機(jī)默認(rèn)Ondemand _旲式下以手機(jī)支持的最尚頻率執(zhí)彳丁,滿足性能 需求的同時(shí)有效地降低了能量的消耗。
      [0058] 在本發(fā)明示例中,設(shè)置CPU頻率是通過(guò)更改系統(tǒng)文件來(lái)實(shí)現(xiàn)的。前提是手機(jī)必須 有root權(quán)限。以小米2s手機(jī)為例,小米2s支持的頻率為384, 486, 594, 702, 810, 918, 1026, 1134, 1242, 1350, 1458, 1566, 1674, 1728MHz,在 CPUfreq 文件下有許多文件,其中 scaling_ min_freq代表最低頻率,scaling_max_freq代表最高頻率,手機(jī)只能在這兩個(gè)頻率之間執(zhí) 行,若將scaling_max_freq調(diào)節(jié)為手機(jī)所支持的最低頻率384MHz,則手機(jī)只能在最低頻率 運(yùn)行。本發(fā)明在利用Ondmand governor調(diào)節(jié)模式的基礎(chǔ)上,通過(guò)調(diào)節(jié)scaling_max_freq 來(lái)限制手機(jī)的最高頻率。當(dāng)監(jiān)測(cè)到相同的用戶交互發(fā)生則根據(jù)歷史信息表計(jì)算目標(biāo)頻率, 然后設(shè)置scaling_max_freq為目標(biāo)頻率值。當(dāng)監(jiān)測(cè)到一個(gè)新的用戶交互時(shí),則將scaling_ maX_freq設(shè)置為手機(jī)支持頻率最大值1728MHz同時(shí)將該用戶交互信息添加到歷史信息表 中。
      [0059] 步驟S16中,交互過(guò)程中每隔時(shí)間t采集一次CPU信息,計(jì)算該時(shí)間段CPU使用率 和權(quán)重頻率,然后進(jìn)行歸一化負(fù)載計(jì)算,算出該時(shí)間段歸一化CPU使用率。步驟S161中, 如圖2所示,在時(shí)間點(diǎn)1讀取內(nèi)核系統(tǒng)文件獲取CPU運(yùn)行時(shí)間及頻率,記錄總的CPU時(shí)間 totall和空閑時(shí)間idlel及各個(gè)頻率的運(yùn)行時(shí)間,間隔時(shí)間t,在時(shí)間點(diǎn)2再次讀取內(nèi)核系 統(tǒng)文件獲取CPU運(yùn)行時(shí)間及頻率,記錄總的CPU時(shí)間total2、空閑時(shí)間idle2及各個(gè)頻率運(yùn) 行時(shí)間,CPU 使用率 CPUusage = I - (idle2 - idlel)/(total2 - totall),權(quán)重頻率的計(jì)算 方法為:時(shí)間點(diǎn)2米集各個(gè)頻率運(yùn)行時(shí)間減去時(shí)間點(diǎn)1米集的相應(yīng)頻率的運(yùn)行時(shí)間,得出各 個(gè)頻率在時(shí)間t內(nèi)的運(yùn)行時(shí)間,算出各個(gè)頻率在時(shí)間t內(nèi)占的時(shí)間比,各個(gè)頻率乘以相應(yīng)的 時(shí)間比,然后相加得出權(quán)重頻率。
      [0060] Android是基于Linux內(nèi)核的,在Linux/Unix下,CPU利用率分為用戶態(tài),系統(tǒng)態(tài) 和空閑態(tài),分別表示CPU處于用戶態(tài)執(zhí)行時(shí)間,系統(tǒng)內(nèi)核執(zhí)行的時(shí)間,和空閑系統(tǒng)進(jìn)程執(zhí)行 的時(shí)間。平時(shí)所說(shuō)的CPU利用率是指:CPU執(zhí)行非系統(tǒng)空閑進(jìn)程的時(shí)間除以CPU總的執(zhí)行 時(shí)間。本發(fā)明通過(guò)讀取系統(tǒng)文件獲取CPU的執(zhí)行時(shí)間及頻率信息,/proc/stat文件包含了 CHJ活動(dòng)的信息,該文件中的所有值都是從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻。讀取該文件可以 得到一系列的CPU時(shí)間如下所示:
      [0061] user從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,處于用戶態(tài)的運(yùn)行時(shí)間,不包含nice值為 負(fù)進(jìn)程。
      [0062] nice從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,nice值為負(fù)的進(jìn)程所占用的CPU時(shí)間;
      [0063] system從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,處于核心態(tài)的運(yùn)行時(shí)間;
      [0064] idle從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,除10等待時(shí)間以外的其它等待時(shí)間;
      [0065] iowait從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,10等待時(shí)間;
      [0066] irq從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,硬中斷時(shí)間;
      [0067] softirq從系統(tǒng)啟動(dòng)開始累計(jì)到當(dāng)前時(shí)刻,軟中斷時(shí)間;
      [0068] 總的 CPU 時(shí)間 totalCPUTime = user+nice+system+idle+iowait+irq+softirq,計(jì) 算時(shí),采樣兩個(gè)時(shí)間點(diǎn)的數(shù)據(jù),這兩個(gè)時(shí)間點(diǎn)的間隔設(shè)為tms,在本發(fā)明示例中,休眠時(shí)間t 為125ms后再采樣,對(duì)于時(shí)間點(diǎn)1,記錄總的CPU時(shí)間totall,記錄空閑時(shí)間idlel,對(duì)于時(shí) 間2,同樣記錄total2和idle2。
      [0069] CPU 使用率為:CPUusage = I - (idle2 - idlel)/(total2 - totall),利用該公式 計(jì)算CPU使用率。最后將CPU使用率歸一化到最高頻率,在本發(fā)明示例中,采用的手機(jī)型號(hào) 為小米2S,手機(jī)支持的最高頻率為1728MHz。
      [0070] CPU的使用率計(jì)算是每隔125ms采樣計(jì)算的,但是這段時(shí)間的頻率有可能會(huì)變化, 那么就用一個(gè)權(quán)重頻率(weighted frequency)代表這段時(shí)間的CPU頻率,權(quán)重頻率計(jì)算是 基于Android系統(tǒng)文件下time_in_state文件,這個(gè)文件記錄了每個(gè)頻率所處的時(shí)間,舉例 如下,實(shí)際上我們手機(jī)是有14個(gè)頻率,下面這個(gè)例子只是為了表示方便。
      [0071]
      [0072]
      [0073] 根據(jù)兩個(gè)采集時(shí)間點(diǎn)的時(shí)間差求出每個(gè)頻率所處時(shí)間,然后每個(gè)頻率在這125ms 時(shí)間內(nèi)所占的比例分別乘以他們的頻率再加起來(lái)就是最后的權(quán)重頻率。比如小米2s手機(jī) 設(shè)備有14個(gè)頻率值,在125ms時(shí)間內(nèi),每個(gè)頻率所占的時(shí)間的比例乘以相應(yīng)的頻率,加起來(lái) 就是權(quán)重頻率了,不是所有的頻率都會(huì)用到,如果文件中頻率執(zhí)行時(shí)間為0的,表示這段時(shí) 間沒(méi)有以這個(gè)頻率執(zhí)行。
      [0074] 步驟S17中,采集用戶交互信息是通過(guò)實(shí)時(shí)監(jiān)控并收集用戶交互信息模塊來(lái)完 成,所述交互動(dòng)作信息包括點(diǎn)擊、長(zhǎng)按和滑動(dòng),所述應(yīng)用界面信息為Activity信息。
      [0075] 歷史交互信息表是在編寫程序時(shí)已經(jīng)建立好的,剛開始為空的,當(dāng)交互執(zhí)行時(shí),歷 史交互信息表中包含了歸一化CPU使用率和用戶交互信息,這些信息是程序執(zhí)行時(shí),動(dòng)態(tài) 添加進(jìn)去的,如表1所示,展示的是騰訊新聞客戶端的一個(gè)簡(jiǎn)單的歷史信息表的示例,用戶 主要在主界面和新聞詳情界面之間交互,例如用戶在主界面上滑動(dòng)屏幕,在該次用戶交互 期間(用戶滑動(dòng)動(dòng)作開始到屏幕刷新結(jié)束)將采集到的歸一化的CPU使用率的最大值65% 放入表中。該歷史信息表是動(dòng)態(tài)變化的,表1只列出了一次用戶交互的歷史CPU使用率的 值。在實(shí)際實(shí)施本發(fā)明時(shí),當(dāng)同樣的用戶交互再次發(fā)生時(shí),仍然將此次交互期間歸一化的 CPU使用率最大值繼續(xù)放入表格中,對(duì)于同一個(gè)用戶交互,表格中始終保持最新的三次歷史 交互情況。
      [0076]
      [0077] 表 1
      [0078] 如圖3和圖4所示,實(shí)時(shí)監(jiān)控并收集用戶交互信息模塊通過(guò)動(dòng)態(tài)插粧方法來(lái)獲取 用戶交互信息,所述動(dòng)態(tài)插粧方法是通過(guò)插粧框架xposed和插粧代碼實(shí)現(xiàn)。所述動(dòng)態(tài)插粧 方法包括以下步驟:S210 :前臺(tái)應(yīng)用執(zhí)行,等待用戶輸入動(dòng)作;S220 :接收到用戶的操作動(dòng) 作;S230:觸發(fā)系統(tǒng)框架層的API (Application Programming Interface,應(yīng)用程序編程接 口)執(zhí)行;S240 :插粧框架xposed對(duì)系統(tǒng)框架層進(jìn)行動(dòng)態(tài)插粧攔截相應(yīng)API并在該API執(zhí) 行前或者執(zhí)行后插入插粧代碼;S250 :獲取交互動(dòng)作信息及應(yīng)用界面信息。
      [0079] 具體的,用戶交互信息采集包括用戶的交互動(dòng)作和該動(dòng)作所在Activity,實(shí)時(shí) 監(jiān)控并收集用戶交互信息模塊的具體實(shí)施框架采用動(dòng)態(tài)插粧方法。動(dòng)態(tài)插粧方法是對(duì) Android的Framework (框架)層進(jìn)行插粧,Android系統(tǒng)分為四層:應(yīng)用程序?qū)?、?yīng)用程序 框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層,動(dòng)態(tài)插粧只對(duì)第二層應(yīng)用程序框架層簡(jiǎn)稱框架層, 進(jìn)行插粧,應(yīng)用程序框架層是開發(fā)人員進(jìn)行Android開發(fā)的基礎(chǔ),很多核心應(yīng)用程序也是 通過(guò)這一層來(lái)實(shí)現(xiàn)其核心功能的,該層簡(jiǎn)化了組件的重用,開發(fā)人員可以直接使用其提供 的組件及AP
      當(dāng)前第3頁(yè)1 2 3 4 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1