9.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
工具的使用方式类似,例如在从各种源收集追踪数据时运行命令。