首页 > 代码库 > ftrace.txt

ftrace.txt

                ftrace - 函数跟踪器
                ========================

Copyright 2008 Red Hat Inc.
   Author:   Steven Rostedt <srostedt@redhat.com>
  License:   The GNU Free Documentation License, Version 1.2
               (dual licensed under the GPL v2)
Reviewers:   Elias Oltmanns, Randy Dunlap, Andrew Morton,
             John Kacur, and David Teigland.
Written for: 2.6.28-rc2
Updated for: 3.10
翻译:王飞   wangfei_cn@yeah.net
校对:王飞   wangfei_cn@yeah.net

简介
---

Ftrace做为一个kernel内部的跟踪器,其设计目的是让内核开发人员以及系统设计人员了解linux内核的运
行时行为,在用户态就可以做故障诊断以及性能调优等工作。

尽管ftrace被大家当作是一个典型的函数跟踪器,实际上它是由一组跟踪工具组成的一个框架。比如可以利用
跟踪中断关闭和打开的延迟来诊断其间到底发生了什么。同样也可以分析抢占以及进程的调度行为,比如睡眠
唤醒。

Ftrace的一个大众的用法是它的事件跟踪。遍及内核,有数百个静态的事件跟踪点,通过debugfs我们可以
使能这些事件跟踪,以便搞清楚内核子系统到底做了什么。


实现细节
------

请参考ftrace-design.txt以获得更多细节。


文件系统
------

用户可以通过debugfs接口来控制和使用ftrace,并且同样从debugfs得到结果。

当我们编译内核时把debugfs编译选项打开后(使能ftrace功能后会自动打开),会自动创建目录
sys/kernel/debug,我们可以通过编辑/etc/fstab文件来自动挂在debugfs:

 debugfs       /sys/kernel/debug          debugfs defaults        0       0

或者我们可以在运行时手动mount:

 mount -t debugfs nodev /sys/kernel/debug

为了快速访问该目录,你可以建立一个软链接:

 ln -s /sys/kernel/debug /debug

当你编译内核时使能了任何ftrace的子选项时,同样会在debugfs目录下建立一个叫tracing的目录,此文
余下部分假定读者已经处在该目录(cd /sys/kernel/debug/tracing),并且我们的注意力集中在该目
录上,不会关注别的内容。

就是这样!(假设你的kernel已经打开了ftrace选项)

在挂载debugfs之后,你可以看到有一个“tracing”目录,这个目录包含了ftrace的控制和输出的文件节点。
这里对一些关键文件进行了解释:

  注意:所有表示时间的值都是指微秒。

    current_tracer:

    显示当前配置的跟踪器。