亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux devfreq子系統(tǒng)分析及應用

        2020-04-30 06:49:45朱振華
        無線互聯(lián)科技 2020年6期

        朱振華

        摘 ? 要:文章針對Linux的內(nèi)核devfreq子系統(tǒng)框架進行了抽象分析,理清了子系統(tǒng)內(nèi)部各關鍵模塊之間的相互關系。通過對子系統(tǒng)框架的分析整理出了devfreq driver的編程框架,并對后續(xù)Linux內(nèi)核devfreq框架的演化進行了展望。

        關鍵詞:Linux;設備調(diào)頻;功耗

        隨著移動終端性能越來越強大、功能越來越多,其功耗也越來越高。隨著功耗的升高,移動終端所配備的電池容量越來越大,電池所占空間也越來越大、重量越來越重,不可避免地和移動終端所倡導的輕薄、便攜理念發(fā)生了沖突。Linux操作系統(tǒng)建立之初主要應用于臺式電腦、工作站、大型機等非移動平臺,所以并未對系統(tǒng)功耗進行過多關注。近些年來隨著android等移動操作系統(tǒng)的興起,作為android底層的Linux操作系統(tǒng)在功耗管理方面也有了長足的進步。文章所述的devfreq子系統(tǒng)是Linux功耗管理系統(tǒng)的一個重要子系統(tǒng),其核心理念是通過某種手段對設備的負載進行動態(tài)測量,在設備輕載時降低設備工作電壓和頻率以最大限度地降低設備運行功耗,在設備重載時及時提高設備工作電壓和頻率以滿足設備的性能需求。通過對設備電壓和頻率的“按需供給”提高設備運行效能,從而降低設備功耗[1]。

        1 ? ?devfreq子系統(tǒng)框架分析

        Linux devfreq子系統(tǒng)對下封裝了設備硬件相關細節(jié),根據(jù)硬件提供的設備負載信息和調(diào)頻調(diào)壓手段實現(xiàn)了對設備性能的“按需供給”;對上透出了相關sysfs API給用戶態(tài)應用程序,使應用程序可以根據(jù)場景需求動態(tài)改變設備調(diào)頻調(diào)壓的相關參數(shù)和策略,最大限度地滿足了用戶在不同場景下的多樣性需求,使“性能”和“功耗”這一對矛盾體得到了一定程度的統(tǒng)一。Linux devfreq子系統(tǒng)框架如圖1所示。

        Linux devfreq的基本原理是通過周期性的測量被調(diào)設備的負載狀況來預估設備未來一段時間的性能需求,并根據(jù)此需求來調(diào)整設備工作的電壓和頻率,使設備性能總在“剛剛好滿足需求”的頻率和電壓下工作,從而最大程度地提高設備工作效能[2-3]。

        devfreq core會為每一個加入devfreq子系統(tǒng)(devfreq-add-device)的設備啟動一個負載監(jiān)控work:devfreq-monitor。Devfreq-monitor會周期性地通過event框架向設備負載監(jiān)控單元獲取設備負載數(shù)據(jù),之后使用驅動指定的governor調(diào)頻算法計算出未來一段時間設備需要運行的頻率電壓(update-devfreq),最后通過驅動定制的target方法調(diào)用clk和regulator相關接口完成最終的調(diào)頻調(diào)壓動作,如圖2所示。此work每polling-ms毫秒調(diào)度一次,polling-ms的具體數(shù)值由devfreq驅動定制。

        Linux驅動開發(fā)倡導“機制”和“策略”分離,驅動程序提供“機制”,“策略”一般由上層框架或者應用程序指定,從而在保持Linux框架相對穩(wěn)定的情況下給用戶提供了足夠的靈活性支持。具體到devfreq框架中,Linux將具體的調(diào)頻策略抽象為了governor,不同的governor提供不同的get_target_freq方法來實現(xiàn)不同的調(diào)頻策略。Linux框架提供如下幾個governor供驅動和用戶態(tài)API選擇。

        (1)performance,設備固定工作在其支持的最高頻率上,以追求最高性能。

        (2)powersave,設備固定工作在其支持的最低頻率上,以追求最低的功耗。

        (3)userspace,將調(diào)頻策略的決策交給了用戶態(tài)應用程序,并提供相應的調(diào)頻調(diào)壓接口供其使用。

        (4)ondemand,定時對系統(tǒng)負載情況進行采樣分析并據(jù)此調(diào)節(jié)設備工作頻率和電壓。

        通常狀況下設備調(diào)頻驅動會選擇ondemand以便devfreq子系統(tǒng)可以自動對設備進行“按需調(diào)頻”,使設備效能達到最佳。

        devfreq event對設備負載監(jiān)控單元進行了封裝,并抽象出了簡潔的編程接口給devfreq event driver,使其可以將硬件負載監(jiān)控單元提供的相關信息輕松納入devfreq框架供相關governor使用。

        2 ? ?devfreq子系統(tǒng)驅動開發(fā)

        devfreq子系統(tǒng)驅動通常包括兩個部分:devfreq driver和devfreq event driver。前者是設備調(diào)頻驅動的主體部分,需要定制本驅動調(diào)頻策略(governor選擇)、選擇合適的devfreq-monitor調(diào)度周期以及定制自己的調(diào)頻方法等;后者主要實現(xiàn)設備負載監(jiān)控單元的相關信息獲取和封裝供devfreq框架使用。如果設備有獨立的clock和power,一般也需要將其納入到Linux clk子系統(tǒng)和regulator子系統(tǒng)進行管理[4]。

        2.1 ?devfreq ?driver

        devfreq driver只需要完成如下幾步即可完成驅動編碼:

        (1)完成驅動自己的devfreq-dev-profile定制。Devfreq-dev-profile結構體的主要成員如下。

        polling_ms:devfreq_monitor線程的運行周期,單位是ms。

        target:調(diào)頻調(diào)壓的具體執(zhí)行方法,一般需要通過clock子系統(tǒng)和regulator子系統(tǒng)相關接口實現(xiàn)。此方法在devfreq_monitor線程中被調(diào)用。

        Get-dev-status:通過調(diào)用event子系統(tǒng)相關方法獲取當前周期內(nèi)設備負載相關信息供governor計算調(diào)頻目標頻點使用。

        Get-cur-freq:獲取設備的當前運行頻率。

        (2)驅動probe階段將本設備加入到devfreq子系統(tǒng),步驟如下:

        從幾個governor中選擇一個作為設備調(diào)頻策略。

        以定制的devfreq-dev-profile和選定的governor做參數(shù)調(diào)用devfreq-add-device接口,將本設備加入到devfreq子系統(tǒng)中。

        2.2 ?devfreq ?event ?driver

        (1)Devfreq-event-driver只需要完成如下幾步即可完成驅動編碼。完成驅動自己的devfreq-event-ops定制。Devfreq-event-ops結構體的主要成員如下:

        disable,停止本設備負載監(jiān)控。

        enable,開啟本設備性能監(jiān)控。

        Get-event,獲取設備負載信息。

        (2)驅動probe階段將本設備加入到devfreq event子系統(tǒng),步驟如下:

        以定制的devfreq-event-ops為參數(shù)調(diào)用devfreq-event-add-new接口,將本設備加入到devfreq event子系統(tǒng)中。

        3 ? ?結語

        Linux devfreq子系統(tǒng)框架對設備調(diào)頻軟硬件相關復雜性進行了封裝,設備調(diào)頻驅動只需要按照Linux框架要求并根據(jù)自身硬件特性提供相關屬性和定制相關方法即可,大大降低了設備調(diào)頻驅動開發(fā)難度,加快產(chǎn)品上市速度。

        片上系統(tǒng)的clock子系統(tǒng)結構通常是樹狀結構,所以單獨一個device調(diào)頻往往會影響到相關的父子設備。Linux當前的devfreq框架相對來說還稍顯簡陋,多用于對較為獨立的單一設備進行調(diào)頻調(diào)壓,并沒有納入到Linux設備模型中進行統(tǒng)一管理。隨著Linux的發(fā)展,后續(xù)如果device的相關調(diào)頻動作納入到設備模型power相關操作,集中由內(nèi)核統(tǒng)一管理,根據(jù)硬件拓撲結構及dts相關配置自動處理上下游設備的依賴關系,devfreq的功能會更加強大。

        [參考文獻]

        [1]宋寶華.Linux設備驅動開發(fā)詳解-基于最新的Linux 4.0內(nèi)核[M].北京:機械工業(yè)出版社,2010.

        [2]周建政,呂柏權.基于linux嵌入式的電源管理的研究[J].儀表技術,2008(1):59-61.

        [3]趙婉芳.基于Linux的cpufreq動態(tài)電源管理模塊研究[J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2018(5):72-73,94.

        [4]趙婉芳.基于linux的電源管理cpuidle模塊研究及應用[J].中國科技縱橫,2017(22):19,21.

        Analysis and application of Linux devfreq subsystem

        Zhu Zhenhua

        (Zhuhai Quanzhi Polytron Technologies Inc, Zhuhai 519000, China)

        Abstract:This paper analyzes the devfreq subsystem framework of Linux kernel, and clarifies the relationship among the key modules in the subsystem. Through the analysis of the subsystem framework, the programming framework of devfreq driver is sorted out, and the future evolution of devfreq framework of Linux kernel is prospected.

        Key words:Linux; device frequency modulation; power consumption

        一本一道av中文字幕无码| 女同三级伦理在线观看| 丝袜美腿精品福利在线视频| 日韩av一区二区不卡| 国产成人精品无码一区二区三区 | 亚洲av午夜精品无码专区| 国产亚洲成av人片在线观看| 最新国产精品久久精品| 国产卡一卡二卡三| 国产av一区二区三区日韩| 无遮挡十八禁在线视频国产制服网站 | 国产精品又爽又粗又猛又黄 | 精品久久人人妻人人做精品| 日韩AV不卡一区二区三区无码| 911精品国产91久久久久| 极品诱惑一区二区三区| 亚洲精品一品二品av| 五月激情在线观看视频| 国产一区二区精品人妖系列在线 | 国产在线一区二区三精品乱码| 美女网站免费观看视频| 边喂奶边中出的人妻| 亚洲 欧美精品suv| 久久精品中文字幕久久| 日本大胆人体亚裔一区二区| 97成人精品在线视频| 国产免费av手机在线观看片| 成人无码网www在线观看| 久久av高潮av无码av喷吹| 欧美日韩在线免费看 | 亚洲精品一区二区三区新线路| 国产又大又硬又粗| 少妇放荡的呻吟干柴烈火动漫| 精品人伦一区二区三区蜜桃麻豆| 亚洲福利av一区二区| 成人国产高清av一区二区三区| 亚洲成人中文字幕在线视频| av综合网男人的天堂| 女同啪啪免费网站www| 久久久久久AV无码成人| 按摩偷拍一区二区三区|