我今天想查一下Intel工程師放在CSDN的一個視頻,名字倒是查出來叫:Moblin系統的快速啟動核心技術剖析,但是怎麼找也找不找了。這是一個好的技術介紹。難道給刪除了。不知道CSDN是否上次查圖片的時候,禁止了所有的視頻。沒辦法了,翻箱倒櫃,找到了以前做的一些筆記,先記錄下來。不過不保證完全忠於原著。可能有刪減。聊勝於無嘛。如果能再次公開那些技術視頻就好了,我本來是想找codec和容器的資料,記得也是Intel工程師給的,後來發現什麼都不見了。
Intel在Meego(原Moblin)的革新,一是快速啟動,二是低功耗,進入了Linux的mainline,使得阿土(ubutu)和fadora能號稱在十秒的層級上開機啟動。這在手持功能中是非常重要的。下面記錄可能不完全反映原來視頻的內容,加入了我的一些理解,對不感興趣的部分跳過,如果有任何技術問題,應當不歸於INTEL的工程師。
快速啟動
系統的開機,從我們按power開始到能夠正常使用,包含三部分的內容:一、BIOS/BSP的啟動時間;二、系統平台(作業系統)的啟動時間;三、案頭UI和應用的啟動時間。
第一部分和硬體有關,和系統平台無關,不討論。
第二部分是實現快速啟動的核心關鍵區段。有下面的四個關鍵技術:
關鍵技術1:核心模組(包括裝置驅動)的快速載入
- 儘可能將核心模組編譯到Kernel image內部:減少需要另行獨立載入的模組的方式,節省時間
- 非同步核心模組初始化:提高核心模組處理的並行化,可同時檢測多個硬體裝置來減少啟動時間。
關鍵技術2:加速檔案讀取效率(Sreadahead:super read ahead)
- 採用Sreadahead,提高對SSD的檔案讀取速度:對開機檔案放入kernel page cache中。
關鍵技術3:最佳化顯示驅動,實現X server的快速啟動(fast X)
- 減少顯卡驅動載入所消耗的時間,減少顯卡驅動所佔記憶體
- 加速X Server啟動時間:對XKB(leyboard layouts)結果進行緩衝,以便以後直接使用,X可直接使用kernel啟動時檢測到的使用模式。
關鍵技術4:最佳化init指令碼
- 精簡不必要的背景程式和服務(nfs server, mail server)
- 並行啟動必要的背景程式服務(例如dbus,hal,connman)
第三部分是我們啟動上層應用和服務,在智能手機中要好好斟酌啟動的順序。
低功耗技術
關鍵技術1:減少裝置群組件/外設的功耗
- 原則1:對不使用的組件/外設關閉,如果無法關閉,進入睡眠以降低功耗
原則2:對於休眠的組件/外設,非必要時不喚醒
原則3:在一個喚醒周期中,儘可能完成更多的工作,使得組件/外設可以更長的休眠時間
基礎:組件休眠控制技術
方式:
各功能塊獨立供電,優選底功耗器件,可進行開關控制,使用者可設定節能模式
電源最佳化管理功能設計、實現底層硬體、系統軟體和應用軟體多層協同
狀態切換機制:Idle態(調低CPU時鐘頻率,關閉部分組件,動態電壓調節)
例子:
例子1:屏低功耗:背光自適應調節優先管理以及屏保
例子2:智能的網路連接管理:對於wifi/wapi,避免長時間不斷搜尋,對與資料包的轉寄,先存起來,在周期廣播信標幀是才發送,避免填寫模組一直處於工作狀態,提供休眠期
例子3:USB,對於slave模式,從master中充電,對於master模式,不工作時進入休眠。
關鍵技術2:系統平台低功耗方案
- 原則1:CPU在工作喚醒周期,儘可能多處理,以儘可能延長睡眠時期;
原則2:多個事件同時喚醒,降低喚醒頻率
基礎:CPU的低功耗工作模式
方式1:kernel低功耗最佳化
例子1:Linux Kernel對電源管理的最佳化:根據過往的記錄判斷當前進入哪個層級的C state 。
例子2:對P State的智能控制:控制採用On demand cupfreq govener,即按需CPU頻率調節技術。
例子3:儘可能同步喚醒:包括kernel tickless idle, 全域Timer技術,合并/同步外設中斷時鐘
方式2:使用者空間程式的低功耗最佳化
例子1:避免頻繁的中斷事件:最佳化系統各應用,合并/同步事件的觸發事件
例子2:減少頻繁I/O處理,合并寫操作,使用較大緩衝,減少讀寫操作的頻率
例子3:在應用程式開發中:處理時應儘可能完成多的任務,允許休眠更長的時間
例子4:硬體編解碼比軟體編解碼效率高
背景知識:CPU的三個state
- C State:A set of Idle States,即一系列休眠狀態:關閉不使用的cycle,越進階別的C state,休眠越深,但喚醒需要的時間和耗電更大
P state方式:Performent State, 通過降低CPU頻減少CPU點壓(降頻減壓)來減少功耗,可採用按需頻率管控進行最佳化(Ondemand cpufreq governor)。【按需分配是最理想的模式】
此外還有T state,Thermal State:是用於處理CPU過熱的情況
相關連結:我的嵌入式Linux相關文章
、
我的Linux相關文章