harmony 鸿蒙查看HiTraceMeter日志
查看HiTraceMeter日志
通过DevEco Studio可视化界面查看
使用DevEco Studio Profiler的CPU Insight功能,可视化展示HiTraceMeter日志内容,分析应用或服务的CPU使用率和线程运行状态,查看指定时间段内程序在CPU上的执行耗时。具体使用指导请参考CPU活动分析:CPU分析。
通过命令行工具查看
根据hdc命令行工具指导,完成环境准备,确保可以使用
hdc shell
命令正常连接设备。在DevEco Studio的Terminal窗口或主机命令行窗口执行
hdc shell
命令连接设备,然后在设备上执行hitrace命令,开启HiTraceMeter日志抓取服务。
PS D:\xxx\xxx> hdc shell
$ hitrace --trace_begin app
在设备上运行包含HiTraceMeter打点的相关程序。
转储HiTraceMeter文本日志,该日志包含步骤3中生成的HiTraceMeter打点信息。
- 默认将日志打印在窗口中。
$ hitrace --trace_dump
- 可提供文件名将日志保存至文件中,文件路径只能是
/data/local/tmp/
,其他路径无权限。
$ hitrace --trace_dump -o /data/local/tmp/trace.ftrace
- 在设备上执行hitrace命令,停止HiTraceMeter日志抓取服务。
$ hitrace --trace_finish
- 退出设备,进入主机,导出设备中的HiTraceMeter文本日志到当前目录。
$ exit
PS D:\xxx\xxx> hdc file recv /data/local/tmp/trace.ftrace ./
搜索HiTraceMeter文本日志中的打点名称等关键字,查看打点是否成功。
HiTraceMeter支持文本日志的可视化分析。
- 导入DevEco Studio进行分析。 在DevEco Studio Profiler的会话区选择“Open File”,将HiTraceMeter文本日志导入DevEco Studio。 具体分析可参考CPU活动分析:CPU分析文档。
- 通过HiSmartPerf工具进行分析,工具下载链接developtools_smartperf_host 发行版。
用户态trace格式说明
开发者可以通过hitrace命令采集用户通过hiTraceMeter接口生成的用户态trace日志,从而对应用进行性能分析。本章节将详细介绍用户态trace的格式和扩展规则,包括同步、异步和整数值跟踪等类型。每种trace的字段组成、含义及与打点入参的关系都会逐一说明,并提供具体样例供参考。
API version 19 及以上版本的用户态trace格式参考当前版本用户态trace格式,API version 19 以下版本的用户态trace格式参考API version 19 前用户态trace格式。
当前版本用户态trace格式
同步跟踪
开始trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容]|[级别与所属Tag集合]|[自定义键值对]
结束trace格式:
[类型标识符]|[进程号]|[级别与所属Tag集合]
一条完整的同步跟踪包括一个开始trace和一个结束trace,开始trace的类型标识符
固定为B
,结束trace的类型标识符
固定为E
。
异步跟踪
起始trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]|[自定义聚类名称]|[自定义键值对]
结束trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]
一条完整的异步跟踪也同样包含一个开始trace和一个结束trace,开始trace的类型标识符
固定为S
,结束trace的类型标识符
固定为F
。
整数值跟踪
- trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容]|[整数值]|[级别与所属Tag集合]
一条整数值跟踪trace仅包含一条独立trace,其中trace的类型标识符
固定为C
。
注意:
- 一条有效且完整的同步跟踪trace与异步跟踪trace,均包含一条起始trace和一条结束trace,开发者需要保证接口调用的匹配性,否则会导致性能跟踪异常问题。具体可参考ArkTS接口:@ohos.hiTraceMeter (性能打点)或C++接口:Hitrace。
- 用户态trace总长度限制512字符,超过部分将被截断。
字段说明
本小节将详细介绍用户态trace的各个字段,包括字段组成、含义,字段与打点入参之间的关系使用@ohos.hiTraceMeter (性能打点)作为参考。
类型标识符
类型标识符与调用的@ohos.hiTraceMeter (性能打点)具体接口相关,其映射关系如下:
B
:开启一个同步时间片跟踪事件。E
:结束一个同步时间片跟踪事件。S
:开启一个异步时间片跟踪事件。F
:结束一个异步时间片跟踪事件。C
:整数跟踪事件。
分布式跟踪链路ID
开启HiTraceChain(分布式跟踪)时,会将HiTraceId核心信息记录在trace打点中,格式为[ChainId,SpanId,ParentSpanId]
,结尾使用#
分隔符与内容字段区分。
未开启HiTraceChain(分布式跟踪)时,打点不包含该字段。
ChainId
:HiTraceId的链Id。SpanId
:HiTraceId的当前跨度号。ParentSpanId
:HiTraceId的父跨度号。
HiTraceChain具体使用指导请参考使用HiTraceChain打点(ArkTS/JS)与使用HiTraceChain打点(C/C++)。
- 内容
表示打点名称或整数变量名。对应@ohos.hiTraceMeter (性能打点) 接口的name
入参。
- 异步任务ID
和内容字段合并用于匹配相同的异步跟踪trace的开始与结束打点。对应@ohos.hiTraceMeter (性能打点) 接口的taskId
入参。
- 整数值
仅在整数值跟踪trace中包含,为跟踪的整数值。对应@ohos.hiTraceMeter (性能打点) 接口的count
入参。
- 级别与所属Tag集合
本字段由级别和所属Tag集合两部分信息组成。
通过打点接口传入的级别
信息,该部分为以下字符之一:D
、I
、C
、M
。对应@ohos.hiTraceMeter (性能打点)接口的level
入参,详细介绍及映射关系参考HiTraceOutputLevel。
所属Tag集合表示trace打点所属Tag类别,每类用两位数字表示,可包含多个从小到大排列的两位数字。
例如B|1314|H:TestFunction|I3062
,其中I
表示该条打点级别为Info
,3062
表示该条打点所属Tag集合,根据Tag名称与值的映射关系,参考 HiTraceMeter Tag可知30
对应ohos
Tag,62
对应app
Tag。
说明:
对于API version 19及之后接口,支持自定义输出级别;对于API version 18及之前接口,trace打点默认为
COMMERCIAL
级别打点。系统侧存在一条用户态trace隶属于多个Tag的情况,@ohos.hiTraceMeter (性能打点) ArkTS接口和Hitrace C++接口提供的应用侧用户态trace打点功能无法指定
所属Tag集合
,对应Tag分类固定为app
,字段值为62
。
- 自定义聚类名称
可用于开发者自定义的聚类操作。对应@ohos.hiTraceMeter (性能打点) 接口的customCategory
入参。该字段值可能为空,从而使得日志格式发生变化,详见字段为空情况说明。
在trace可视化工具中,同一进程中相同聚类名称的异步打点放在同一泳道上进行展示。
- 自定义键值对
格式为key=value
,多个键值对使用逗号分隔,例如key1=value1,key2=value2
。对应@ohos.hiTraceMeter (性能打点)接口的customArgs
入参。该字段值可能为空,从而使得日志格式发生变化,详见字段为空情况说明。
在trace可视化工具中,对满足格式要求的自定义键值对,以键值对形式展示解析结果。
字段扩展规则
API version 19及后续版本的新增字段,均以竖线+字段的方式,追加在当前用户态trace格式的末尾。
各场景trace日志样例
打点类型 | 开启HiTraceChain时格式 | 未开启HiTraceChain时格式 |
---|---|---|
开始同步trace打点 | B|1234|H:[a92ab94c18e1341,0,0]#tracename|M62|user=root,type=2 | B|1234|H:tracename|M62|user=root,type=2 |
结束同步trace打点 | E|1234|M62 | E|1234|M62 |
开始异步trace打点 | S|1234|H:[a92ab94c18e1341,0,0]#tracename|428|M62|appcategory01|user=root,type=2 | S|1234|H:tracename|428|M62|appcategory01|user=root,type=2 |
结束异步trace打点 | F|1234|H:[a92ab94c18e1341,0,0]#tracename|428|M62 | F|1234|H:tracename|428|M62 |
整数trace打点 | C|1234|H:[a92ab94c18e1341,0,0]#tracename|5678|M62 | C|1234|H:tracename|5678|M62 |
上述trace日志样例中,进程号均为1234
,打点内容均为tracename
,级别均为M
,代表COMMERCIAL
级别,所属Tag集合均为62
,仅包含一个Tag,对应的Tag名称为app
。在开启HiTraceChain情况下,分布式跟踪链路ID为[a92ab94c18e1341,0,0]
。同步trace与异步trace跟踪的自定义键值对均为user=root,type=2
, 其中异步trace打点的异步任务ID为428
,自定义聚类名称为appcategory01
。整数值跟踪的跟踪值为5678
。
说明:
用户态trace总长度限制为512字符,建议
内容
、自定义聚类名称
和自定义键值对
参数总长度不超过420字符,避免被截断。
字段为空情况说明
如果用户态trace格式中间字段对应接口参数传入内容为空,用户态trace格式将保留|
分隔符,如果尾部字段为空,用户态trace格式将不保留|
分隔符。以hiTraceMeter.startAsyncTrace19+和hiTraceMeter.startSyncTrace19+接口的自定义聚类名称
和自定义键值对
参数为例,对应的格式参考如下。
开始同步trace打点。
自定义键值对
字段不为空字符串。
B|[进程号]|H:[分布式跟踪链路ID]#[内容]|[级别与所属Tag集合]|[自定义键值对]
自定义键值对
字段为空字符串。
B|[进程号]|H:[分布式跟踪链路ID]#[内容]|[级别与所属Tag集合]
开始异步trace打点。
自定义聚类名称
和自定义键值对
字段均不为空字符串。
S|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]|[自定义聚类名称]|[自定义键值对]
自定义聚类名称
字段为空字符串,自定义键值对
字段不为空字符串。
S|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]||[自定义键值对]
自定义聚类名称
字段不为空字符串,自定义键值对
字段为空字符串。
S|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]|[自定义聚类名称]
自定义聚类名称
和自定义键值对
字段均为空字符串。
S|[进程号]|H:[分布式跟踪链路ID]#[内容]|[异步任务ID]|[级别与所属Tag集合]
HiTraceMeter Tag
以下为 HitraceMeter 用户态Tag集合,其中Tag值为实际代码层面基于数字1的左移值。用户态Tag可通过hitrace -l 命令查看其解释,其中always
和commercial
Tag为系统侧为默认常开和商用版本场景定制的Tag。
Tag名称 | 代码层常量值 | Tag值 |
---|---|---|
always | 1ULL << 0 | 00 |
commercial | 1ULL << 5 | 05 |
drm | 1ULL << 6 | 06 |
security | 1ULL << 7 | 07 |
animation | 1ULL << 9 | 09 |
push | 1ULL << 10 | 10 |
virse | 1ULL << 11 | 11 |
ffrt | 1ULL << 13 | 13 |
musl | 1ULL << 12 | 12 |
cloud | 1ULL << 14 | 14 |
deviceauth | 1ULL << 15 | 15 |
commonlibrary | 1ULL << 16 | 16 |
hdcd | 1ULL << 17 | 17 |
hdf | 1ULL << 18 | 18 |
usb | 1ULL << 19 | 19 |
interconn | 1ULL << 20 | 20 |
dlpcre | 1ULL << 21 | 21 |
accesscontrol | 1ULL << 22 | 22 |
net | 1ULL << 23 | 23 |
nweb | 1ULL << 24 | 24 |
huks | 1ULL << 25 | 25 |
useriam | 1ULL << 26 | 26 |
daudio | 1ULL << 27 | 27 |
dlsm | 1ULL << 28 | 28 |
filemanagement | 1ULL << 29 | 29 |
ohos | 1ULL << 30 | 30 |
ability | 1ULL << 31 | 31 |
zcamera | 1ULL << 32 | 32 |
zmedia | 1ULL << 33 | 33 |
zimage | 1ULL << 34 | 34 |
zaudio | 1ULL << 35 | 35 |
distributeddatamgr | 1ULL << 36 | 36 |
mdfs | 1ULL << 37 | 37 |
graphic | 1ULL << 38 | 38 |
ace | 1ULL << 39 | 39 |
notification | 1ULL << 40 | 40 |
misc | 1ULL << 41 | 41 |
multimodalinput | 1ULL << 42 | 42 |
sensors | 1ULL << 43 | 43 |
msdp | 1ULL << 44 | 44 |
dsoftbus | 1ULL << 45 | 45 |
rpc | 1ULL << 46 | 46 |
ark | 1ULL << 47 | 47 |
window | 1ULL << 48 | 48 |
account | 1ULL << 49 | 49 |
dscreen | 1ULL << 50 | 50 |
dcamera | 1ULL << 51 | 51 |
dhfwk | 1ULL << 52 | 52 |
gresource | 1ULL << 53 | 53 |
devicemanager | 1ULL << 54 | 54 |
samgr | 1ULL << 55 | 55 |
power | 1ULL << 56 | 56 |
dsched | 1ULL << 57 | 57 |
deviceprofile | 1ULL << 58 | 58 |
dinput | 1ULL << 59 | 59 |
bluetooth | 1ULL << 60 | 60 |
accessibility | 1ULL << 61 | 61 |
app | 1ULL << 62 | 62 |
HiTraceOutputLevel
trace输出级别枚举名称(C/C++) | trace输出级别枚举名称(ArkTS/JS) | 枚举值 | trace级别 |
---|---|---|---|
HITRACE_LEVEL_DEBUG | DEBUG | 0 | D |
HITRACE_LEVEL_INFO | INFO | 1 | I |
HITRACE_LEVEL_CRITICAL | CRITICAL | 2 | C |
HITRACE_LEVEL_COMMERCIAL | COMMERCIAL | 3 | M |
API version 19 前用户态trace格式
同步跟踪
开始trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容]
结束trace格式:
[类型标识符]|[进程号]
异步跟踪
开始trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容] [异步任务ID]
结束trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容] [异步任务ID]
整数值跟踪
- trace格式:
[类型标识符]|[进程号]|H:[分布式跟踪链路ID]#[内容] [整数值]
说明:
异步跟踪trace的开始trace格式与结束trace格式一样。需要注意的是 API version 19 以前的版本,异步跟踪trace的
异步任务ID
字段、整数值跟踪的整数值
字段与内容
字段使用空格进行分隔。
API version 19 前各场景trace日志样例
打点类型 | 开启HiTraceChain时格式 | 未开启HiTraceChain时格式 |
---|---|---|
开始同步trace打点 | B|1234|H:[a92ab94c18e1341,0,0]#tracename | B|1234|H:tracename |
结束同步trace打点 | E|1234| | E|1234| |
开始异步trace打点 | S|1234|H:[a92ab94c18e1341,0,0]#tracename 428 | S|1234|H:tracename 428 |
结束异步trace打点 | F|1234|H:[a92ab94c18e1341,0,0]#tracename 428 | F|1234|H:tracename 428 |
整数值跟踪trace打点 | C|1234|H:[a92ab94c18e1341,0,0]#tracename 5678 | C|1234|H:tracename 5678 |
上述trace日志样例中,进程号为1234
,打点内容均为tracename
。开启HiTraceChain情况下,分布式跟踪链路ID为[a92ab94c18e1341,0,0]
。其中异步trace打点的异步任务ID为428
,整数值跟踪的跟踪值为5678
。
你可能感兴趣的鸿蒙文章
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦