挑戰啓動極速(2)----初探

本博客原創文章屬本人lurker0ster所有,歡迎轉載。
轉載時需同意以下條件:
1. 必須保持版權信息,以及文章出處http://blog.csdn.net/lurker0ster/
2. 不準演繹,修改,必須完整轉載全部內容。

===================分割線====================

       其實在嵌入式領域,快速啓動並不是太難的事情。比如Technologic Systems【1】提供的linux方案,啓動時間就可以精簡到1.1s。

       在PC領域也經常可以看到這種系統的影子,其中一個例子就是所謂的快速BIOS。利用小型linux整合到BIOS flash中,使得不用啓動到windows就可以瀏覽網頁和收發郵件,比如Hyperspace,華碩的ExpressGate。但是這種系統通常不能輕易地擴展,比如添加新的程序,較難保存用戶數據等等,同時由於大小的限制沒法發揮出硬件全部的性能。【6】

      快速啓動其實是個很久的話題。現階段已經積累了不少解決方案來實現這一目標。比如readahead技術,通過預讀取磁盤的內容來減少io等待時間;異步調用驅動【2】以達到並行初始化的目的;利用C程序實現init腳本技術,減少解析時間【5】;利用snapshot-boot的方法快速恢復鏡像來替代啓動【3】;利用LZO壓縮算法來替代傳統的GZIP內核壓縮算法,以增加7%大小的代價提高解壓速度到原來的兩倍【8】;預鏈接減少全局符號解析等等技術。

      在深入涉及到該話題之前,我們需要明白一件事:就是網上各種優化方法的測量標準是存在不同的。在直接比較各種性能數據之前,必須搞清楚各自測試的標準。以測試起始點爲例,嵌入式系統通常是以上電爲開始,因爲BIOS都是可控的,很方便就可以加入測試代碼。而一般的PC啓動測試,是以BIOS啓動結束或者Bootloader啓動結束爲開始點。

      而對於測試的終點,一般是以IO空閒爲標準,就是磁盤不再頻繁地讀寫。這裏要提一下windows的啓動測試。一般windows的啓動測試是以看到桌面爲結束,真實的情況是通常這個時候後臺服務還在啓動,CPU很忙以至於根本沒法啓動大一點的程序。MS通過這種差邊球的宣傳來引導消費者,使大家覺得新系統很快。比如WIN7 的啓動時間據網上資料,最快可以在11s進入桌面【8】。而如果以IO空閒爲標準的話,WIN7是1分34秒,Vista是1分06秒【9】。

      爲了避免對這標準無意思地爭辯,我這次優化的結果會以兩種標準給出(兩種測試介紹點)。測試開始點選在Bootloader開始,再早的BIOS階段我沒法控制只能放棄。
        
參考文獻:

  1. 1.http://www.embeddedarm.com/software/arm-linux-fastboot-ts7400.php
  2. 2.http://lkml.org/lkml/2009/1/4/155
    3.http://www.linuxinsight.com/ols2006_improving_linux_startup_time_using_software_resume_and_other_techniques.html
    4.http://www.lineo.co.jp/products-services/services/warp.html
  3. 5.http://archinit.mupuf.org/
    6.http://www.zdnet.com.tw/print/?id=20136131&type=
    7.http://groups.google.com/group/linux.kernel/browse_thread/thread/f0b87c39b4e44f6b/320ba4731fa0330a?hl=zh-CN&lnk=gst&q=fastboot#320ba4731fa0330a
  4. 8.http://school.zzit.com.cn/system/win7/20090907/216408.html
  5. 9.http://www.cnetnews.com.cn/2009/1009/1477921.shtml
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章