新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux系統啟動時間優化方案

        Linux系統啟動時間優化方案

        作者: 時間:2011-05-20 來源:網絡 收藏

        (1)首先是對過程的跟蹤和分析,生成詳細的報告。

        本文引用地址:http://www.104case.com/article/150727.htm

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

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

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

          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操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 威信县| 佛教| 五大连池市| 通道| 尼玛县| 义马市| 前郭尔| 辉县市| 达日县| 大厂| 赞皇县| 铁岭市| 张家港市| 苍山县| 长岛县| 兰溪市| 光泽县| 龙川县| 邵武市| 临江市| 喀喇| 三门峡市| 黑河市| 花莲市| 汉川市| 赤城县| 城口县| 鹤壁市| 方正县| 冕宁县| 商都县| 八宿县| 修水县| 都江堰市| 济宁市| 双峰县| 青川县| 裕民县| 建湖县| 靖西县| 新兴县|