linux啟動優化 mdev s

2021-08-09 06:26:35 字數 1389 閱讀 2500

摘自:

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

標籤: linux 優化 mdev it

分類: 工作中遇到的問題

近期工作中遇到的問題如下:

linux啟動後載入根檔案系統時,會停留時間很久,跟人一種宕機的感覺,於是老大要求優化linux的啟動時間。

先第一步做的是給linux核心啟動加上時間戳,方法:配置linux核心

發現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啟動後載入根檔案系統時,會停留時間很久,跟人一種宕機的感覺,於是老大要求優化linux的啟動時間。先第一步做的是給linux核心啟動加上時間戳,方法 配置linux核心 make menuconfig kernel hacking show 發現linux核心啟動...

linux核心啟動的優化

linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是...

linux核心啟動的優化

linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是...