裝置啟動時間往往是專案立項時的一項重要技術指標。快速的啟動時間意味著裝置宕機時間的縮短,系統的快速恢復,也能改善使用者使用時的體驗感受,是一項重要的市場競爭力。
優化啟動時間之前,我們首先要了解下我們裝置的主要啟動流程,如下圖所述,裝置啟動流程主要包含:硬體、bootloader
、作業系統和應用程式
4個部分。
硬體部分包括:
bootloader(此處為
uboot
)包括:
作業系統(此處為linux
)包括:
應用程式包括:
另外,在著手優化啟動時間之前,我們要對現狀有所了解,以幫助我們對啟動的各個環節進行檢查、度量。
首先我們要開啟uboot
和linux kernel
的除錯列印開關,保證列印列印到串列埠。
修改uboot
配置,如下:
//#define config_silent_console
#define debug
在uboot shell
或者cmdline
中中設定
linux kernel
列印級別
setenv loglevel 7
然後通過下面的幾種方法對啟動時間進行度量。
記錄每條列印的列印時間戳
telnet 192.166.100.3 10006 | ts "%h:%m:%.s"
telnet 192.166.100.3 10006 | while read pong; do echo "$(date +"%t.%n"): $pong"; done
記錄每條列印的相對時間戳
telnet 192.166.100.3 10006 | ts -i "%h:%m:%.s"
針對linux kernel
,還可以配置
config_printk_time=y
使能核心的日誌時間戳功能。
本文只討論bootloader
和kernel
部分的優化方法。
背景介紹:
本裝置的引導方式為uboot+linux,os
映象大小為31mb,儲存在版本
nor flash
上,flash
檔案系統為
jffs2
,核心映象採用
gzip
方式壓縮。優化前裝置啟動時間為
186s
左右,專案要求控制在
90s以內。
adb獲取啟動時間
coding utf 8 import subprocess import time thistime是一連串啟動activity的最後乙個activity的啟動耗時。totaltime是新應用啟動的耗時,包括新程序的啟動和activity的啟動,但不包括前乙個應用activity pause的耗時...
jMeter 執行緒啟動時間
jmeter裡設定執行緒數量為5 其實這是因為我設定的ramp up period引數在起作用 決定多長時間啟動所有執行緒。如果使用10個執行緒,ramp up period是100秒,那麼jmeter用100秒使所有10個執行緒啟動並執行。每個執行緒會在上乙個執行緒啟動後10秒 100 10 啟動...
linux啟動時間同步
時間同步的方式 找乙個機器,作為時間伺服器,所有的機器與這台集群時間進行定時的同步,比如,每隔十分鐘,同步一次時間。以hadoop102 hadoop103 hadoop104 三颱機器為集群 hadoop102為namenode節點 具體配置時間伺服器的操作 1.檢查是否安裝ntp 必須root去...