1. 程式人生 > >Linux下啟動時間優化專題

Linux下啟動時間優化專題

1. 過往優化總結

陸陸續續在Linux進行啟動時間優化,之前有兩份文件,分別從核心和使用者空間兩個方向進行了優化。

簡單總結如下:

Kernel:基於dmesg,分析initcall_debug相關log,使用analyze_boot.py工具進行分析。

System:在支援Busybox的bootchartd的環境下(包括Android),使用pybootchartgui進行分析。對Ubuntu平臺,直接使用systemd-analyze進行分析。

2. 還有哪些優化方法?還有哪些工具?

之前做的這些工作,似乎都就具體問題而進行。但是沒有進行總結歸納,形成方法論來指導將來的工作。

2.1 預載入技術

預載入技術有;prealod相關幫助文件preload.pdf,作者官網http://behdad.org/,preload code

preload作為守護程序,記錄程式的使用統計資訊,或者經常使用的檔案;在計算機空閒的時候,將其載入到RAM中。這樣在程式或檔案被使用的時候執行速度就會非常快。

preload長和prelink配合使用。

 正如所有的優化從量化開始,Analyzing the boot process分析有systemd-analyze、systemd-bootchart、bootchart2(pybootchartgui)三種方法

優化的步驟有:定製自己的Kernel;Initramfs啟動;提前啟動某些服務(systemctl enalbe xxxx);儘量少的Log輸出;suspend到RAM而不是Disk。

 Boot Time是使用者開啟裝置的第一觀感,涉及到很重要的使用者體驗。此WiKi基本上算是Boot Time的

參考資料:

boot流程從BootROM->Bootloader->Kernel->Android的過程,以及如何度量每個階段的時間。

如何修改init使能BOOTCHART,基於bootchart.tgz生成圖表。在圖表中檢視每個程序的耗時,作出針對修改。

介紹了Android使用者空間啟動優化。

Android下使用Bootchart的教程,需要修改init支援。

介紹了Firmware、kernel、user space,重點分析了Android bootup流程,主要在使用者空間。

裡面的關於Kernel和Android User Space的優化點值得重視。

Bootchart的官網,介紹了Bootchart工具,以及Bootchart分支:Timechart、Bootchart-lite、ubootchart、EmBootchart、Busybox。

泛泛的介紹了Android中常用的測量啟動時間的工具和方法。

Message loggers: grabserial, printk times, logcat.

Bootchart, strace, ftrace, method tracer…

通過grabserial去獲取log資訊,分析bootloader、kernel、user space耗時。

基於systemd進行啟動時間優化,一些方法值得參考。如果系統使用systemd,非常方便。

使能printk.time=1和initcall_debug,然後獲取dmesg.log資訊。

使用bootgraph.pl、FlameGraph、gnuplot、histogram.sh進行分析。

相關推薦

Linux啟動時間優化專題

1. 過往優化總結 陸陸續續在Linux進行啟動時間優化,之前有兩份文件,分別從核心和使用者空間兩個方向進行了優化。 簡單總結如下: Kernel:基於dmesg,分析initcall_debug相關log,使用analyze_boot.py工具進行分析。 System:在支援Busybox的bootcha

嵌入式 Linux 啟動時間優化

1 簡介 本章包含的話題有啟動時間的測量、分析、人因工程(human factors)、初始化技術和優化技巧等。 產品花在啟動方面的時間直接影響終端使用者對該產品的第一印象。 一個消費電子裝置不管如何引人注目或者設計得怎麼好,裝置從關機狀態到可互動的使用狀態所需的時間對於獲得正

imx6q LINUX 啟動時間優化

1 u-boot的優化   1 首先去掉無關緊要的串列埠資訊   2 將CONFIG_BOOTDELAY改為0   3 去掉一些不用的驅動,例如SPI、USB、HDMI等等   4 關閉CONFIG_CMD_NET   5 U-BOOT會重複初始化M

嵌入式linux啟動時間優化

嵌入式系統的啟動速度因裝置的效能和程式碼的質量而異,但總體而言,從消費者的角度考慮,系統的啟動速度肯定是越快越好。因此,對嵌入式系統進行效能優化,加快裝置的啟動時間為專案後期必須進行的一項工作。需要注意的是:嵌入式Linux裝置的優化不是一蹴而就的,而是一個不斷優化,不斷改進的過程

嵌入式Linux-啟動時間優化

由於物聯網專案中需要對裝置的啟動時間有快速啟動的要求,目前的節點嵌入式linux啟動時間是28秒左右,現在有了一點自由的時間,決定對這個東西的啟動速度做一下優化,看看能提高多少.    把過程記錄以下,供以後學習使用。   &

linux啟動tomcat服務的命令是什麽

錯誤 tomcat 控制臺輸出 out 目錄 打開 客戶端 oca linux下 Linux下tomcat服務的啟動、關閉與錯誤跟蹤,使用PuTTy遠程連接到服務器以後,通常通過以下幾種方式啟動關閉tomcat服務:切換到tomcat主目錄下的bin目錄(cd usr/lo

Linuxntp時間同步

span ntpd usr pan style root用戶 linu date命令 軟件 在root用戶下執行 先安裝同步時間軟件,每臺機器執行 yum install -y ntp 然後執行以下命令: crontab -e */10 * * * * /usr/sbin/

linux啟動mysql提示:Timeout error occurred trying to start MySQL Daemon

任務 自帶 lean linu 使用 custom 方式 files 一個 啟動 mysqld 時經過很長時間顯示 Timeout error occurred trying to start MySQL Daemon. 終端進入 mysql 時顯示 ERROR 2002

linux時間修改

linux下的時間修改linux系統有兩個時間,一個是系統時間,另一個是cmos時間。需要把兩個時間都調對!方法一:修改系統時間(1).用root登錄,用date命令調好系統時間date -s "2017/11/10 10:20:00" 把系統時間改為17年11月10號10點20分這個修改在系統重啟後就失效了

linux 啟動tomca慢問題

file inux random tom 問題 gpo ava post export 編輯文件vim /etc/profile 後面加入一句:export JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"設置立即生效(

Linux 啟動兩個tomcat

not link class 有一個 自己的 上啟 file 沒有 red 閑來無事學習nginx,想要配置個load balance。可是先決條件是:得有兩個web容器。兩個電腦是不用想了。只能想辦法在一個機器上啟動兩個tomcat。原以為挺簡單的,只要改改port就

linux 啟動服務

是我 sof true 程序 權限 pytho 項目 管理 sudo 首先我們用Fz 上傳項目到指定的服務器目錄下。 一般鏈接的端口為22 然後我們鏈接到服務器,打開Putty.exe 輸入賬號密碼 然後要獲取權限 sudo su 然後cd 到我們要

linux時間同步和時間管理

一、chronyd 服務 該服務是時間同步服務,類似與windows中的自動與網路時間同步的功能,在linux中這個時間同步是確定客戶主機使用的時間同步服務的,在chronyd.service 服務中載入時間源地址,配置檔案在/etc/chrony.conf 1.首先需要傳送方編輯配置檔案,第 第2

Linux啟動Oracle服務

Linux下啟動Oracle服務 在 Linux下啟動Oracle服務需要下面兩步: 啟動lsnrctl監聽。 啟動資料庫例項。 啟動lsnrctl監聽 首先以oracle使用者登入系統 進入資料庫目錄 $ cd /home/oracle/ap

Linux啟動停止檢視殺死Tomcat程序

啟動 一般是執行tomcat/bin/startup.sh,sh tomcat/bin/startup.sh 停止 一般是執行 sh tomcat/bin/shutdown.sh指令碼命令 檢視 執行ps -ef |grep tomcat 輸出如下 sun 5144

Linux啟動,停止,重啟Nginx、Mysql、PHP

LINUX啟動Nginx的命令: 一、查詢是否啟動 [[email protected] php-fpm.d]# ps -ef | grep nginx root 25225 1 0 19:26 ? 00:00:00 nginx: master process

linux 單調時間(另附牆上時間、CPU時間

1、單調時間     linux下編寫應用程式時,涉及到時間獲取有多個函式可以選擇,這些常用獲取時間函式之間的差異: 《1》、 time 該函式返回自1970來的秒數,精度過低; 《2》、gettimeofday   該函式返回自1970年以來的秒數和微秒數,精度足夠,符合一般場景的使用

linux啟動tomcat時報錯 Tomcat Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

一眼就能看出來是jdk的環境有問題,但是用了這麼久的jdk一直都配置的好好的,怎麼一到Tomcat上就這麼矯情了。 最後查解決方案,原來是我的jdk從官網直接下載的,雖然我修改了java_home,但不太智慧的tomcat仍然沒有自動識別出java_home路徑。 linux解決方法: 編輯

Qt linux設定時間

void PAGEHUMITURE::adjustdate(int y,int m,int day,int h,int mi,int s) {     time_t t;     struct tm nowtime;     nowtime.tm_sec = s;     n

tomcat10在linux啟動報錯,找不到jre

今天買了阿里雲伺服器,就興致沖沖部署開發環境。可是前面安裝mysql蠻順的,到了裝tomcat的時候,啟動後卻報錯了: 原因是我安裝的jdk版本是10,.0.2,自己玩的嗎,就用最新的去測試。 但是配置環境變數,我改的是/etc/profile,改動如下: JAVA_H