国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向Android平臺(tái)的動(dòng)態(tài)電源管理優(yōu)化

2012-10-16 10:36:54梁衡劉新新鄭遠(yuǎn)攀
關(guān)鍵詞:內(nèi)核功耗框架

梁衡,劉新新,鄭遠(yuǎn)攀

(1.許昌學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南許昌461000;2.鄭州輕工業(yè)學(xué)院計(jì)算機(jī)與通信工程學(xué)院,河南鄭州450002)

基于Linux內(nèi)核的Android系統(tǒng)的應(yīng)用平臺(tái)越來(lái)越廣泛,對(duì)電源管理的要求越來(lái)越高,目前應(yīng)用最廣泛的動(dòng)態(tài)電源管理(DPM)提供了一種操作系統(tǒng)級(jí)別的電源管理能力.相比傳統(tǒng)電源管理,通過(guò)用戶層制定策略與內(nèi)核提供管理功能交互,實(shí)時(shí)調(diào)整電源參數(shù)并同時(shí)滿足系統(tǒng)實(shí)時(shí)應(yīng)用的需求,允許電源管理參數(shù)在短時(shí)間的空閑,或任務(wù)運(yùn)行在低電源需求時(shí)可以被頻繁地、低延遲地調(diào)整,從而實(shí)現(xiàn)更精細(xì)、更智能的電源管理[1].

1 Android應(yīng)用平臺(tái)

Android作為一種嵌入Linux內(nèi)核的操作系統(tǒng),依賴于Linux分層架構(gòu),包括應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層以及Linux內(nèi)核層4部分[2].以Linux為核心的應(yīng)用程序?qū)幼鳛锳ndroid應(yīng)用平臺(tái)層,使用Java語(yǔ)言編寫基于Java虛擬機(jī)運(yùn)行環(huán)境的程序.作為Android應(yīng)用平臺(tái)核心API應(yīng)用程序框架,使得開發(fā)人員可以開發(fā)自定義應(yīng)用程序,包括View System、Content Providers、Resource Manager、Notification Manager、Activity Manager、Window Manager、Package Manager.在使用 Android 應(yīng)用框架時(shí),系統(tǒng)通過(guò)系統(tǒng)運(yùn)行庫(kù)層中的運(yùn)行庫(kù)來(lái)支持用戶使用的各個(gè)組件,更好的為用戶提供服務(wù).Android核心層是作為硬件和軟件棧間的抽象層,除了Linux2.6內(nèi)核的功能,還提供對(duì)硬件的驅(qū)動(dòng)程序服務(wù).

2 DPM框架模型

動(dòng)態(tài)電源管理框架是指在一定規(guī)則和機(jī)制的基礎(chǔ)上,整合系統(tǒng)不同組件功能的動(dòng)態(tài)優(yōu)化技術(shù),從整體上看,它著眼于整個(gè)系統(tǒng)各個(gè)功能的最優(yōu)化設(shè)計(jì),而不是僅僅局限于系統(tǒng)的局部性質(zhì),從而實(shí)現(xiàn)全局最優(yōu)的效果.

框架設(shè)計(jì)需求有如下幾點(diǎn)[3]:

(1)具備框架設(shè)計(jì)的靈活性;

(2)具備收集系統(tǒng)資源信息的能力;

(3)具備能夠同時(shí)進(jìn)行普通任務(wù)和功能監(jiān)控任務(wù)的功能;

(4)具備外設(shè)狀態(tài)的變化獨(dú)立于管理策略變化的特性;

(5)具備支持動(dòng)態(tài)電壓調(diào)節(jié)、動(dòng)態(tài)頻率調(diào)節(jié)等硬件參數(shù).

DPM模塊中除DPM基本框架中的操作點(diǎn)管理、操作狀態(tài)管理、策略管理、設(shè)備約束管理外,還包括了擴(kuò)展的策略優(yōu)化和CPU負(fù)載檢測(cè)模塊,使用任務(wù)級(jí)設(shè)備調(diào)度優(yōu)化策略,并在設(shè)備調(diào)度過(guò)程中根據(jù)動(dòng)態(tài)CPU頻率自動(dòng)調(diào)整參數(shù),減少能量消耗.DPM框架系統(tǒng)模型[4]見圖1.

圖1 DPM整體框架模型Fig.1 DPMoverall frame model

3 Android平臺(tái)下的DPM框架實(shí)現(xiàn)

3.1 操作點(diǎn)

操作點(diǎn)對(duì)應(yīng)整個(gè)平臺(tái)各種硬件的數(shù)據(jù)參數(shù),是動(dòng)態(tài)電源管理框架中最基本的抽象組合[5-6].操作點(diǎn)實(shí)現(xiàn)如下:

struct dpm_opt

{

char*name; //操作點(diǎn)名字

struct list_head list;//初始化的操作點(diǎn)列表

dpm_md_pp_t pp[DPM_PP_NBR];//初始化參數(shù)

struct dpm_md_optmd_opt;//設(shè)備屬性

int constrained; //是否受其他條件約束

struct kobject kobj;//內(nèi)核設(shè)備對(duì)象結(jié)構(gòu)

struct dpm_stats stats;//相關(guān)數(shù)據(jù)統(tǒng)計(jì)

int flags; //標(biāo)志項(xiàng)

};

struct dpm_md_opt{

unsigned int v; //目標(biāo)電壓(mV)

unsigned int cpu; //CPU頻率(kHz)

…… //其它參數(shù)

};

3.2 操作狀態(tài)

操作狀態(tài)是由多個(gè)操作點(diǎn)組成的狀態(tài)集合[7];操作系統(tǒng)可以認(rèn)為是一個(gè)狀態(tài)機(jī),通過(guò)事件的觸發(fā),操作系統(tǒng)可以在不同的狀態(tài)間進(jìn)行切換,而針對(duì)同一狀態(tài)根據(jù)不同的負(fù)載,也可以進(jìn)行不同的操作點(diǎn)間的切換,達(dá)到系統(tǒng)能耗的最優(yōu)化.

針對(duì)操作系統(tǒng)的狀態(tài)切換,可以與操作狀態(tài)進(jìn)行一一對(duì)應(yīng),而當(dāng)前系統(tǒng)所使用的操作點(diǎn),可以通過(guò)策略進(jìn)行管理,通過(guò)不同的策略的切換不同操作狀態(tài),達(dá)到切換不同操作點(diǎn)的目的.

Android系統(tǒng)中主要有以下 3種狀態(tài):USER_AWAKE;USER_NOTIFICATION;USER_SLEEP[8].而Android系統(tǒng)從工作狀態(tài)轉(zhuǎn)為休眠狀態(tài)的一個(gè)重要因素是一種叫Wake lock的鎖機(jī)制,Wake lock是對(duì)系統(tǒng)能否進(jìn)入休眠狀態(tài)時(shí)的一個(gè)判斷前提.只有當(dāng)前沒有用戶態(tài)應(yīng)用程序且內(nèi)核態(tài)進(jìn)程持有Wakelock,系統(tǒng)才能進(jìn)入休眠狀態(tài),否則,在Wake lock鎖主動(dòng)釋放或者超時(shí)自動(dòng)釋放前,系統(tǒng)無(wú)法進(jìn)入休眠狀態(tài).操作狀態(tài)的代碼如下:

struct dpm_class

{

char*name; //類名稱

struct list_head list;//初始化類列表

unsigned nops;//該操作類中操作點(diǎn)的個(gè)數(shù)

struct dpm_opt**ops;//指向操作點(diǎn)地址的指針struct dpm_opt*opt;//類中被選中的操作點(diǎn)

struct dpm_stats stats;//相關(guān)數(shù)據(jù)統(tǒng)計(jì)

};

3.3 操作策略

操作策略,即管理策略,表示操作狀態(tài)與操作點(diǎn)或操作類之間的映射關(guān)系,根據(jù)不同操作狀態(tài)和操作點(diǎn)的映射關(guān)系可以定義不同的操作策略.

操作策略數(shù)據(jù)結(jié)構(gòu)表示如下:

struct dpm_policy

{

char*name; //策略名稱

struct list_head list;//初始化類列表,鏈接到dpm_class鏈表中

struct dpm_class*classes[DPM_STATES];//該操作策略中包含的類

struct dpm_stats stats;//相關(guān)數(shù)據(jù)統(tǒng)計(jì)

};

操作點(diǎn)、操作狀態(tài)機(jī)操作類、操作策略之間的關(guān)系可以表示為鏈表形式,即:

extern struct list_head dpm-polieies;

extem struct head dpm_classes;

extern struct list head dpm_opts:

其中一個(gè)操作策略對(duì)應(yīng)多個(gè)操作狀態(tài)即操作類,一個(gè)操作狀態(tài)對(duì)應(yīng)多個(gè)操作點(diǎn).

3.4 設(shè)備約束

策略管理者通過(guò)底層的設(shè)備驅(qū)動(dòng)管理設(shè)備的能耗,選擇滿足約束條件的操作點(diǎn),保證設(shè)備在操作點(diǎn)下正常工作.約束數(shù)據(jù)結(jié)構(gòu)表示如下:

struct constraints

{

int asserted;//設(shè)備約束是否起作用標(biāo)志

int count;//約束參數(shù)的個(gè)數(shù)

int violations;//違反約束的操作點(diǎn)數(shù)

struct constraint_param param[DPM_CONSTRA INT_PARAMS_MAX];//約束參數(shù)

struct list_head entry;//初始化的約束列表

};

struct constraint_param

{

int id;//約束參數(shù)ID

int min;//最小約束值

int max;//最大約束值

};

3.5 策略優(yōu)化算法

目前,大多數(shù)研究中的DPM策略都著力于對(duì)目標(biāo)設(shè)備進(jìn)行負(fù)載檢測(cè)的角度,而忽略了不同負(fù)載任務(wù)的工作形式,不可避免地造成設(shè)備利用率降低以及預(yù)測(cè)策略的預(yù)測(cè)錯(cuò)誤等情況[9-10].為排除這種不良狀況的發(fā)生,本研究從任務(wù)級(jí)的角度著手,考慮設(shè)備運(yùn)行狀態(tài),提出了一種全新的在線設(shè)備調(diào)度策略IDSP(Improved Device SchedulingPolicy).引入任務(wù)隊(duì)列機(jī)制,基于先進(jìn)先出的系統(tǒng)任務(wù)調(diào)度方式,實(shí)現(xiàn)任務(wù)運(yùn)行前的設(shè)備實(shí)時(shí)調(diào)度,從而減少任務(wù)運(yùn)行過(guò)程中設(shè)備的等待時(shí)間,減少狀態(tài)轉(zhuǎn)換功耗.有效節(jié)省運(yùn)行總功耗.

假設(shè)系統(tǒng)共有M+1個(gè)用戶任務(wù),表示為Ti(1≤i≤M)和系統(tǒng)空閑任務(wù)TM+1.任務(wù)隊(duì)列表示為TQ,長(zhǎng)度為N(N>M),首任務(wù)表示為TQ{0},后續(xù)任務(wù)以此類推.系統(tǒng)將任務(wù)隊(duì)列中進(jìn)入就緒狀態(tài)的任務(wù)按照FIFO(先進(jìn)先出)規(guī)則進(jìn)行調(diào)度.

首先按照規(guī)則:①相鄰子任務(wù)間至少使用了一個(gè)不同的外設(shè);②保證某一外設(shè)在子任務(wù)執(zhí)行期間完全被使用;將任務(wù)Ti劃分為相互獨(dú)立的N個(gè)子任務(wù){(diào)STi,1,STi,2,...,STi,n},子任務(wù)隊(duì)列表示為{STQ{0},STQ{1}...,STQ{n-1}}.根據(jù)實(shí)際任務(wù)分類空閑任務(wù)、單任務(wù)、多任務(wù)三種情況,作相應(yīng)的策略處理.即:

其次將每個(gè)子任務(wù)STi,k都表示成一個(gè)二維數(shù)據(jù)結(jié)構(gòu) {SDi,SEi}.SDi表示每個(gè)子任務(wù)在執(zhí)行過(guò)程中所使用到的IO設(shè)備集,SEi表示每個(gè)子任務(wù)的執(zhí)行時(shí)間.

然后根據(jù)任務(wù)執(zhí)行隊(duì)列調(diào)度相對(duì)應(yīng)設(shè)備.可以分為以下幾種情況[7]:①運(yùn)行STi,k之前,若設(shè)備sdi∈SDi處于正常工作狀態(tài),且當(dāng)STi,k與STi,k+1都不會(huì)使用sdi時(shí)關(guān)閉sdi;當(dāng)STi,k不使用sdi但STi,k+1使用時(shí),若子任務(wù)執(zhí)行時(shí)間sei≥TBE時(shí)關(guān)閉sdi,否則將sdi置為正常模式等待喚醒;②運(yùn)行子任務(wù)STi,k之前,若設(shè)備sdi處于睡眠狀態(tài),則當(dāng)STi,k不使用但STi,k+1使用sdi時(shí),則STi,k運(yùn)行完畢之前提前喚醒sdi.運(yùn)行子任務(wù)STi,k之前,對(duì)子任務(wù)STi,k和子任務(wù)STi,k+1CPU負(fù)載情況進(jìn)行操作點(diǎn)評(píng)估,并在任務(wù)STi,k運(yùn)行中對(duì)當(dāng)前CPU負(fù)載進(jìn)行調(diào)整,以達(dá)到性能最優(yōu)化.

3.6 CPU負(fù)載檢測(cè)與調(diào)整

Android平臺(tái)系統(tǒng)中,/proc/loadavg文件中定義了系統(tǒng)在最近時(shí)間段中的系統(tǒng)平均負(fù)載.在系統(tǒng)運(yùn)行過(guò)程中,內(nèi)核中全局變量current來(lái)標(biāo)識(shí)運(yùn)行進(jìn)程[11-12],每過(guò)一段時(shí)間內(nèi)核中斷程序?qū)?zhí)行一次,可以在內(nèi)核中斷程序的下半部分增加CPU平均負(fù)載計(jì)算函數(shù):

Unsigned long actice_tasks;

Static int count=LOAD_FREQ;

Count-=iticks;

If(count<0)

{

Count+=LOAD_FREQ;

Active_tasks=count_active_tasks();

CALC_LOAD(avenrun[0],EXP_1,active_tasks);

CALC_LOAD(avenrun[1],EXP_5,active_tasks);

CALC_LOAD(avenrun[2],EXP_15,active_tasks);

}

通過(guò)上面代碼的調(diào)用可實(shí)現(xiàn)對(duì)系統(tǒng)平均負(fù)載的獲取.當(dāng)?shù)玫较到y(tǒng)負(fù)載之后,將進(jìn)行如下過(guò)程,調(diào)整CPU頻率:

(1)如果當(dāng)前頻率大于設(shè)備約束條件,且向下調(diào)整頻率則無(wú)法滿足需求,則不做調(diào)整;

(2)如果當(dāng)前頻率大于設(shè)備約束條件,且能夠在降低當(dāng)前頻率也能夠保證約束條件,則在下個(gè)子任務(wù)執(zhí)行前,下調(diào)CPU工作頻率;

(3)如果當(dāng)前頻率無(wú)法滿足設(shè)備約束條件,則在子任務(wù)執(zhí)行前,上調(diào)CPU工作頻率.

4 Android平臺(tái)電源管理實(shí)現(xiàn)

本文基于IDSP策略對(duì)多組任務(wù)進(jìn)行了實(shí)驗(yàn),具體的實(shí)驗(yàn)環(huán)境設(shè)置為:使用的CPU正常最高工作頻率為 1 500 MHz;工作頻率可在 1 500 MHz、1 000 MHz、700 MHz、300 MHz之間調(diào)整.任務(wù)組中共有 4 個(gè)可調(diào)度任務(wù)(T1、T2、T3、T4),各個(gè)任務(wù)對(duì)應(yīng)的子任務(wù)的執(zhí)行時(shí)間及其所調(diào)用外設(shè)見表1.

表1 子任務(wù)執(zhí)行時(shí)間及相關(guān)設(shè)備表Tab.1 Son task execution time and related equipment

系統(tǒng)中設(shè)備均具有高能耗的正常狀態(tài)和低能耗的睡眠狀態(tài)這些設(shè)備的電氣特性,見表2,其中的功耗數(shù)值為單位功耗.

表2 設(shè)備電器特性Tab.2 Clectrical characteristics of equipment

該組的實(shí)驗(yàn)?zāi)康氖菍⒈疚奶岢龅娜蝿?wù)級(jí)IDSP策略與設(shè)備級(jí)的DPM策略TimOut進(jìn)行功耗及性能的比較.TimeOut的固定超時(shí)時(shí)限設(shè)置為4個(gè)時(shí)間單元,即設(shè)備在經(jīng)過(guò)4個(gè)單元時(shí)間的空閑之后將進(jìn)入休眠狀態(tài).該組實(shí)驗(yàn)中兩種策略的實(shí)時(shí)功耗對(duì)比結(jié)果見圖2.IDSP策略任務(wù)組中CPU頻率調(diào)整與正常工作頻率對(duì)比結(jié)果見圖3.

圖2 策略功耗結(jié)果對(duì)比Fig.2 Comparison of strategy power consumption

圖3 CPU頻率調(diào)整結(jié)果對(duì)比Fig.3 Comparison of CPU frequency Adjustment

由圖2、圖3可知,IDSP策略中實(shí)施的CPU頻率調(diào)整后的數(shù)據(jù)明顯低于調(diào)整前的正常工作值,能夠有效降低CPU功耗.

5 小結(jié)

本文基于動(dòng)態(tài)電源管理基本框架,擴(kuò)展了CPU頻率檢測(cè)功能和策略優(yōu)化功能,應(yīng)用于Android平臺(tái).根據(jù)任務(wù)分類提出一種新的任務(wù)級(jí)設(shè)備調(diào)度策略ISDP,并根據(jù)實(shí)時(shí)檢測(cè)到的調(diào)度過(guò)程中相關(guān)設(shè)備約束條件調(diào)整操作點(diǎn),在保證設(shè)備正常工作條件下,減少了CPU功耗.相對(duì)傳統(tǒng)DLPM策略,本策略在一定程度上延長(zhǎng)了設(shè)備使用時(shí)間,顯著降低了外設(shè)整體功耗.

[1]蘇健.Android智能手機(jī)平臺(tái)電源管理技術(shù)[J].微處理機(jī),2011,10(5):66-69.

[2]張海絨.基于Android平臺(tái)的動(dòng)態(tài)電源管理技術(shù)研究[D].昆明:云南大學(xué),2011.

[3]IBMand Monta Vista Software.Dynamic power manag ement for embedded systems(V11.1)[EB/OL].(2002-11-19).http://www.resea rch.ibm.com/arl/projects/dpm.html

[4]劉發(fā)貴,麥偉鵬,黃凱耀.動(dòng)態(tài)電源管理框架的擴(kuò)展與實(shí)現(xiàn)[J].華南理工大學(xué)學(xué)報(bào):自然科學(xué)版,2007,35(5):60-64.

[5]Binweinberg.基于Linux的動(dòng)態(tài)電源管理:使嵌入式設(shè)備更節(jié)能[M].Monta VistaSoftware,2003.

[6]陽(yáng)富民,梁晶,張杰,等.嵌入式Linux電源管理技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2004,26(12):93-95.

[7]卜愛國(guó),劉昊,胡晨,等.基于任務(wù)級(jí)的動(dòng)態(tài)電源管理設(shè)備調(diào)度策略[J].電路與系統(tǒng)學(xué)報(bào),2005,10(5):33-38.

[8]Peek J,O’Reilly T,Loukides M.UNIX Power Tools[M].Sebastopol,California:O’Reilly&Assoc.Inc.,1997.

[9]Cockcroft A.Sun Performacne and Tuning[M].Mountain View,California:SunSoft Press,1995.

[10]Sesic A,Daut ovic S,Malbasa V.Dynamic power management of a system with a two priority request queue using probabilistic model checking[J].IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems,2008,27(2):403-407.

[11]萬(wàn)恩海,劉宗田.基于Linux動(dòng)態(tài)頻率調(diào)整的DPM方案[J].計(jì)算機(jī)工程,2011,37(10):237-242.

[12]史軍勇,齊艷珂.Linux操作系統(tǒng)環(huán)境下CPU平均負(fù)載的研究[J].福建電腦,2009(6):119-121.

猜你喜歡
內(nèi)核功耗框架
萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
框架
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
廣義框架的不相交性
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
Linux內(nèi)核mmap保護(hù)機(jī)制研究
WTO框架下
法大研究生(2017年1期)2017-04-10 08:55:06
揭開GPU功耗的面紗
數(shù)字電路功耗的分析及優(yōu)化
電子制作(2016年19期)2016-08-24 07:49:54
“功耗”說(shuō)了算 MCU Cortex-M系列占優(yōu)
電子世界(2015年22期)2015-12-29 02:49:44
临猗县| 陇西县| 惠安县| 连平县| 东安县| 健康| 镇巴县| 驻马店市| 通化县| 三原县| 莆田市| 美姑县| 河西区| 新巴尔虎右旗| 木里| 杭锦旗| 福建省| 淮阳县| 平乐县| 思茅市| 九龙城区| 科技| 中宁县| 巧家县| 衡阳县| 无锡市| 阜康市| 怀化市| 三河市| 白玉县| 徐州市| 陆丰市| 麻阳| 克东县| 乌兰县| 荣成市| 武山县| 襄城县| 绥江县| 仁布县| 禄丰县|