linux啓動優化:mdev -s

摘自:http://blog.sina.com.cn/s/blog_7d7e9d0f0101lmjd.html

linux啓動優化:mdev -s自從創建節點,啓動時間比較長

標籤: linux 優化 mdev it 分類: 工作中遇到的問題
轉載請說明出處:http://control.blog.sina.com.cn/admin/article/article_add.php
近期工作中遇到的問題如下:
    linux啓動後加載根文件系統時,會停留時間很久,跟人一種死機的感覺,於是老大要求優化linux的啓動時間。
    先第一步做的是給linux內核啓動加上時間戳,方法:配置linux內核
make menuconfig--->Kernel hacking-->show timing information on printks選中即可,重新編譯內核下載。
     發現linux內核啓動的時間是可以接受的在3s左右,主要時間是在根文件系統的掛在出停留時間比較久,於是下面就把中心放在根文件系統的優化上。
 
      linux內核啓動的最後是掛在根文件系統,打印信息如下:
[    3.810000] Failed to execute /init.  Attempting defaults...執行到這時明顯逗留時間比較長,大概有5s左右, 有這裏我們想到 系統啓動後 自動加載 /etc/init.d/rcs 打開rcs,在開頭加上一個打印語句echo "*******test0****",
用來驗證,保存重啓,神奇的發現Failed to execute /init.  Attempting defaults...之後緊接着出現*******test0****,這個充分說明了,問題出現在/etc/init.d/rcs文件中,我在該文件中(由於文件不大)我每條指令下加一個打印輸出語句echo "*******test1****"(一次增加)。最後終於找到最耗時間的地方是/sbin/mdev -s,下面的問題就是如何優化它。
     我們首先要了解一下mdev -s自動創建設備節點的原理和方法:請參考這篇文章
http://blog.csdn.net/hugerat/article/details/3437099
mdev掃描 /sys/class 和/sys/block中所有的類設備目錄,如果在目錄中含有名爲“dev”的文件,且文件中包含的是設備號,則mdev就利用這些信息爲這個設備在/dev下創建設備節點文件。
熱插拔事件:由於啓動時運行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那麼當有熱插拔事件產生時,內核就會調用位於/sbin目錄的mdev。這時mdev通過環境變量中的 ACTION 和DEVPATH,(這兩個變量是系統自帶的)來確定此次熱插拔事件的動作以及影響了/sys中的那個目錄。接着會看看這個目錄中是否有“dev”的屬性文件,如果有就利用這些信息爲這個設備在/dev 下創建設備節點文件。
          由於我們做的產品是在linux掛在文件系統後直接運行我們的應用程序(一直),所以我們boss希望我們的應用界面儘可能早的出現,我們的應用程序啓動是在文件系統下/etc/init.d/rcS中的最後添加的啓動腳本。但是mdev -s出現的必須比較早,如果放在應用程序後面,會造成設備節點沒創建而導致應用程序的不正常運行,但是應用放在後面吧,有啓動的較晚,(由於mdev自動創建節點比較耗時,前面已經說過),那如何解決這個問題呢?
         解決辦法:
         最簡單的方式是我們應用必須用的設備節點在前面手工創建(還是在rcS啓動腳本里面),對於其他的可以放在我們的應用啓動後在用medv -s自動創建。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章