Linux profilers: oprofile vs. ftrace (with guide for use in Android)
16lz
2021-01-23
设置 ftrace
echo function_graph > current_tracerecho funcgraph-cpu > trace_optionsecho funcgraph-proc > trace_optionsecho funcgraph-abstime > trace_optionsecho nofuncgraph-overhead > trace_options
准备工作
umount tmpmount -o rw,remount /mkdir /tmpmount -t tmpfs none /tmpecho 0 > tracing_enabled
执行 profiling
cat trace_pipe > /tmp/trace.out &echo 1 > tracing_enabledecho 0 > tracing_enabled
程序 3X 时间,大量 lost events,需减少目标函数
echo 'sys_*' > set_ftrace_filter # covers sys_futex (do_futex, futex_wait)echo '*page*' >> set_ftrace_filterecho 'sleep_on_*' >> set_ftrace_filterecho '*wait*' >> set_ftrace_filterecho '__schedule' >> set_ftrace_filter # covers schedule, schedule_timeout, poll_schedule_timeout, schedule_hrtimeout_rangeecho 'do_fork' >> set_ftrace_filter; echo '!sys_clone' >> set_ftrace_filter # covers kernel_threadecho 'copy_process' >> set_ftrace_filterecho 'binder_thread_*' >> set_ftrace_filter # binder_thread_read/writeecho 'do_exit' >> set_ftrace_filterecho 'do_IRQ' >> set_ftrace_filterecho 'do_IPI' >> set_ftrace_filterecho 'do_softirq' >> set_ftrace_filterecho 'flush_dcache_page' >> set_ftrace_filter # covers __flush_dcache_pageecho 'subsystem_flush_mapped_mem_cache' >> set_ftrace_filterecho '__atomic_notifier_call_chain' >> set_ftrace_filter # covers atomic_notifier_call_chainecho 'down_interruptable' >> set_ftrace_filterecho 'do_local_timer' >> set_ftrace_filterecho 'load_balance' >> set_ftrace_filterecho 'rebalance_domains' >> set_ftrace_filter # covers run_rebalance_domainsecho 'sched_move_task' >> set_ftrace_filterecho '__alloc_pages_nodemask' >> set_ftrace_filter # covers page allocation, __rmqueueecho '__free_pages' >> set_ftrace_filter # covers __free_page, __free_pages_okecho 'mali_mmap' >> set_ftrace_filterecho 'split_vma' >> set_ftrace_filterecho 'process_one_work' >> set_ftrace_filter # workersecho 'do_signal*' >> set_ftrace_filterecho 'mmc_*' >> set_ftrace_filterecho 'generic_make_request' >> set_ftrace_filter # main for block layerecho 'vfs_fsync_range' >> set_ftrace_filter # covers vfs_fsync, do_fsyncecho 'shrink_*' >> set_ftrace_filter # covers try_to_free_pagesecho 'kswapd' >> set_ftrace_filterecho 'input_event' >> set_ftrace_filter
更多相关文章
- C语言函数以及函数的使用
- android NDK JNI设置自己的log输出函数
- Android build/envsetup.sh 脚本分析(lunch函数)
- Android Hook学习之ptrace函数的使用
- Android中回调函数的理解---本人Android纯新手
- 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交
- cocos2dx打包Android出现“未指定Android目标平台版本”问题
- Android学习札记12:对Parcelable中describeContents()函数的一种
- android常用函数参数补充