社区编辑申请
注册/登录
OpenHarmony性能分析工具Bytrace 原创
系统 OpenHarmony
bytrace是开发人员用于追踪进程轨迹、查看性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://harmonyos.51cto.com​

一、Bytrace简介

bytrace是开发人员用于追踪进程轨迹、查看性能的一种工具,主要对内核ftrace进行了封装和扩展,来支持用户态的打点。该工具主要分为两部分,API和命令行:

1.bytrace向应用开发人员暴露了打点的API,开发应用过程中可以在关键代码处调用对应API进行打点;

2.命令行部分通过使能对应的label,来获取打点信息。通过该工具可以打开想要查看的用户态和内核label(通过命令行“bytrace -l”,查看支持的所有label),然后通过命令行进行抓取trace信息到指定文件中,下文有具体使用指导。

二、架构图

三、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为程序运行的函数

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://harmonyos.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2022-04-15 14:31:02

鸿蒙操作系统

2022-04-20 20:28:40

HDF 驱动框架鸿蒙操作系统

2022-05-11 15:08:52

驱动开发系统移植

2022-04-14 10:10:59

Nginx开源Linux

2022-04-07 14:33:31

操作系统鸿蒙HarmonyOS

2022-04-01 15:18:04

HarmonyHDF 驱动鸿蒙

2022-04-19 11:23:26

release3.1子系统鸿蒙

2022-04-18 10:37:01

鸿蒙操作系统开发工具

2022-04-18 12:29:18

C++

2022-03-21 15:02:05

Harmonyhiperf鸿蒙

2022-03-02 16:08:31

Harmony应用开发鸿蒙

2022-04-21 14:05:21

开发者论坛

2022-04-07 15:28:16

HarmonyOS鸿蒙操作系统

2022-04-06 11:27:05

harmonyeTS 开发NAPI开发

2022-04-15 14:57:57

Flex布局鸿蒙操作系统

2022-04-21 11:26:31

鸿蒙操作系统

2022-04-21 10:01:48

VMware

2022-02-24 16:39:41

OpenHarmonNiobe开发鸿蒙

2022-03-30 15:06:25

数据传输Harmony源码分析

同话题下的热门内容

OpenEuler-22.03-LTS+UKUI如何快速在AARCH64架构运行与体验HarmonyOS Connect设备开发--抛除束缚,自定义设备UIOpenHarmony—分区切换之Reboot源码解析如何在DAYU200上安装浏览器-基于OpenHarmony 3.1 Release版本OpenHarmony驱动框架HDF中设备管理服务构建过程详解之一HarmonyOS Connect设备开发之南北打通-碰一碰互动HarmonyOS - Java与Js的混合使用与交互HarmonyOS Connect设备开发之南向开发-设备配网

编辑推荐

HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南HarmonyOS LYEVK-3861开发板播放《蜜雪冰城》鸿蒙HarmonyOS分布式软总线:构建低时延、高带宽的多设备虚拟网络华为HarmonyOS的强势突围: 直面物联网迷宫的蓄力进击鸿蒙HarmonyOS2.0发布会现场回忆录
我收藏的内容
点赞
收藏

51CTO技术栈公众号