国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Linux系統啟動時間的極限優化

發布時間:2010-9-20 12:17    發布者:eetech
關鍵詞: linux , 啟動時間
(1)首先是對Linux啟動過程的跟蹤和分析,生成詳細的啟動時間報告。  

較為簡單可行的方式是通過PrintkTime功能為啟動過程的所有內核信息增加時間戳,便于匯總分析。PrintkTime最早為CELF所提供的一個內核補丁,在后來的Kernel 2.6.11版本中正式納入標準內核。所以大家可能在新版本的內核中直接啟用該功能。如果你的Linux內核因為某些原因不能更新為2.6.11之后的版本,那么可以參考CELF提供的方法修改或直接下載它們提供的補丁:http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes  

開啟PrintkTime功能的方法很簡單,只需在內核啟動參數中增加“time”即可。當然,你也可以選擇在編譯內核時直接指定“Kernel hacking”中的“Show timing information on printks”來強制每次啟動均為內核信息增加時間戳。這一種方式還有另一個好處:你可以得到內核在解析啟動參數前所有信息的時間。因此,我選擇后一種方式。  

當完成上述配置后,重新啟動Linux,然后通過以下命令將內核啟動信息輸出到文件:  

dmesg -s 131072 > ktime  

然后利用一個腳本“show_delta”(位于Linux源碼的scripts文件夾下)將上述輸出的文件轉換為時間增量顯示格式:  

/usr/src/linux-x.xx.xx/scripts/show_delta ktime > dtime  

這樣,你就得到了一份關于Linux啟動時間消耗的詳細報告。  

(2)然后,我們就來通過這份報告,找出啟動中相對耗時的過程。  

必須明確一點:報告中的時間增量和內核信息之間沒有必然的對應關系,真正的時間消耗必須從內核源碼入手分析。  

這一點對于稍微熟悉編程的朋友來說都不難理解,因為時間增量只是兩次調用printk之間的時間差值。通常來說,內核啟動過程中在完成一些耗時的任務,如創建hash索引、probe硬件設備等操作后會通過printk將結果打印出來,這種情況下,時間增量往往反映的是信息對應過程的耗時;但有些時候,內核是在調用printk輸出信息后才開始相應的過程,那么報告中內核信息相應過程的時間消耗對應的是其下一行的時間增量;還有一些時候,時間消耗在了兩次內核信息輸出之間的某個不確定的時段,這樣時間增量可能就完全無法通過內核信息反應出來了。  

所以,為了準確判斷真正的時間消耗,我們需要結合內核源碼進行分析。必要的時候,例如上述第三種情形下,還得自己在源碼中插入printk打印,以進一步確定實際的時間消耗過程。  

以下是我上次裁減后Linux內核的啟動分析:  

內核啟動總時間: 6.188s  

關鍵的耗時部分:  

1) 0.652s - Timer,IRQ,Cache,Mem Pages等核心部分的初始化  

2) 0.611s - 內核與RTC時鐘同步  

3) 0.328s - 計算Calibrating Delay(4個CPU核心的總消耗)  

4) 0.144s - 校準APIC時鐘  

5) 0.312s - 校準Migration Cost  

6) 3.520s - Intel E1000網卡初始化  

下面,將針對上述各部分進行逐一分析和化解。  

(3)接下來,進行具體的分項優化。  

CELF已經提出了一整套針對消費類電子產品所使用的嵌入式Linux的啟動優化方案,但是由于面向不同應用,所以我們只能部分借鑒他們的經驗,針對自己面對的問題作出具體的分析和嘗試。  

內核關鍵部分(Timer、IRQ、Cache、Mem Pages……)的初始化目前暫時沒有比較可靠和可行的優化方案,所以暫不考慮。  

對于上面分析結果中的 2、3 兩項,CELF已有專項的優化方案:“RTCNoSync”和“PresetLPJ”。  

前者通過屏蔽啟動過程中所進行的RTC時鐘同步或者將這一過程放到啟動后進行(視具體應用對時鐘精度的需求而定),實現起來比較容易,但需要為內核打補丁。似乎CELF目前的工作僅僅是去掉了該過程,而沒有實現所提到的“延后”處理RTC時鐘的同步。考慮到這個原因,我的方案中暫時沒有引入這一優化(畢竟它所帶來的時間漂移已經達到了“秒”級),繼續關注中。  

后者是通過在啟動參數中強制指定LPJ值而跳過實際的計算過程,這是基于LPJ值在硬件條件不變的情況下不會變化的考慮。所以在正常啟動后記錄下內核信息中的“Calibrating Delay”數值后就可以在啟動參數中以下面的形式強制指定LPJ值了:

lpj=9600700  

上面分析結果中的 4、5 兩項都是SMP初始化的一部分,因此不在CELF研究的范疇(或許將來會有采用多核的MP4出現?……),只能自力更生了。研究了一下SMP的初始化代碼,發現“Migration Cost”其實也可以像“Calibrating Delay”采用預置的方式跳過校準時間。方法類似,最后在內核啟動參數中增加:  

migration_cost=4000,4000  

而Intel的網卡驅動初始化優化起來就比較麻煩了,雖然也是開源,但讀硬件驅動完全不比讀一般的C代碼,況且建立在如此膚淺理解基礎上的“優化”修改也實在難保萬全。基于可靠性的考慮,我最終在兩次嘗試均告失敗后放棄了這一條路。那么,換一個思維角度,可以借鑒CELF在“ParallelRCScripts”方案中的“并行初始化”思想,將網卡驅動獨立編譯為模塊,放在初始化腳本中與其它模塊和應用同步加載,從而消除Probe阻塞對啟動時間的影響。考慮到應用初始化也可能使用到網絡,而在我們的實際硬件環境中,只有eth0是供應用使用的,因此需要將第一個網口初始化的0.3s時間計算在內。  

除了在我的方案中所遇到的上述各優化點,CELF還提出了一些你可能會感興趣的有特定針對性的專項優化,如:  

ShortIDEDelays - 縮短IDE探測時長(我的應用場景中不包含硬盤,所以用不上)  

KernelXIP - 直接在ROM或Flash中運行內核(考慮到兼容性因素,未采用)  

IDENoProbe - 跳過未連接設備的IDE口  

OptimizeRCScripts - 優化initrd中的linuxrc腳本(我采用了BusyBox更簡潔的linuxrc)  

以及其它一些尚處于設想階段的優化方案,感興趣的朋友可以訪問CELF Developer Wiki了解詳情。  

(4)優化結果  

經過上述專項優化,以及對inittab、rcS腳本的冗余裁減,整個Linux內核的啟動時間從優化前的 6.188s 下降到了最終的 2.016s,如果不包含eth0的初始化,則僅需 1.708s(eth0初始化可以和系統中間件及部分應用加載并行),基本達到了既定目標。與Kexec配合,可以大大降低軟件故障導致的復位時間,有效的提升了產品的可靠性。
本文地址:http://www.qingdxww.cn/thread-28180-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 我們是Microchip
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美日韩在线一区二区三区 | 久久激情综合网 | 国产精彩对白综合视频 | 黄色一级a毛片 | 日本黄色免费片 | 黄色毛片a | 欧美日韩不卡码一区二区三区 | 亚洲人的天堂男人爽爽爽 | 一区二区三区精品 | 亚洲欧美日本另类 | 国产黄片毛片 | 日日舔| 麻豆传煤适当放松一下自己 | 久久国产成人精品麻豆 | 亚洲综合自拍 | 996久久国产精品线观看导航 | 日本-区二区三区免费精品 日本强日本不卡一 | 黄网站色视频免费观看 | 精品毛片免费看 | 免费国产午夜高清在线视频 | 成人亚洲欧美日韩在线观看 | 国产成人亚洲欧美激情 | 国产成a人片在线观看视频 国产产一区二区三区久久毛片国语 | 国产精品国产三级在线高清观看 | 亚洲欧美一二三区 | 精品一区二区三区视频在线观看 | 国产69精品久久久久妇女 | 天堂男人| 农村寡妇一级毛片免费播放 | 久久刺激视频 | 日韩免费播放 | 毛片大片免费看 | 欧美日韩中文字幕一区二区高清 | 狠狠色噜噜狠狠狠狠97不卡 | 国产色视频网站 | 高清成年美女黄网站色大 | 成人青青草 | 九九视频在线免费观看 | 日韩黄在线观看免费视频 | 少妇美女极品美軳人人体 | 家庭教师动漫 |