1. Introduction
- Ftrace is a tracing utility built directly into the Linux kernel.
- Designed to help out developers and designers of systems to find what is going on inside the kernel.
- Below mentioned output is executed in ubuntu 12.04 virtual machine.
2. Build kernel with the following configuration(Ubuntu already Configured)
CONFIG_FUNCTION_GRAPH_TRACER
CONFIG_STACK_TRACER
CONFIG_DYNAMIC_FTRACE
CONFIG_FUNCTION_TRACER
3. Mount the debugfs
#mount -t debugfs nodev /sys/kernel/debug
#mount |grep debugfs
5:none on /sys/kernel/debug type debugfs (rw)
4. Enter in to root shell
$ sudo  -i 
You will be asked for your password, then be given a root shell. In that shell, you can 
cd to /sys/kernel/debug.
5. Sample Execution
# pwd
/sys/kernel/debug/tracing
# cat available_tracers 
blk function_graph mmiotrace wakeup_rt wakeup function nop
# echo function_graph > current_tracer
# cat current_tracer 
function_graph
# cat trace | head -20
# tracer: function_graph
#
# CPU  DURATION                  FUNCTION CALLS
# |     |   |                     |   |   |   |
 0) ! 164785.8 us |      } /* native_safe_halt */
 0) ! 164786.9 us |    } /* default_idle.part.4 */
 0) ! 164787.6 us |  } /* default_idle */
 0)   0.062 us    |  local_touch_nmi();
 0)               |  cpuidle_idle_call() {
 0)   0.094 us    |    cpuidle_get_driver();
 0)   0.690 us    |  }
 0)               |  default_idle() {
 0)               |    default_idle.part.4() {
 0)               |      native_safe_halt() {
 0)   ==========> |
 0)               |        do_IRQ() {
 0)               |          irq_enter() {
 0)               |            rcu_irq_enter() {
 0)   0.231 us    |              rcu_exit_nohz();
 0)   0.995 us    |            }
Continue reading more from Part 2.
http://linuxseekernel.blogspot.com/2014/05/ftrace-kernel-function-tracer-2.html
6. References
1. http://lwn.net/Articles/365835/
2. https://www.kernel.org/doc/Documentation/trace/ftrace.txt
 
No comments:
Post a Comment