转自 http://www.lemote.com/bbs/viewthread.php?tid=22213&extra=&page=1
龙芯上的内核函数跟踪工具ftrace
from: http://oss.lzu.edu.cn/blog/blog.php?do_showone/tid_2060.html
我们有很多可以跟踪应用程序函数执行过程和调用关系的工具,诸如strace, calltree, gprof等,
更多的工具见我的另外一篇博客:
《各类分析函数调用关系图的工具》
http://oss.lzu.edu.cn/blog/blog.php?/do_showone/tid_1636.html
但是,能够跟踪内核函数执行过程和调用关系的却不是很多,典型的有kft,systemtap等,更多相关工具见这里:
http://lwn.net/Articles/291091/
而这些内核跟踪工具大多是跟平台相关的,所以能够直接在龙芯上用的也有限,不过我最近刚把kft移植到loongson2f上,
可惜kft至今还没有进入mainline kernel,所以只能以补丁的形式发布在这里了:
http://oss.lzu.edu.cn/blog/blog.php?do_showone/tid_2027.html
不过目前只支持32bit哦,感兴趣的话,可以把我发在上面帖子里头的代码下载下去弄一下64bit的,
64bit的主要区别是地址长度处理的问题,弄起来应该问题不大。
如果想要使用更眩的内核函数跟踪工具,那么强烈建议你用ftrace,它不仅功能强大,
而且已经进入了mainline kernel,关于它的介绍看这里:
http://lwn.net/Articles/322666/
前些天刚把它移植到loongson2f上的,在qemu/malta上也测试过,支持32bit/64bit,支持小端和大端。
昨天刚把它迁移到最新的linux-2.6.29上,感兴趣的话就开始你的内核函数跟踪历程吧。
为什么要跟踪内核的函数执行过程呢?
1、学习和研究内核,结合一些内核相关书籍分析和研究Linux内核。
2、优化内核,让Linux内核跑得更快!
ftrace for mips很有可能会被集成到linux-2.6.29的stable版或者后续的linux-2.6.30中~~
我们有很多可以跟踪应用程序函数执行过程和调用关系的工具,诸如strace, calltree, gprof等,
更多的工具见我的另外一篇博客:
《各类分析函数调用关系图的工具》
http://oss.lzu.edu.cn/blog/blog.php?/do_showone/tid_1636.html
但是,能够跟踪内核函数执行过程和调用关系的却不是很多,典型的有kft,systemtap等,更多相关工具见这里:
http://lwn.net/Articles/291091/
而这些内核跟踪工具大多是跟平台相关的,所以能够直接在龙芯上用的也有限,不过我最近刚把kft移植到loongson2f上,
可惜kft至今还没有进入mainline kernel,所以只能以补丁的形式发布在这里了:
http://oss.lzu.edu.cn/blog/blog.php?do_showone/tid_2027.html
不过目前只支持32bit哦,感兴趣的话,可以把我发在上面帖子里头的代码下载下去弄一下64bit的,
64bit的主要区别是地址长度处理的问题,弄起来应该问题不大。
如果想要使用更眩的内核函数跟踪工具,那么强烈建议你用ftrace,它不仅功能强大,
而且已经进入了mainline kernel,关于它的介绍看这里:
http://lwn.net/Articles/322666/
前些天刚把它移植到loongson2f上的,在qemu/malta上也测试过,支持32bit/64bit,支持小端和大端。
昨天刚把它迁移到最新的linux-2.6.29上,感兴趣的话就开始你的内核函数跟踪历程吧。
为什么要跟踪内核的函数执行过程呢?
1、学习和研究内核,结合一些内核相关书籍分析和研究Linux内核。
2、优化内核,让Linux内核跑得更快!
ftrace for mips很有可能会被集成到linux-2.6.29的stable版或者后续的linux-2.6.30中~~