近期工作中遇到的問題如下:
linux啟動後載入根檔案系統時,會停留時間很久,跟人一種宕機的感覺,於是老大要求優化linux的啟動時間。
先第一步做的是給linux核心啟動加上時間戳,方法:配置linux核心
make menuconfig--->kernel hacking-->show
發現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掃瞄 /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自動建立。
linux啟動優化 mdev s
摘自 linux啟動優化 mdev s自從建立節點,啟動時間比較長 標籤 linux 優化 mdev it 分類 工作中遇到的問題 近期工作中遇到的問題如下 linux啟動後載入根檔案系統時,會停留時間很久,跟人一種宕機的感覺,於是老大要求優化linux的啟動時間。先第一步做的是給linux核心啟動...
linux核心啟動的優化
linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是...
linux核心啟動的優化
linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是...