linux啟動時間優化措施(4)

keep study發表於2020-11-16

在我們進行linux系統優化時,可以從以下幾方面入手

1、如果有硬性的啟動時間要求,比如開機時間要求達到10s以內,那麼就必須要硬體上面支援。比如使用一般的

       nand flash想達到那麼快的速度那是不可能,至少要20秒以上,所以這個時候,就必須要使用inand來實現。

 

2、當硬體確定支援啟動時間要求後,軟體方面可以由以下方面入手

1)bootloader的啟動,由於bootloader在啟動過程中會有判斷是否進入命令模式,這個時候,可以把這個倒數的時

    間去掉(建議最終版本的時候才這麼做,因為方便使用fastboot進行韌體燒寫),或者減少

2)bootloader階段不要使用LCD,因為本身這個階段啟動的時間在幾百ms左右,所以沒必要使用LCD了

3)kernel階段,主要耗時點在於模組的載入,所以要找到每個模組載入的時間,那麼就可以確定是那些模組耗時了

    如何找呢? 那就需要把各驅動模組載入時間列印出來咯。

    在uboot的CONFIG_BOOTARGS增加printk.time=y initcall_debug

 

  initcall_debug列印核心載入的各個模組資訊,通過這個選項可以看到核心載入各個模組的順序,核心載入了

哪些模組,從資訊中 可以看到, 如果您的核心系統沒有必要使用某個模組,儘量不要載入進去,這樣即可節約核心

佔用的儲存空間,也可以加快核心的啟動 過程。如果有模組是使用模擬spi或者i2c的,那麼可以考慮減少延時時間等。

 

      另外,還可以新增lpj的值,如lpj=1949696,可以減少核心計算lpj的時間,lpj可以直接從串列埠列印資訊獲取。

 

1. 首先修改kernel的bootargs,在bootargs中新增以下內容:

  1. printk.time=y  initcall_debug

 我使用的bootargs修改後如下:

  1. setenv bootargs "root=/dev/mtdblock2 rootfstype=yaffs2 init=/init console=ttySAC2,115200printk.time=y initcall_debug"

 這樣kernel在啟動時,將會列印出每個模組的啟動耗時:

   printk.time=y
代表核心列印資訊含有時間戳,如何您的核心沒有配置:

  1.   Kernel hacking
  2.        --->Show
    timing information on printks

    可以在bootargs 增加printk.time=y
核心引數,列印時間資訊,如果配置瞭如上的選項,可以不增加printk.time=y引數。

 
  printk.time=y 適用於不需要重新編譯核心即可檢視啟動時間資訊。

 

相關文章