趙婉芳
(北京電子科技職業(yè)學院, 北京 100016)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,大量的移動終端連接入網(wǎng),與傳統(tǒng)電子設備的電源類型和使用情況相比,大部分物聯(lián)網(wǎng)移動終端的電源一般都選擇使用電池供電,其優(yōu)點是移動性強,體積小,但是也使得電源能量比較有限,而優(yōu)秀的電源管理系統(tǒng)能使得電池的壽命延長2-3倍[1]。因此如何在有限的供電時間內(nèi),在不同的使用場景之下保證移動終端的正常使用是目前移動終端電源管理研究的主要方向。目前電源管理主要分為硬件和軟件的實現(xiàn)。硬件上,通過優(yōu)化電路和改進工藝來降低電路的工作功耗。軟件上,通過管理軟件的執(zhí)行,使電路盡可能地處于低功耗工作狀態(tài)。有效的電源管理不僅降低功耗,也能降低故障率。降低功耗的同時,電路的工作溫度也會減低,同時降低電路的故障率。本文主要研究LINUX系統(tǒng)中如何通過軟件進行動態(tài)電源管理。
在電源管理中,為了節(jié)省能耗,在設備的工作過程中決定一個設備是否需要降低性能或者被關(guān)閉的規(guī)則叫做電源管理策略。電源管理策略主要分為靜態(tài)電源管理技術(shù)和動態(tài)電源管理技術(shù)兩大領(lǐng)域。一般來講,在嵌入式移動終端設備中,設備的工作狀態(tài)主要在工作和空閑之間相互交替運行,這兩種工作狀態(tài)的能量消耗需求不同,CPU的工作頻率和工作電壓以及總線的時鐘頻率和設備的電源狀態(tài)差別很大。因此,為了設備能更好的節(jié)省能耗,通常通過使用動態(tài)電源管理策略將負載較輕的設備切換到低功耗的狀態(tài)下運行,動態(tài)調(diào)節(jié)設備的頻率及電壓,從而在滿足性能的前提條件下,有效降低系統(tǒng)整體功耗。動態(tài)電源管理中常見的狀態(tài)切換示意圖如圖1所示。
圖1 DPM控制的狀態(tài)切換圖
動態(tài)電源管理策略主要分為以下四種類型:
1)超時(Time-Out)策略:該策略原理為基于原有的工作經(jīng)驗設置一個閥值,當設備空閑時間大于所設置閥值時,設備將自動進入睡眠狀態(tài)或低功耗狀態(tài)。這種策略最為簡單易用,因此在工業(yè)中應用廣泛,智能手機以及筆記本電腦的屏幕保護即采用此種策略。但策略的缺點是當閥值時間設置過長時,設備就會在等待超時時間到來之前產(chǎn)生比較多能耗。超時策略主要通過超時閾值來調(diào)整系統(tǒng),與系統(tǒng)的負載無關(guān),因此策略關(guān)鍵點是閾值的設置,目前有很多實現(xiàn)動態(tài)調(diào)整超時閾值的算法。
2)貪婪(Greedy)策略:該策略原理為使用標志位(flag)檢測設備的狀態(tài)和系統(tǒng)的請求狀況,如果該設備處于運行狀態(tài)并沒有系統(tǒng)請求,則將該設備工作狀態(tài)設置為低功耗狀態(tài),當有請求到來時,再使該設備從低功耗狀態(tài)轉(zhuǎn)換到運行狀態(tài)。在實際的工作中如果工作狀態(tài)發(fā)生轉(zhuǎn)換,則不可避免地會帶來能量消耗及時間的延遲,因此當系統(tǒng)進行頻繁的狀態(tài)切換時,貪婪算法會消耗更多的能量和造成更多的延遲,從而產(chǎn)生抖動現(xiàn)象。因此工作狀態(tài)的轉(zhuǎn)換和系統(tǒng)延時之間的矛盾,使得貪婪策略很難成為最優(yōu)算法。
3)基于隨機(Stochastic)過程策略:該策略原理為把系統(tǒng)負載當作隨機優(yōu)化問題處理,系統(tǒng)的四個核心模塊即服務提供者、服務請求者、等待隊列和電源管理分別對應馬爾可夫的四個不同過程,并利用隨機的馬爾可夫過程求解。該策略可以用于交互式系統(tǒng),處理多個狀態(tài)之間的切換問題。但由于該策略基于隨機概率模型,因此分析過程會有失真現(xiàn)象,和系統(tǒng)的真實性有一定區(qū)別。
4)預測策略:該策略主要使用推測的方法,通過設備的歷史空閑時間記錄和工作時間記錄去推測出未來的時間值,當這個值大于盈虧平衡時間時,設備處理完請求后則進入睡眠狀態(tài)或低功耗狀態(tài),直到有用戶請求到達而返回工作狀態(tài),如果值小于盈虧平衡時間時,設備則進入空閑狀態(tài),直到有用戶請求到達。該策略算法涉及參數(shù)較多,實現(xiàn)相對較為復雜,當預測時間與實際時間有較大誤差時,則會造成一定的能量浪費和設備性能損失。
cpufreq驅(qū)動:根據(jù)CPU的負載,調(diào)整CPU的頻率和電壓。
在Linux系統(tǒng)中,為了能耗節(jié)省,有專門的電源管理模塊來進行設備的電源管理優(yōu)化,其中非常重要的就是cpufreq模塊。cpufreq模塊是Linux內(nèi)核設置頻率變化的處理器子系統(tǒng),主要負責系統(tǒng)工作期間頻率的調(diào)整來實現(xiàn)設備的能耗控制。cpufreq提供了一個模塊化的接口來管理CPU頻率的變化。cpufreq模塊結(jié)構(gòu)圖如下圖2所示:
圖2 cpufreq模塊結(jié)構(gòu)圖
當CPU處于活躍狀態(tài),CPU的頻率縮放功能可以使得操作系統(tǒng)調(diào)節(jié)CPU的頻率大小。當響應系統(tǒng)事件時,cpufreq可以根據(jù)系統(tǒng)負載自動進行縮放也可以通過使用用戶空間程序進行手動調(diào)節(jié)。CPU的頻率調(diào)節(jié)是在Linux內(nèi)核中實現(xiàn),調(diào)節(jié)頻率的設備則是cpufreq Governors。開始工作時,系統(tǒng)內(nèi)核將自動加載所需模塊,在默認情況下啟用的是ondemand Governors。
大多數(shù)cpufreq驅(qū)動以及CPU頻率調(diào)節(jié)算法要求將CPU頻率設置為預定義的一個固定值。為了能夠?qū)崿F(xiàn)動態(tài)頻率調(diào)節(jié),cpufreq必須設置一個“目標頻率”并告知特定的驅(qū)動程序。在cpufreq策略中使用什么樣的頻率是通過使用cpufreq Governor來決定的。cpufreq Governors支持幾種電源使用方案,但一個時間只有一種方案有效。具體的cpufreq Governors方案如表1所示。
表1 cpufreq Governors方案
在以上Governor的使用中要注意,Performance Governor沒有節(jié)電效益,它只適用于數(shù)小時的繁重工作,甚至只有在CPU很少或從不空閑的時候使用;Userspace Governor取決于它是如何配置的,它可以為你的系統(tǒng)提供的性能和功耗之間的最佳平衡,在所有的governor中,它是最可定制的;Ondemand governor是一個動態(tài)的governor,當系統(tǒng)的負載是高時,允許CPU時鐘頻率達到最大,當系統(tǒng)空閑時則可以縮小時鐘頻率。Conservative governor設置CPU頻率取決于當前使用情況。它的不同在于,它逐漸地增加和減少CPU的速度,而不是在CPU上有任何負載時直接跳轉(zhuǎn)到高速度。這種模式更適合于電池供電的環(huán)境。另外還有一個最新加入的管理器是the schedutil cpufreq governor,它使用調(diào)度器所提供的CPU利用率的信息作為決策的輸入,為調(diào)度程序與CPU電源管理更緊密地鏈接創(chuàng)建接口。不同的Governor,具有不同的頻率設置策略,因此在具體的應用中要根據(jù)實際情況選用恰當?shù)腉overnor才能達到節(jié)能目的,否則只會適得其反,不僅達不到降低系統(tǒng)能耗的目的,反而降低了系統(tǒng)性能。
在移動終端嵌入式設備中,通過動態(tài)電源管理可以有效降低系統(tǒng)整體功耗,從而延長系統(tǒng)待機時間。本文介紹了已有的動態(tài)電源管理策略,重點研究了LINUX系統(tǒng)中當系統(tǒng)處于工作狀態(tài)時負責電源管理的cpufreq模塊結(jié)構(gòu)特點并分析總結(jié)出Governor部分在實際使用中的注意要點,為眾多基于Linux系統(tǒng)嵌入式設備的電源管理實際應用提供了一個有用的參考。
[1]Daler Rakhmatov etal.Energy Management for Battery-Powered Embedded Systems[J].ACM Transactions on Embedded Computing Systems,2003:277-324.