Linux profilers: oprofile vs. ftrace (with guide for use in Android)

3 篇文章 0 订阅
2 篇文章 0 订阅

设置 ftrace

echo function_graph > current_tracer
echo funcgraph-cpu > trace_options
echo funcgraph-proc > trace_options
echo funcgraph-abstime > trace_options
echo nofuncgraph-overhead > trace_options

准备工作

umount tmp
mount -o rw,remount /
mkdir /tmp
mount -t tmpfs none /tmp
echo 0 > tracing_enabled

执行 profiling

cat trace_pipe > /tmp/trace.out &
echo 1 > tracing_enabled
echo 0 > tracing_enabled

程序 3X 时间,大量 lost events,需减少目标函数

echo 'sys_*' > set_ftrace_filter # covers sys_futex (do_futex, futex_wait)
echo '*page*' >> set_ftrace_filter
echo 'sleep_on_*' >> set_ftrace_filter
echo '*wait*' >> set_ftrace_filter
echo '__schedule' >> set_ftrace_filter  # covers schedule, schedule_timeout, poll_schedule_timeout, schedule_hrtimeout_range
echo 'do_fork' >> set_ftrace_filter; echo '!sys_clone' >> set_ftrace_filter # covers kernel_thread
echo 'copy_process' >> set_ftrace_filter
echo 'binder_thread_*' >> set_ftrace_filter # binder_thread_read/write
echo 'do_exit' >> set_ftrace_filter
echo 'do_IRQ' >> set_ftrace_filter
echo 'do_IPI' >> set_ftrace_filter
echo 'do_softirq' >> set_ftrace_filter
echo 'flush_dcache_page' >> set_ftrace_filter # covers __flush_dcache_page
echo 'subsystem_flush_mapped_mem_cache' >> set_ftrace_filter
echo '__atomic_notifier_call_chain' >> set_ftrace_filter # covers atomic_notifier_call_chain
echo 'down_interruptable' >> set_ftrace_filter
echo 'do_local_timer' >> set_ftrace_filter
echo 'load_balance' >> set_ftrace_filter
echo 'rebalance_domains' >> set_ftrace_filter # covers run_rebalance_domains
echo 'sched_move_task' >> set_ftrace_filter
echo '__alloc_pages_nodemask' >> set_ftrace_filter # covers page allocation, __rmqueue
echo '__free_pages' >> set_ftrace_filter # covers __free_page, __free_pages_ok
echo 'mali_mmap' >> set_ftrace_filter
echo 'split_vma' >> set_ftrace_filter
echo 'process_one_work' >> set_ftrace_filter # workers
echo 'do_signal*' >> set_ftrace_filter
echo 'mmc_*' >> set_ftrace_filter
echo 'generic_make_request' >> set_ftrace_filter # main for block layer
echo 'vfs_fsync_range' >> set_ftrace_filter # covers vfs_fsync, do_fsync
echo 'shrink_*' >> set_ftrace_filter # covers try_to_free_pages
echo 'kswapd' >> set_ftrace_filter
echo 'input_event' >> set_ftrace_filter

                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值