OpenHarmony性能分析工具Bytrace 原创 精华

发布于 2022-1-22 18:23
浏览
8收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」https://harmonyos.51cto.com/posts/9923

@[toc](内容

一、Bytrace简介

bytrace是开发人员用于追踪进程轨迹、查看性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点。该工具主要分为两部分,API和命令行:
1.bytrace向应用开发人员暴露了打点的API,开发应用过程中可以在关键代码处调用对应API进行打点;
2.命令行部分通过使能对应的label,来获取打点信息。通过该工具可以打开想要查看的用户态和内核label(通过命令行“bytrace -l”,查看支持的所有label),然后通过命令行进行抓取trace信息到指定文件中,下文有具体使用指导。

二、架构图

OpenHarmony性能分析工具Bytrace-开源基础软件社区

三、Bytrace工具使用说明

命令行列表
Option                        Description
-h,--help                    查看option帮助
-b n,--buffer_size n         指定n(KB)内存大小用于存取trace日志,默认2048KB
-t n,--time n                用来指定trace运行的时间(单位:s),取决于需要分析过程的时间
--trace_clock clock           trace输出的时钟类型,一般设备支持boot、global、mono、uptime、perf等,默认为boot
--trace_begin                 启动抓trace
--trace_dump                  将数据输出到指定位置(默认控制台)
--trace_finish                停止抓trace,并将数据输出到指定位置(默认控制台)
-l,--list_categories         输出手机能支持的trace模块
--overwrite                   当缓冲区满的时候,将丢弃最新的信息。(默认丢弃最老的日志)
-o filename,--output filename 指定输出的目标文件名称
-z                             抓取trace后进行压缩

四、工具使用示例

@echo off
hdc shell "echo > /sys/kernel/debug/tracing/trace"
hdc shell "echo 4096 > /sys/kernel/debug/tracing/saved_cmdlines_size"
hdc shell "bytrace -t 10 -b 4096 --overwrite ohos zimage zmedia zcamera zaudio ability distributeddatamgr graphic freq irq mdfs workq  mmc idle notification sync pagecache ace app > /data/mynewtrace.ftrace"
hdc shell "echo > /sys/kernel/debug/tracing/trace"
hdc shell "sed -i '1,2d' /data/mynewtrace.ftrace"
hdc file recv /data/mynewtrace.ftrace %cd%
pause

hdc为hdc.exe文件,hdc能连接上,执行上述命令,完成在当前目录获取到mynewtrace.ftrace文件

echo > /sys/kernel/debug/tracing/trace 清空系统trace数据,便于抓取产生的新数据
echo 4096 > /sys/kernel/debug/tracing/saved_cmdlines_size 保存trace数据数目,4096条
 -t 10 -b 4096 为抓取10s的数据,指定4096(KB)内存大小用于存取trace日志
ohos zimage zmedia zcamera zaudio ability distributeddatamgr graphic freq irq mdfs workq  mmc idle notification sync pagecache ace app 为抓取数据的模块
sed -i '1,2d' /data/mynewtrace.ftrace 删除前面两行不需要数据内容
hdc file recv /data/mynewtrace.ftrace %cd% hdc下载ftrace文件内容到本地当前目录

五、ftrace数据的调度轨迹数据

 entries-in-buffer/entries-written: 42335/42335   #P:2
#
#                                          _-----=> irqs-off
#                                         / _----=> need-resched
#                                        | / _---=> hardirq/softirq
#                                        || / _--=> preempt-depth
#                                        ||| /     delay
#           TASK-PID       TGID    CPU#  ||||   TIMESTAMP  FUNCTION
#              | |           |       |   ||||      |         |
         bytrace-542     (    542) [001] ....  4811.090453: mm_filemap_add_to_page_cache: dev 179:7 ino e1 page=05202a4a pfn=587751 ofs=0
          <idle>-0       (-------) [001] d...  4811.090585: cpu_idle: state=1 cpu_id=1
          <idle>-0       (-------) [001] d.h.  4811.100006: irq_handler_entry: irq=24 name=arch_timer
          <idle>-0       (-------) [000] d.h.  4811.100007: irq_handler_entry: irq=24 name=arch_timer
          <idle>-0       (-------) [001] dnh.  4811.100053: softirq_raise: vec=9 [action=RCU]
             <idle>-0       (-------) [001] dns.  4811.100097: ipi_raise: target_mask=00000001 (Function call interrupts)
          <idle>-0       (-------) [001] .ns.  4811.100101: softirq_exit: vec=9 [action=RCU]
          <idle>-0       (-------) [001] .n..  4811.100104: cpu_idle: state=4294967295 cpu_id=1
  softbus_server-272     (    178) [000] d.h.  4811.100105: irq_handler_entry: irq=19 name=IPI
  softbus_server-272     (    178) [000] d.h.  4811.100109: ipi_entry: (Function call interrupts)
  softbus_server-272     (    178) [000] d.h.  4811.100124: ipi_exit: (Function call interrupts)
  softbus_server-272     (    178) [000] d.h.  4811.100126: irq_handler_exit: irq=19 ret=handled

TASK-PID为任务进程ID, TGID为线程ID, CPU#为CPU核ID, TIMESTAMP为运行的时间戳,FUNCTION为程序运行的函数

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
bytrace_capture.zip 766B 18次下载
已于2022-1-24 10:08:06修改
7
收藏 8
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐