ftrace - 函数跟踪器
========================
Copyright 2008 Red Hat Inc.
Author: Steven Rostedt <[email protected]>
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
翻译:王飞 [email protected]
校对:王飞 [email protected]
简介
---
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:
显示当前配置的跟踪器。