免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1915 | 回复: 0
打印 上一主题 下一主题

使用ftrace抓Linux内核函数调用轨迹 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-02 16:29 |只看该作者 |倒序浏览

                                                                ftrace可以用来分析Linux内核函数调用关系,任务切换等等,应该是从2.6.28就引入内核主线了,但早期的代码可能还没加入像调用函数图等功能.这里以最新的2.6.29.4内核为例来说明.
1. 编译安装
重新编译内核,选择kernel hacking-->Tracker--->选择需要的选项
2. 阅读 Documentation/ftrace.txt看看怎么使用
3. 这个文档 http://lwn.net/Articles/334530/ 描述了函数调用关系图的使用,还没有合进内核主线文档中
4. 使用举例
如果是ubuntu系统,最好先 sudo -i 进入有系统权限的root模式,否则后面用echo的时候不好弄
# mount -t debugfs debugfs /debug
# echo 1 > /debug/tracing/tracing_enabled;
echo function_graph > /debug/tracing/current_tracer;
echo "ddstart" > /debug/tracing/trace_marker;
dd if=/dev/sda of=/dev/null bs=1k count=5000 skip=2000;
echo "ddstop" > /debug/tracing/trace_marker; echo 0 >tracing_enabled
(不用换行,直接输入就行)
然后把生成的trace文件保存下来,可以直接vi查看.
# cat /debug/tracing/trace > /tmp/trace

以下就是dd的一个读的调用关系图
0)    dd-4516     |               |  sys_read() {
0)    dd-4516     |   0.591 us    |    fget_light();
0)    dd-4516     |               |    vfs_read() {
0)    dd-4516     |               |      rw_verify_area() {
0)    dd-4516     |               |        security_file_permission() {
0)    dd-4516     |   0.581 us    |          cap_file_permission();
0)    dd-4516     |   1.738 us    |        }
0)    dd-4516     |   2.905 us    |      }
0)    dd-4516     |               |      do_sync_read() {
0)    dd-4516     |               |        generic_file_aio_read() {
0)    dd-4516     |   0.606 us    |          generic_segment_checks();
0)    dd-4516     |   0.566 us    |          _cond_resched();
0)    dd-4516     |               |          find_get_page() {
0)    dd-4516     |               |          file_read_actor() {
0)    dd-4516     |               |            kmap_atomic() {
0)    dd-4516     |               |              kmap_atomic_prot() {
0)    dd-4516     |   0.626 us    |                page_address();
0)    dd-4516     |   1.844 us    |              }
0)    dd-4516     |   3.031 us    |            }
0)    dd-4516     |   0.997 us    |            __copy_to_user_ll();
0)    dd-4516     |               |            kunmap_atomic() {
0)    dd-4516     |   0.696 us    |              arch_flush_lazy_mmu_mode();
0)    dd-4516     |   1.899 us    |            }
0)    dd-4516     |   8.351 us    |          }
0)    dd-4516     |   0.612 us    |          put_page();
0)    dd-4516     |               |          touch_atime() {
0)    dd-4516     |               |            mnt_want_write() {
0)    dd-4516     |   0.646 us    |              _spin_lock();
0)    dd-4516     |   0.577 us    |              __mnt_is_readonly();
0)    dd-4516     |   7.169 us    |            }
0)    dd-4516     |               |            current_fs_time() {
0)    dd-4516     |   0.661 us    |              current_kernel_time();
0)    dd-4516     |   0.576 us    |              timespec_trunc();
0)    dd-4516     |   2.996 us    |            }
0)    dd-4516     |               |            mnt_drop_write() {
0)    dd-4516     |   0.616 us    |              _spin_lock();
0)    dd-4516     |   1.814 us    |            }
0)    dd-4516     | + 14.313 us   |          }
0)    dd-4516     | + 29.347 us   |        }
0)    dd-4516     | + 30.540 us   |      }
0)    dd-4516     |               |      dnotify_parent() {
0)    dd-4516     |   0.591 us    |        _spin_lock();
0)    dd-4516     |   1.773 us    |      }
0)    dd-4516     |   0.581 us    |      inotify_dentry_parent_queue_event();
0)    dd-4516     |   0.596 us    |      inotify_inode_queue_event();
0)    dd-4516     | + 39.913 us   |    }
0)    dd-4516     | + 42.287 us   |  }
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93140/showart_1952645.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP