首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法理解ftrace输出

无法理解ftrace输出
EN

Stack Overflow用户
提问于 2013-12-26 11:34:20
回答 1查看 295关注 0票数 2

我正在尝试使用ftrace跟踪内核。我想跟踪内核中调用的函数是什么。我能够从/sys/kernel/debug/tracing/trace捕获函数跟踪。但无法理解。大部分的跟踪只在下面调用。我期待从应用程序级到内核级的函数调用。

代码语言:javascript
复制
                                           get_page_from_freelist() {
 0)               |                          next_zones_zonelist() {
 0)   0.812 us    |                          } /* next_zones_zonelist */
 0)               |                          zone_watermark_ok() {
 0)               |                            __zone_watermark_ok() {
 0)   0.917 us    |                            } /* __zone_watermark_ok */
 0)   2.522 us    |                          } /* zone_watermark_ok */
 0)               |                          _raw_spin_lock_irqsave() {
 0)   0.825 us    |                          } /* _raw_spin_lock_irqsave */
 0)               |                          __rmqueue() {
 0)   0.963 us    |                          } /* __rmqueue */
 0)               |                          get_pageblock_flags_group() {
 0)   0.892 us    |                          } /* get_pageblock_flags_group */
 0)               |                          __mod_zone_page_state() {
 0)   0.833 us    |                          } /* __mod_zone_page_state */
 0) + 13.444 us   |                        } /* get_page_from_freelist */
 0) + 16.776 us   |                      } /* __alloc_pages_nodemask */
 0)               |                      mod_zone_page_state() {
 0)               |                        __mod_zone_page_state() {
 0)   0.900 us    |                        } /* __mod_zone_page_state */
 0)   2.476 us    |                      } /* mod_zone_page_state */
 0)               |                      kmem_cache_alloc() {
 0)   0.907 us    |                      } /* kmem_cache_alloc */
 0)               |                      __phys_addr() {
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-21 04:14:16

内核程序类似于普通的c:一个调用函数()的main()程序,在函数中调用其他子函数。例如:

代码语言:javascript
复制
void f1() {
     f2();
     f3();
}


void main() {
f1()
f4() 
}

程序的调用关系是树结构。在本例中,调用关系是

代码语言:javascript
复制
main() -> f1() -> f2()
               -> f3()
       -> f4()

ftrace工具显示内核的调用函数和每个函数的花费时间。在跟踪结果中,它首先显示内核调用get_page_from_freelist()并花费13us。然后内核从函数__alloc_pages_nodemask返回。这个函数花费16美元,以此类推。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20784142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档