Android ftrace
16lz
2021-01-23
ftrace README:
××××:/sys/kernel/debug/tracing # lsREADME buffer_size_kb events options saved_cmdlines set_event trace_clock trace_options tracing_on uprobe_profile available_events buffer_total_size_kb free_buffer per_cpu saved_cmdlines_size set_event_pid trace_marker trace_pipe tracing_thresh available_tracers current_tracer instances printk_formats saved_tgids trace trace_marker_raw tracing_cpumask uprobe_events ××××:/sys/kernel/debug/tracing # cat README tracing mini-HOWTO:# echo 0 > tracing_on : quick way to disable tracing# echo 1 > tracing_on : quick way to re-enable tracing Important files: trace- The static contents of the buffer To clear the buffer write into this file: echo > trace trace_pipe- A consuming read to see the contents of the buffer current_tracer- function and latency tracers available_tracers- list of configured tracers for current_tracer buffer_size_kb- view and modify size of per cpu buffer buffer_total_size_kb - view total size of all cpu buffers trace_clock-change the clock used to order events local: Per cpu clock but may not be synced across CPUs global: Synced across CPUs but slows tracing down. counter: Not a clock, but just an increment uptime: Jiffy counter from time of boot perf: Same clock that perf events use trace_marker- Writes into this file writes into the kernel buffer trace_marker_raw- Writes into this file writes binary data into the kernel buffer tracing_cpumask- Limit which CPUs to trace instances- Make sub-buffers with: mkdir instances/foo Remove sub-buffer with rmdir trace_options- Set format or modify how tracing happens Disable an option by adding a suffix 'no' to the option name saved_cmdlines_size- echo command number in here to store comm-pid list uprobe_events- Add/remove/show the userspace dynamic events Write into this file to define/undefine new trace events. accepts: event-definitions (one definition per line) Format: p[:[/]] [] r[maxactive][:[/]] [] -:[/] place: : args: =fetcharg[:type] fetcharg: %, @, @[+|-], $stack, $stack, $retval, $comm type: s8/16/32/64, u8/16/32/64, x8/16/32/64, string, b@/ events/- Directory containing all trace event subsystems: enable- Write 0/1 to enable/disable tracing of all events events//- Directory containing all trace events for : enable- Write 0/1 to enable/disable tracing of all events filter- If set, only events passing filter are traced events///- Directory containing control files for : enable- Write 0/1 to enable/disable tracing of filter- If set, only events passing filter are traced trigger- If set, a command to perform when event is hit Format: [:count][if ] trigger: traceon, traceoff enable_event:: disable_event:: stacktrace example: echo traceoff > events/block/block_unplug/trigger echo traceoff:3 > events/block/block_unplug/trigger echo 'enable_event:kmem:kmalloc:3 if nr_rq > 1' > \ events/block/block_unplug/trigger The first disables tracing every time block_unplug is hit. The second disables tracing the first 3 times block_unplug is hit. The third enables the kmalloc event the first 3 times block_unplug is hit and has value of greater than 1 for the 'nr_rq' event field. Like function triggers, the counter is only decremented if it enabled or disabled tracing. To remove a trigger without a count: echo '! > //trigger To remove a trigger with a count: echo '!:0 > //trigger Filters can be ignored when removing a trigger.
Subsystem:
××××:/sys/kernel/debug/tracing/events # lsalarmtimer camera dma_fence fib6 hid kgsl module page_isolation process_reclaim rmnet sde_rotator task vmscan almk cfg80211 drm filelock i2c kmem msm_bus pagefault qdisc rndis_ipa signal thermal wda android_fs cgroup dwc3 filemap iommu lmh msm_low_power pagemap random rpm skb thermal_virtual workqueue asoc clk emulation ftrace ion lowmemorykiller msm_pil_event pdc ras rpmh smbus timer writeback binder cma enable gadget ipa mdio msm_vidc_events percpu raw_syscalls sched sock udp xdp block compaction exception gpio ipi mdss_pll napi perf_trace_counters rcu scm spi ufs xhci-hcd bpf cpuhp ext4 header_event irq migrate net power regmap scsi spmi v4l2 bridge dfc fib header_page jbd2 mmc oom printk regulator sde swiotlb vb2
打开 signal trace:
××××:/ # echo 1 > /sys/kernel/debug/tracing/events/signal/enable××××:/ # echo 1 > /sys/kernel/debug/tracing/tracing_on
获取 trace:
adb pull /sys/kernel/debug/tracing/trace trace.txt
查看/修改 trace buffer大小:
××××:/ # cat /sys/kernel/debug/tracing/buffer_size_kb1410××××:/ # cat /sys/kernel/debug/tracing/buffer_total_size_kb11280××××:/ # echo 2048 > /sys/kernel/debug/tracing/buffer_size_kb ××××:/ # cat /sys/kernel/debug/tracing/buffer_size_kb 2048××××:/ # cat /sys/kernel/debug/tracing/buffer_total_size_kb 16384
打开binder相关 trace:
# echo 1 > /sys/kernel/debug/tracing/events/binder/enable# cat /sys/kernel/debug/tracing/set_eventbinder:binder_ioctlbinder:binder_lockbinder:binder_lockedbinder:binder_unlockbinder:binder_ioctl_donebinder:binder_write_donebinder:binder_read_donebinder:binder_set_prioritybinder:binder_wait_for_workbinder:binder_transactionbinder:binder_transaction_receivedbinder:binder_transaction_node_to_refbinder:binder_transaction_ref_to_nodebinder:binder_transaction_ref_to_refbinder:binder_transaction_fdbinder:binder_transaction_alloc_bufbinder:binder_transaction_buffer_releasebinder:binder_transaction_failed_buffer_releasebinder:binder_update_page_rangebinder:binder_alloc_lru_startbinder:binder_alloc_lru_endbinder:binder_free_lru_startbinder:binder_free_lru_endbinder:binder_alloc_page_startbinder:binder_alloc_page_endbinder:binder_unmap_user_startbinder:binder_unmap_user_endbinder:binder_unmap_kernel_startbinder:binder_unmap_kernel_endbinder:binder_commandbinder:binder_return# cat /sys/kernel/debug/tracing/trace# tracer: nop ## entries-in-buffer/entries-written: 22004/22004 #P:8## _-----=> irqs-off# / _----=> need-resched# | / _---=> hardirq/softirq# || / _--=> preempt-depth# ||| / delay# TASK-PID CPU# |||| TIMESTAMP FUNCTION# | | | |||| | | ndroid.systemui-2043 [001] .... 4311.582476: binder_ioctl: cmd=0xc0306201 arg=0x7ff5dca058 ndroid.systemui-2043 [001] .... 4311.582505: binder_command: cmd=0x40406300 BC_TRANSACTION ndroid.systemui-2043 [001] .... 4311.582560: binder_transaction: transaction=388872 dest_node=11251 dest_proc=792 dest_thread=0 reply=0 flags=0x11 code=0x3 ndroid.systemui-2043 [001] .... 4311.582571: binder_update_page_range: proc=792 allocate=1 offset=0 size=4096 ndroid.systemui-2043 [001] .... 4311.582578: binder_alloc_lru_start: proc=792 page_index=0 ndroid.systemui-2043 [001] .... 4311.582583: binder_alloc_lru_end: proc=792 page_index=0 ndroid.systemui-2043 [001] .... 4311.582600: binder_transaction_alloc_buf: transaction=388872 data_size=80 offsets_size=0 ndroid.systemui-2043 [001] .... 4311.582718: binder_write_done: ret=0 ndroid.systemui-2043 [001] .... 4311.582727: binder_wait_for_work: proc_work=0 transaction_stack=0 thread_todo=1 ndroid.systemui-2043 [001] .... 4311.582739: binder_return: cmd=0x7206 BR_TRANSACTION_COMPLETE ndroid.systemui-2043 [001] .... 4311.582755: binder_read_done: ret=0 ndroid.systemui-2043 [001] .... 4311.582762: binder_ioctl_done: ret=0 Binder:792_3-1237 [001] .... 4311.582971: binder_transaction_received: transaction=388872 Binder:792_3-1237 [001] .... 4311.582974: binder_return: cmd=0x80407202 BR_TRANSACTION Binder:792_3-1237 [001] .... 4311.582991: binder_read_done: ret=0 Binder:792_3-1237 [001] .... 4311.582996: binder_ioctl_done: ret=0 Binder:792_3-1237 [001] .... 4311.583145: binder_ioctl: cmd=0xc0306201 arg=0x7e36fd4328 Binder:792_3-1237 [001] .... 4311.583150: binder_command: cmd=0x40086303 BC_FREE_BUFFER Binder:792_3-1237 [001] .... 4311.583159: binder_transaction_buffer_release: transaction=388872 data_size=80 offsets_size=0 Binder:792_3-1237 [001] .... 4311.583169: binder_update_page_range: proc=792 allocate=0 offset=0 size=4096 Binder:792_3-1237 [001] .... 4311.583173: binder_free_lru_start: proc=792 page_index=0 Binder:792_3-1237 [001] .... 4311.583177: binder_free_lru_end: proc=792 page_index=0 Binder:792_3-1237 [001] .... 4311.583188: binder_write_done: ret=0 Binder:792_3-1237 [001] .... 4311.583191: binder_wait_for_work: proc_work=1 transaction_stack=0 thread_todo=0 ndroid.systemui-2043 [000] .... 4311.598003: binder_ioctl: cmd=0xc0306201 arg=0x7ff5dca058 ndroid.systemui-2043 [000] .... 4311.598016: binder_command: cmd=0x40406300 BC_TRANSACTION ndroid.systemui-2043 [000] .... 4311.598051: binder_transaction: transaction=388873 dest_node=11251 dest_proc=792 dest_thread=0 reply=0 flags=0x11 code=0x3 ndroid.systemui-2043 [000] .... 4311.598055: binder_update_page_range: proc=792 allocate=1 offset=0 size=4096 ndroid.systemui-2043 [000] .... 4311.598058: binder_alloc_lru_start: proc=792 page_index=0 ndroid.systemui-2043 [000] .... 4311.598060: binder_alloc_lru_end: proc=792 page_index=0 ndroid.systemui-2043 [000] .... 4311.598074: binder_transaction_alloc_buf: transaction=388873 data_size=80 offsets_size=0 ndroid.systemui-2043 [000] .... 4311.598118: binder_write_done: ret=0 ndroid.systemui-2043 [000] .... 4311.598122: binder_wait_for_work: proc_work=0 transaction_stack=0 thread_todo=1 ndroid.systemui-2043 [000] .... 4311.598127: binder_return: cmd=0x7206 BR_TRANSACTION_COMPLETE ndroid.systemui-2043 [000] .... 4311.598138: binder_read_done: ret=0 ndroid.systemui-2043 [000] .... 4311.598141: binder_ioctl_done: ret=0
更多相关文章
- Android 中的 R.class,减小 Apk 包大小
- Android 改变AlertDialog的大小
- 修改android桌面图标默认大小
- Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
- Android EditText输入限制最大字符长度 和 限制只能输入数字和字
- Android获取手机存储空间大小
- Android中利用DisplayMetrics取得手机屏幕大小
- android设置系统语言,字体大小,字体样式导致widget控件失效
- android:初级 [Android] Eclipse Android中设置模拟器屏幕大小几