Menu Close

8.2. 追踪点(Tracepoints)

追踪点可以在 /sys/kernel/debug/ 目录下找到,假设 debugfs 挂载于 /sys/kernel/debug 目录中的标准位置。events 子目录包含所有可以被指定的追踪事件,如果提供了载入的 gfs2 模块,则在每个 GFS2 事件中都有一个 gfs2 子目录。/sys/kernel/debug/tracing/events/gfs2 目录的内容类似如下:

[root@chywoon gfs2]# ls
enable            gfs2_bmap       gfs2_glock_queue         gfs2_log_flush
filter            gfs2_demote_rq  gfs2_glock_state_change  gfs2_pin
gfs2_block_alloc  gfs2_glock_put  gfs2_log_blocks          gfs2_promote

要启用所有 GFS2 追踪点,请输入以下命令:

[root@chywoon gfs2]# echo -n 1 >/sys/kernel/debug/tracing/events/gfs2/enable

要启用特定的追踪点,在每个事件子目录中有一个 enable 文件。filter 文件也是如此,可用于为每个事件或一组事件设置事件过滤器。下面详细解释了各个事件的含义。

追踪点的输出以 ASCII 或二进制格式提供。本附录目前不包含二进制接口。ASCII 接口有两种方式。要列出环缓冲(ring buffer)的当前内容,您可以输入以下命令:

[root@chywoon gfs2]# cat /sys/kernel/debug/tracing/trace

当您在一定时间段内使用长时间运行的过程时,且希望在这些事件进行之后重新查看缓冲区中最新捕获的信息时,这个接口很有用。需要所有输出时,也可以使用另一种接口 /sys/kernel/debug/tracing/trace_pipe。事件发生时会从这个文件中进行读取,这个接口不提供历史数据。两个接口的输出格式是相同,在本附录后续部分对每个 GFS2 事件都有说明。

可以使用名为 trace-cmd 的实用程序来读取追踪点数据。有关这个工具的详情请参考 http://lwn.net/Articles/341902/trace-cmd 实用程序可用方式与 strace 实用程序类似,例如在从不同源收集追踪数据时运行命令。