HarmonyOS 鸿蒙Next系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令

HarmonyOS 鸿蒙Next系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令 鸿蒙系统整机性能测试过程中怎么长时间抓取trace,有没有工具或者命令

3 回复

在鸿蒙系统(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 中定位业务逻辑

✅ 四、最佳实践建议

  1. 先小规模测试:确认标签、缓冲区大小是否合理;
  2. 避免全开所有 taghitrace -l 列出的标签不要全选,否则日志巨大且难分析;
  3. 配合自动化脚本:在 CI/CD 或压力测试中自动触发 hitrace;
  4. 导出后及时清理/data/log/ 空间有限,避免占满导致系统异常;
  5. 使用新 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 文件导入 PerfettoSmartPerf-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类别(如graphicsschedulerdiskpower等),用bytrace -l查看全部类别。避免全类别抓取,减少开销。
  • 资源监控:长时间抓取时,通过topmeminfo监控内存和CPU占用,确保缓冲区不会溢出。
  • 离线分析:抓取的.ftrace文件可导出到开发机,用 DevEco Studio ProfilerCatapult(基于Chrome的trace-viewer)进行可视化分析。

3. 自动化集成 在自动化测试框架中,可将bytrace命令嵌入测试脚本,在测试开始前启动抓取,测试结束后自动停止并拉取文件。例如,使用Python脚本控制ADB命令执行。

注意事项

  • 长时间抓取会生成较大文件(数GB级),确保设备存储空间充足。
  • 抓取性能事件(如CPU频率)可能增加系统负载,建议在基线测试中评估开销。
  • 使用global时钟源时,需确保系统时间同步,便于多设备日志对齐。

综上,通过bytrace命令结合参数调整和脚本控制,可实现HarmonyOS Next整机性能测试中的长时间trace抓取,后续利用专业工具分析数据即可定位性能瓶颈。

回到顶部