HarmonyOS 鸿蒙Next系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令
HarmonyOS 鸿蒙Next系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令 鸿蒙系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令
在鸿蒙系统(HarmonyOS / OpenHarmony)整机性能测试过程中,长时间抓取 trace 是分析系统级性能瓶颈(如卡顿、调度延迟、功耗异常等)的关键手段。鸿蒙提供了 基于 ftrace 的 HiTrace + hitrace 命令行工具链,并支持长时间采集。
✅ 一、核心工具:hitrace
hitrace 是鸿蒙系统内置的 trace 采集命令行工具,底层基于 Linux ftrace,可抓取内核和用户态的事件(包括 HiTraceMeter 打点、调度、CPU、内存、I/O 等)。
🔧 基本用法(适用于长时间抓取):
# 1. 进入设备 shell(通过 hdc)
hdc shell
# 2. 查看可用的 trace 标签(Tag)
hitrace -l
# 3. 开始长时间 trace(例如只抓 APP 和系统关键模块)
hitrace --trace_begin app,system,sched,irq
# 4. (可选)后台运行你的测试场景(如自动化脚本、压力测试等)
# 此时 trace 数据会持续写入内核缓冲区
# 5. 经过一段时间后(比如 5 分钟、30 分钟),停止采集
hitrace --trace_finish
# 6. 导出 trace 数据(默认输出到 stdout,建议重定向到文件)
hitrace --trace_dump > /data/log/long_trace.log
💡 注意:
--trace_dump会清空内核缓冲区,所以务必在--trace_finish后立即执行。
⏳ 二、如何实现“长时间”抓取?(关键技巧)
1. 增大 trace 缓冲区
默认缓冲区仅 2MB,长时间高负载下容易溢出。可通过 -b 参数扩大:
# 设置 64MB 缓冲区(单位 KB)
hitrace --buffer_size 65536 --trace_begin app,sched
最大值受设备内存限制,通常建议 32~128 MB。
2. 指定采集时长(自动停止)
若不想手动 stop,可用 --time 参数自动结束:
# 自动采集 600 秒(10 分钟)
hitrace --time 600 --trace_begin app,sched,irq
# 采集结束后自动 dump
hitrace --trace_dump > /data/log/10min_trace.log
⚠️ 注意:
--time模式下无需手动调用--trace_finish。
3. 过滤关键事件,减少数据量
长时间采集建议 只开启必要类别,避免日志爆炸:
# 推荐组合(整机性能分析常用)
hitrace --trace_begin app,sched,workq,irq,cpu_idle
app:应用层 HiTraceMeter 打点sched:任务调度事件workq:工作队列irq:中断处理cpu_idle:CPU 休眠状态(对功耗分析重要)
4. 使用 bytrace(兼容 systrace 格式)
鸿蒙也支持 bytrace 工具(类似 Android systrace),更适合可视化分析:
# 长时间采集并保存为 HTML(可直接用 Chrome 打开)
bytrace -t 600 -b 65536 -o /data/log/bytrace_10min.html app sched irq
生成的 HTML 可拖入
chrome://tracing查看时间线、帧率、CPU 占用等。
🛠 三、辅助工具推荐
| 工具 | 用途 |
|---|---|
| SmartPerf-Host | 华为官方 GUI 工具,支持一键抓取 trace + Profiler + 内存分析(适合非命令行用户) |
| DevEco Studio → AppAnalyzer | 应用级性能体检,但不适合整机长时间采集 |
| hilog + 自定义打点 | 配合 HiTraceMeter,在关键路径插入日志,便于 trace 中定位业务逻辑 |
✅ 四、最佳实践建议
- 先小规模测试:确认标签、缓冲区大小是否合理;
- 避免全开所有 tag:
hitrace -l列出的标签不要全选,否则日志巨大且难分析; - 配合自动化脚本:在 CI/CD 或压力测试中自动触发 hitrace;
- 导出后及时清理:
/data/log/空间有限,避免占满导致系统异常; - 使用新 API 打点:应用层用
hiTraceMeter.startAsyncTrace()(API 19+),确保 trace 可被正确识别。
🔍 示例:整机 30 分钟性能压测 trace 采集
hdc shell <<EOF
hitrace --buffer_size 131072 --time 1800 --trace_begin app,sched,workq,cpu_freq,cpu_idle
hitrace --trace_dump > /data/log/perf_30min.trace
sync
EOF
# 从设备拉取日志
hdc file recv /data/log/perf_30min.trace ./perf_30min.trace
如需进一步分析,可将 .trace 文件导入 Perfetto 或 SmartPerf-Host 进行可视化。
如你使用的是 HarmonyOS NEXT(API 12+),上述命令完全适用;OpenHarmony 3.2+ 也支持类似机制。
如有具体场景(如启动优化、滑动卡顿、功耗分析),可提供更针对性的 trace 配置方案。
更多关于HarmonyOS 鸿蒙Next系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next整机性能测试中,要长时间抓取trace,可以使用系统内置的HiTraceMeter工具。通过命令行执行hitrace -t 时间(秒) 跟踪类别即可启动长时间抓取,例如hitrace -t 300 graphics会抓取5分钟的图形渲染trace。抓取结果默认保存在设备的/data/local/tmp/目录下,可通过hdc file recv命令导出到PC端进行分析。
在HarmonyOS Next整机性能测试中,长时间抓取系统trace(如性能、调度、图形等)是定位深层问题的关键。核心工具是 bytrace 命令行工具,它集成在系统中,支持长时间、低开销的数据采集。
1. 核心命令与参数
使用 bytrace 命令,通过 -t 参数指定抓取时长(单位秒),-b 参数设置缓冲区大小(单位KB,建议增大以避免长时间抓取丢帧)。例如,抓取60秒的图形和调度事件:
bytrace -t 60 -b 4096 graphics scheduler
常用参数:
-t [秒数]:指定抓取时间。长时间测试可设置为数小时(如-t 7200为2小时)。-b [大小]:缓冲区大小。长时间抓取建议增大(如-b 8192或更高,需根据内存调整)。-o [文件路径]:直接保存trace数据到文件(如-o /data/local/tmp/trace.ftrace)。--trace_clock:设置时钟源,boot(默认)或global,长时间抓取建议用global避免时间漂移。
2. 长时间抓取实践建议
- 组合命令:将抓取、等待、停止写为脚本。例如,后台启动抓取,测试结束后停止:
# 启动抓取(后台运行,保存到文件) bytrace -t 999999 -b 16384 -o /data/trace.ftrace graphics scheduler disk > /dev/null 2>&1 & # 执行测试任务... # 测试结束后,停止抓取(通过kill发送信号) pkill -SIGINT bytrace - 抓取类别选择:根据测试目标选择trace类别(如
graphics、scheduler、disk、power等),用bytrace -l查看全部类别。避免全类别抓取,减少开销。 - 资源监控:长时间抓取时,通过
top或meminfo监控内存和CPU占用,确保缓冲区不会溢出。 - 离线分析:抓取的
.ftrace文件可导出到开发机,用 DevEco Studio Profiler 或 Catapult(基于Chrome的trace-viewer)进行可视化分析。
3. 自动化集成 在自动化测试框架中,可将bytrace命令嵌入测试脚本,在测试开始前启动抓取,测试结束后自动停止并拉取文件。例如,使用Python脚本控制ADB命令执行。
注意事项:
- 长时间抓取会生成较大文件(数GB级),确保设备存储空间充足。
- 抓取性能事件(如CPU频率)可能增加系统负载,建议在基线测试中评估开销。
- 使用
global时钟源时,需确保系统时间同步,便于多设备日志对齐。
综上,通过bytrace命令结合参数调整和脚本控制,可实现HarmonyOS Next整机性能测试中的长时间trace抓取,后续利用专业工具分析数据即可定位性能瓶颈。

