ftrace stack trace

内核栈大小是有限的,为了跟踪内核栈的使用情况,可以使用ftrace stack trace。使能和关闭方法:

echo 1  >  /proc/sys/kernel/stack_tracer_enabled
echo 0 >  /proc/sys/kernel/stack_tracer_enabled

stack trace的信息输出通过如下的节点上送给用户态:

/sys/kernel/debug/tracing/stack_max_size
/sys/kernel/debug/tracing/stack_trace 
/sys/kernel/debug/tracing/stack_trace_filter

使能跟踪一段时间后,可以查看最大栈占用情况,stack_max_size这里打印的是最长栈的size。而在stack_trace 中打印的是最长栈的每个函数占用栈大小的情况,注意这里也只会记录的最长的栈情况。

       Depth    Size   Location    (45 entries)
        -----    ----   --------
  0)     3600      64   __accumulate_pelt_segments+0x5/0x90
  1)     3536     104   __update_load_avg_se+0x20f/0x2f0
  2)     3432      64   update_load_avg+0x4ac/0x600
  3)     3368      72   enqueue_entity+0x5e/0x6f0
  4)     3296      80   enqueue_task_fair+0x9d/0x4e0
  5)     3216      40   activate_task+0x5f/0xc0
  6)     3176      48   ttwu_do_activate+0x49/0x70
  7)     3128     104   try_to_wake_up+0x1d1/0x550
  8)     3024      16   wake_up_process+0x15/0x20
  9)     3008      64   insert_work+0xa8/0xd0
 10)     2944      80   __queue_work+0x154/0x400
 11)     2864      16   __queue_delayed_work+0x66/0x90
 12)     2848      72   mod_delayed_work_on+0x5e/0x90
 13)     2776      16   kblockd_mod_delayed_work_on+0x1b/0x20
 14)     2760      48   __blk_mq_delay_run_hw_queue+0x7c/0x160
 15)     2712      48   blk_mq_run_hw_queue+0x90/0x110
 16)     2664      64   blk_mq_sched_insert_requests+0x77/0x100
 17)     2600     144   blk_mq_flush_plug_list+0x198/0x2e0

stack_trace_filter可以用来过滤一些函数,最对特定函数做跟踪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值