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
实用程序类似,例如在从不同源收集追踪数据时运行命令。