處理器的性能與操作系統(tǒng)允許的一樣好。一個(gè)計(jì)算平臺(tái),無(wú)論是嵌入式的還是其他的,不僅包括物理資源——內(nèi)存、CPU 內(nèi)核、外圍設(shè)備和總線——通過(guò)資源分區(qū)(虛擬化)取得了一些成功,還包括性能資源,如 CPU 周期、時(shí)鐘速度、內(nèi)存和I/O 帶寬和主/高速緩存內(nèi)存空間。這些資源由諸如優(yōu)先級(jí)或時(shí)間片之類的古老方法管理,或者根本不管理。結(jié)果,處理器未被充分利用并消耗過(guò)多能量,從而剝奪了它們真正的性能潛力。
大多數(shù)現(xiàn)有的管理方案都是分散的。CPU 周期由優(yōu)先級(jí)和時(shí)間隔離管理,這意味著需要在預(yù)設(shè)時(shí)間內(nèi)完成的應(yīng)用程序?qū)⒈A粼摃r(shí)間,無(wú)論它們是否真的需要它。由于緩存未命中、未命中推測(cè)和 I/O 阻塞導(dǎo)致執(zhí)行時(shí)間無(wú)法安全預(yù)測(cè),因此保留時(shí)間通常比需要的時(shí)間長(zhǎng)。為了確保智能手機(jī)中的調(diào)制解調(diào)器堆棧接收到足夠的 CPU 周期來(lái)進(jìn)行呼叫,可能會(huì)限制其他應(yīng)用程序不能同時(shí)運(yùn)行。這就解釋了為什么一些無(wú)名品牌手機(jī)的用戶抱怨當(dāng)電話響起時(shí),GPS 會(huì)掉線。
除此之外,電源管理最近引起了極大的興趣。注意“分離”的特征。大多數(shù)部署的解決方案擅長(zhǎng)檢測(cè)空閑時(shí)間、使用系統(tǒng)響應(yīng)緩慢的模式,或 CPU 可以以較低時(shí)鐘速度運(yùn)行從而節(jié)省能源的特定應(yīng)用程序。例如,英特爾提出了 Hurry Up and Get Idle (HUGI)。要理解 HUGI,請(qǐng)考慮這個(gè)類比:有人可以使用 Indy 汽車全速到達(dá)目的地然后將其停放,但也許使用 Prius 及時(shí)到達(dá)目的地會(huì)更實(shí)用。您認(rèn)為哪個(gè)使用較少的氣體?基于使用模式的電源管理粒度太粗,無(wú)法始終有效地挖掘所有節(jié)能機(jī)會(huì)。
理想情況下,開(kāi)發(fā)人員希望改變時(shí)鐘速度/電壓以匹配瞬時(shí)工作負(fù)載,但這不能僅通過(guò)關(guān)注正在運(yùn)行的應(yīng)用程序來(lái)實(shí)現(xiàn)。開(kāi)發(fā)人員可能能夠確定應(yīng)用程序按時(shí)完成的最低時(shí)鐘速度,但他們是否可以在不知道其他等待運(yùn)行的應(yīng)用程序如果延遲會(huì)受到影響的情況下減慢時(shí)鐘速度?單獨(dú)管理任務(wù)和時(shí)鐘速度(功率)并不能帶來(lái)最佳的能源消耗。獲勝的方法將同時(shí)管理/優(yōu)化所有性能資源,但至少管理時(shí)鐘速度和任務(wù)調(diào)度。想象一下,任務(wù)調(diào)度器是旅行計(jì)劃者,時(shí)鐘管理器是汽車司機(jī)。如果汽車減速,則必須重新計(jì)劃行程。驅(qū)動(dòng)程序可能由于糟糕的路況(緩存未命中)而不得不減速或在鐵路障礙處停下(多線程中的障礙,由于分配的 I/O 帶寬不足而導(dǎo)致緩沖區(qū)空時(shí)阻塞,等等)。表現(xiàn)出依賴于數(shù)據(jù)的執(zhí)行時(shí)間的應(yīng)用程序也存在一個(gè)問(wèn)題,因?yàn)樗鼈兺瓿傻臅r(shí)間直到它們完成才知道。應(yīng)該提前為這些應(yīng)用程序分配什么時(shí)鐘速度?
先進(jìn)的績(jī)效管理解決方案
管理性能資源的一個(gè)示例是 VirtualMetrix 性能管理 (PerfMan),它通過(guò)參數(shù)驅(qū)動(dòng)算法控制所有性能資源。該軟件根據(jù)帶寬消耗和指令退役等性能數(shù)據(jù)安排任務(wù)、更改時(shí)鐘速度、確定空閑期并分配 I/O 帶寬和緩存空間。這種方法(如圖 1 所示)解決了碎片問(wèn)題,并可以實(shí)現(xiàn)最佳資源分配,甚至考慮到現(xiàn)代處理器和數(shù)據(jù)相關(guān)應(yīng)用程序的執(zhí)行速度的不可預(yù)測(cè)性。
圖 1: PerfMan 使用參數(shù)驅(qū)動(dòng)算法控制所有性能資源,從而實(shí)現(xiàn)最佳資源分配。
正在申請(qǐng)專利的已完成工作分配算法使用閉環(huán)方法,通過(guò)比較已完成的工作與仍需完成的工作來(lái)做出分配決策,以系統(tǒng)提供的任何可測(cè)量的性能量表示。例如,如果應(yīng)用程序是填充緩沖區(qū)的視頻播放器或通信協(xié)議,PerfMan 可以跟蹤緩沖區(qū)填充級(jí)別并確定時(shí)鐘速度和運(yùn)行時(shí)間,以便及時(shí)填充緩沖區(qū)。完成的時(shí)間不可避免地會(huì)有所不同,因此決策會(huì)周期性更新。在許多情況下,緩沖區(qū)被過(guò)度填充以防止緩沖區(qū)空時(shí)阻塞,這可能導(dǎo)致時(shí)序違規(guī)。PerfMan 能夠進(jìn)行精確的性能分配,將緩沖保持在最低限度并減少內(nèi)存占用。該算法可以處理硬、軟、
如果應(yīng)用程序執(zhí)行圖被量化為簡(jiǎn)單的性能參數(shù),并且在重要時(shí)知道截止日期,那么算法將動(dòng)態(tài)調(diào)度以及時(shí)滿足截止日期。即使是非實(shí)時(shí)應(yīng)用程序也需要一些性能分配以避免無(wú)限期延遲。分配應(yīng)用程序所需的最少處理器資源會(huì)提高系統(tǒng)利用率,從而可能產(chǎn)生更高的工作負(fù)載。該方法不依賴于嚴(yán)格的優(yōu)先級(jí),盡管可以使用它們。執(zhí)行的優(yōu)先級(jí)或順序是應(yīng)用程序在等待輪到運(yùn)行時(shí)表現(xiàn)出的緊迫性的直接結(jié)果,這是要執(zhí)行的基本工作/已完成工作范式的函數(shù)。
擴(kuò)展到更多維度
如果任務(wù)已準(zhǔn)備好在現(xiàn)有操作系統(tǒng)中運(yùn)行,它們將運(yùn)行,但它們需要嗎?如果操作系統(tǒng)知道它不會(huì)影響它們的操作,它們可以被延遲(強(qiáng)制空閑)嗎?
了解每個(gè)任務(wù)的時(shí)間以及它是否正在運(yùn)行或等待運(yùn)行相對(duì)于其完成進(jìn)度,允許軟件自動(dòng)確定最小時(shí)鐘速度和運(yùn)行時(shí)間。因此,在所有負(fù)載條件下,一切都按時(shí)完成。將時(shí)鐘速度與瞬時(shí)工作負(fù)載相匹配并不意味著時(shí)鐘速度總是最小化。低能耗的目標(biāo)有時(shí)需要在空閑之后出現(xiàn)高速爆發(fā),例如英特爾的 HUGI。但即便如此,運(yùn)行速度超過(guò)最佳利用率(每單位時(shí)間執(zhí)行的操作)所表明的速度并沒(méi)有任何好處。等待內(nèi)存操作完成時(shí)的快速時(shí)鐘不會(huì)節(jié)省能源。
該算法“以最低能耗實(shí)現(xiàn)最高利用率/工作負(fù)載”的口號(hào)在很大程度上是通過(guò)管理所有性能資源的閉環(huán)算法來(lái)實(shí)現(xiàn)的。
在多核系統(tǒng)中,不能同時(shí)實(shí)現(xiàn)負(fù)載均衡、多線程屏障延遲低和總能耗最低。為了解決這個(gè)問(wèn)題,可以將 PerfMan 配置為優(yōu)化一個(gè)或多個(gè)性能屬性。如果以最低能耗為目標(biāo),一個(gè)不平衡的系統(tǒng),其中一些內(nèi)核負(fù)載高,而其他內(nèi)核為空并因此關(guān)閉,可能會(huì)以更長(zhǎng)的執(zhí)行延遲和整體較低的性能為代價(jià)提供最低的能耗。
加速線程以減少屏障延遲也會(huì)導(dǎo)致更高的能耗。但是,滿足最后期限(硬的或軟的)優(yōu)先于所有其他考慮。精確的基于閉環(huán)的性能資源分配算法可以安全地保持更高的工作負(fù)載水平,這反過(guò)來(lái)又可以比現(xiàn)有方法更進(jìn)一步地推動(dòng)核心整合,從而實(shí)現(xiàn)更高的能耗降低。
在 VMX Linux 上實(shí)現(xiàn)
PerfMan 已實(shí)現(xiàn)為獨(dú)立于駐留操作系統(tǒng)運(yùn)行的瘦內(nèi)核 (sdKernel)。它已被移植到 Linux 2.6.29 (VMX Linux),如圖 2 所示。Android 移植即將完成。該軟件接管了 Linux 任務(wù)調(diào)度并與現(xiàn)有的電源管理基礎(chǔ)架構(gòu)互通。sdKernel 的一個(gè)單獨(dú)版本提供虛擬化并支持在符合 POSIX 的環(huán)境中的硬實(shí)時(shí)任務(wù)。調(diào)度/上下文切換在許多平臺(tái)上處于亞微秒級(jí),但由于大多數(shù) Linux 系統(tǒng)調(diào)用對(duì)于硬實(shí)時(shí)應(yīng)用程序來(lái)說(shuō)太慢了,因此 sdKernel 為基本外圍設(shè)備、定時(shí)器和其他資源提供了 API。
圖 2:在 Linux 實(shí)施中,PerfMan 接管 Linux 任務(wù)調(diào)度并與現(xiàn)有的電源管理基礎(chǔ)架構(gòu)互通。
通過(guò)監(jiān)控性能,該軟件可以檢測(cè)異常的執(zhí)行模式,從而預(yù)測(cè)即將到來(lái)的操作系統(tǒng)恐慌和崩潰。在這種情況下,sdKernel 將通知關(guān)鍵任務(wù)應(yīng)用程序停止使用 Linux 系統(tǒng)調(diào)用,并在 Linux 重新啟動(dòng)時(shí)臨時(shí)切換到 sdKernel API(安全模式)。
VMX Linux 支持實(shí)時(shí)和非實(shí)時(shí)應(yīng)用程序的混合,具有高效的性能隔離,同時(shí)將能耗降至最低。它還可以提供硬件隔離/安全和安全迫降。
基準(zhǔn)測(cè)試顯示結(jié)果
使用 VMX 設(shè)計(jì)的能量計(jì)實(shí)時(shí)測(cè)量的能量消耗為系統(tǒng)累積并與各個(gè)應(yīng)用程序相關(guān)聯(lián)。媒體播放器應(yīng)用程序(視頻和音頻)首先使用標(biāo)準(zhǔn) Linux 2.6.29(圖 3 紅色圖表)和 VMX Linux(圖 3 藍(lán)色圖表)在 OMAP35xx BeagleBoard 上運(yùn)行。
圖 3:在 OMAP35xx BeagleBoard 上使用 VMX Linux 可實(shí)現(xiàn) 95% 的平均負(fù)載并及時(shí)完成。
性能合規(guī)性(Perf Compl 圖)顯示應(yīng)用程序任務(wù)按時(shí)完成的距離(中心線)。線下方表示違反截止日期。請(qǐng)注意,使用 VMX Linux,可以實(shí)現(xiàn) 95% 的平均負(fù)載,而無(wú)需預(yù)緩沖,也不會(huì)違反最后期限,但它已經(jīng)接近了。使用 VMX Linux 時(shí),46 秒視頻的總電路板能耗從 68.7 W*sec 下降到 27.6 W*sec。顯示的數(shù)據(jù)代表預(yù)設(shè)時(shí)間間隔內(nèi)的平均值。作為額外的獎(jiǎng)勵(lì),當(dāng) Linux 被故意崩潰時(shí),視頻會(huì)消失,但音樂(lè)會(huì)在安全模式下播放,不會(huì)出現(xiàn)任何可聽(tīng)見(jiàn)的故障。
簡(jiǎn)而言之,該實(shí)施創(chuàng)造了一種新的績(jī)效管理方法,并取得了令人興奮的結(jié)果。
審核編輯:郭婷
-
播放器
+關(guān)注
關(guān)注
5文章
394瀏覽量
37348 -
Linux
+關(guān)注
關(guān)注
87文章
11212瀏覽量
208721 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6689瀏覽量
123141
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論