Bootchart (简体中文)

From ArchWiki
Revision as of 08:06, 2 December 2012 by Yangsheng6810 (talk | contribs) (更新了bootchart软件包的位置)
Jump to navigation Jump to search

Bootchart 是一个分析Linux启动流程的方便工具,结果可以用来优化启动速度。包含 bootchartd 服务和负责生成分析结果的 bootchart-render 两部分。

安装Bootchart

bootchart可以在源里找到.

注意: 另外一个可供选择的是 bootchart2, 在2005年以后仍在活跃开发. 它使用python来生成最终的图表而不是JVM.

运行Bootchart

要使bootchart运行,你需要将他添加到引导器的初始化进程选项,或者手动在init脚本(通常是rc.sysinit)中手动添加。不过需要注意的是,如果你是手动添加到init脚本的,那么也要手动停止它,总之,这种情况需要特别留意!

启动引导器设置

下面我们介绍常用的方法,即将原有引导选项复制一份,并在内核项后面添加

Template error: are you trying to use the = sign? Visit Help:Template#Escape template-breaking characters for workarounds.

. 方法参阅kernel parameters. 然后通过启动引导器引导bootchart。这样bootchart会在登录提示符出现的时候自动停止。

rc.sysinit脚本设置

这种方法有一定的危险性(可能导致原有系统无法启动),所以除非前一种方法失败,否则不要用这种方法。采用这种方式,不光是每次都要手动停止bootchart(否则很快就会占满硬件资源),而且每次开机都会运行一次,而且以后每次软件包升级 /etc/rc.sysinit的时候,这些设置都会被覆盖掉。

另一方面,这种方式是可以让你看到登录后所发生的一些东西的。

编辑/etc/rc.sysinit脚本

先将下面这一行添加到/etc/rc.sysinit

/sbin/bootchartd start

这一行不宜太靠前,否则这部分出问题会导致系统无法启动。当然也不宜太靠后,因为他之前的项目都无法观察得到。

我们推荐把他放在配置系统时钟行的前面。

找到如下行:

stat_busy "Configuring System Clock"

将下面这一行添加到其前面:

/sbin/bootchartd start

登录后关闭bootchartd服务

这种方式一定记住,在登录后停止bootchartd服务。 你可以以管理员帐户执行:

/sbin/bootchartd stop

也可以用sudo通过下面的命令来执行:

sudo /sbin/bootchartd stop

生成分析结果图表

你可以通过运行下面的命令来生成分析结果图:

bootchart-render

确保运行命令的目录有写权限,程序就会生成一个名为'bootchart.png'的图像,这就是分析结果图。

你需要事先安装Java运行环境并且在此之前设置正确。

问题解决

Bootchart-render 如果无法生成 'bootchart.png' 图片并显示如下错误信息:

/var/log/bootchart.tgz not found

主要原因是 bootchartd 无法检测到启动过程何时停止。例如使用非 KDM 或 GDM 的启动管理器如 SLIM 或 entrance 时会发生这个问题。可以打开 /sbin/bootchartd 脚本并将这些程序加到 exit_proc 变量中:

# The processes we have to wait for
local exit_proc="gdmgreeter gdm-binary kdm_greet kdm slim"

如果没有使用启动管理器,修改 exit_proc 变量为:

# The processes we have to wait for
local exit_proc="login"

参考资料