trace 工具的介绍和使用
环境 AIX 操作系统
问题 Trace 主要用来跟踪和记录系统的内核(Kernel)、内核扩展程序(Kernel Extension)和用户程序
(User Program),尤其是对系统调用(System Call),内核服务(Kernel Service)和中断处理(Interrupt
handlers)进行详细的记录。它的记录单位是微秒,并按照时间的顺序记录各个事件。由于 Trace
记录中所涉及的是操作系统底层事件,因此需要对 AIX 的内核、系统调用以及中断处理非常了
解的人来解读,因此对于普通的系统管理员最重要的是知道如何去收集 Trace 的信息。
解答 1. Trace 的工作模式
Trace 命令有三种工作模式 -- 默认模式、单一模式和循环模式。默认模式是将 Trace 数据直接
写到磁盘上,而单一模式和循环模式则都是先将 Trace 数据写到内存的缓冲区,待 trace 进程终
止后再写回到磁盘;不同的是,单一模式是当缓冲区满了后,trace 进程会自动停止,并将 Trace
数据写到磁盘,而在循环模式下,当缓冲区满后,trace 进程不会停止,缓冲区会被覆盖并循环
使用,只有输入“trcstop”命令后,trace 进程才停止,并将 Trace 数据写到磁盘。
2. Trace 的启动和停止
启动 trace 的方法有很多种,用户可参考“man trace”来获得帮助。
这里举一个最常用的收集 trace 的命令作为例子:trace -a -l -T2000000 -L4000000 -o trace.out
(2000000 和 4000000 只是一个例子)
-a : 表示 trace 进程在后台运行(异步运行)
-l :表示 trace 工作在循环模式
-o :指定 trace 输出文件的目录和文件名,默认的输出文件名为 /var/adm/ras/trcfile
-T :表示缓冲区的大小,单位为
byte,默认值为 128KB。
-L :表示写到磁盘上的 trace 输出文件的大小,单位为 byte,默认值为 1MB。
在循环模式下,trace 输出文件的大小应最少是缓冲区大小的一倍;而在单一模式下,trace 输出
文件的大小应最少和缓冲区大小相等。 停止 trace 的方法很简单,只需要运行“trcstop”命令即可。
注意:
1. trace 进程对系统的性能有比较大的影响,因此不要长时间的让 trace 保持在运行状态。
2. trace 所收集的数据包含了 trace 进程启动和停止之间的这段时间内所有的相关信息。所以,如
果用户是想收集某个命令的 trace 信息,应当采用以下这种方式:
trace -a -l ; command ; trcstop (command 表示的是用户需要执行的命令)
3. 分析 trace 数据所需要的相关文件
当用户自己收集了 trace 数据后,除了需要将 trace 输出文件发给 IBM 的工程师以外,还需要运
行 /usr/bin/trcnm -a > trcnm.out 命令,然后将 trcnm.out 和 /etc/trcfmt 文件一并附上。