Ubuntu12.10啟動時間調查 最近Ubuntu系統使用了一段時間以後,發現系統啟動變慢,剛裝完系統的時候啟動大概半分鐘,現在發現啟動時間感覺快1分鐘了,於是決定調查一下。 首先Google一下,發現網上希望加速Ubuntu啟動的文章也不少,首先推薦的是一個叫bootchart的工具,它可以記錄Ubuntu系統的啟動過程,還提供圖形化的顯示,於是就安裝一個: dev@devhost:~$ sudo apt-get install bootchart 裝完以後重啟機器 系統重啟以後到 /var/log/bootchart/下查看,發現有一個.gz檔案和.png圖片,.gz檔案解開後發現是對disk,process等統計,資料比較抽象,不好懂,於是開啟.png檔案查看: 大體上可以看出,啟動過程有三個主要的部分: 1) 0~15秒:是IO密集,CPU相對閒置階段;從下面對應的進程描述來看又mountall,fsck這樣的東東,估計是核心在mount檔案系統和磁碟檢測等; 2) 15~35秒:是IO空閑,CPU也閒置階段;在下面看到主要是ifup,bridge,ifconfig這樣的東西,估計是在做跟網路相關的東西,這段時間居然要20秒(說明一下,我是在筆記本上做的,還有無線等裝置); 3) 35~55秒:是IO開始又變得密集,CPU也密集的階段,這階段出現的東西很多,有網路管理服務,登入服務和案頭等等 同時,我又用dmesg命令看了一下,從時間上基本可以印證上述3個階段做的事情: [ 2.275412] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null) [ 11.478634] Adding 4083708k swap on /dev/sda5. Priority:-1 extents:1 across:4083708k [ 11.526044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 11.639571] udevd[479]: starting version 175 [ 11.762504] lp: driver loaded but no devices found [ 12.072290] EXT4-fs (sda7): re-mounted. Opts: errors=remount-ro 第2秒倒12秒跟mount有關; [ 14.814577] br0: port 1(eth0) entered listening state [ 14.814587] br0: port 1(eth0) entered listening state [ 23.797215] br0: port 1(eth0) entered learning state [ 32.800776] br0: topology change detected, propagating [ 32.800805] br0: port 1(eth0) entered forwarding state 第14秒倒32秒跟網路又關,而且是跟我設定的br0(橋接器,我用來實驗虛擬機器網路的)有關。 於是,我又暫時去掉了橋接器,再次啟動後發現第2階段的時間如下: [ 11.526044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready … [ 16.317051] r8169 0000:04:00.0: >eth0: link up 也就是說不用橋接器,網路起來秩序要不到5秒鐘。 因此我最近Ubuntu系統啟動顯然是由於設定了橋接器造成的。 另外,還瞭解到,如果需要進一步縮減啟動時間,那麼: 1. 使用SSD硬碟; 剩下的為了減少第1階段和第3階段IO密集型的操作,主要瓶頸在disk的IO讀寫上,因此只有更換SSD硬碟才有好的效果; 2. 可以安裝 bum工具來管理服務,禁用一些不需要的服務(但是要小心,萬一禁掉一些系統必須的服務,可能會導致系統不能啟動)。