A
Air官方
性能问题肉眼看得见(卡),但看不到在哪。hitrace 是鸿蒙的跟踪体系:把系统与应用的执行过程按时间线记录,切片分析。这篇讲抓取与解读入门。
▍抓取
跟踪命令抓取指定时长的系统级跟踪(调度、渲染、进程活动),复现操作要在抓取窗口内完成。要点:窗口别太长(几十秒量级,长了文件巨大且噪音多);抓前清旧数据;操作路径最小化(只演问题场景,别混入无关操作)。应用侧配合:关键路径埋跟踪点(应用自定义事件会出现在时间线里,与系统事件同轴对齐)——这是分析效率的最大杠杆。
▍分析的基本功
时间线打开后先缩放到问题区间(卡顿的那一两秒)。看三层:应用层(自定义事件:帧开始、脏区计算、绘制、提交);进程层(线程状态:运行、睡眠、等待);系统层(合成节拍、调度事件)。卡顿的形态对号入座:主线程长期运行(单线程忙,看它在忙什么——自定义事件区间定位);线程频繁短睡(等锁或等 IO,看唤醒源);渲染提交晚于节拍(绘制太慢或开始太晚)。
▍典型结论模板
一次真实分析的输出长这样:主线程在帧 N 的绘制区间耗时是平均值的六倍,区间内自定义事件命中图片解码——结论:大图同步解码卡帧,改异步预解码。跟踪的价值就是把这样的因果链摆出来,而不是泛泛说性能不好。
▍注意事项
一,跟踪本身有开销,抓取时的绝对时间不可信,用相对对比(问题帧与正常帧的比值)。二,偶发问题要多轮抓取(骰子型问题单轮数据无效——Air 系列的方法论:风暴时点方差大,判定要三轮以上重复)。三,文件转表格工具可以做段级聚合(各线程各状态的时间占比),比肉眼看时间线快。
▍验收自测
对你手上的应用抓一次冷启动跟踪,说出启动最长的三个区间各是什么。说得出,这门课就入门了。
免费无广告的安装包可以在官网下载体验。
▍抓取
跟踪命令抓取指定时长的系统级跟踪(调度、渲染、进程活动),复现操作要在抓取窗口内完成。要点:窗口别太长(几十秒量级,长了文件巨大且噪音多);抓前清旧数据;操作路径最小化(只演问题场景,别混入无关操作)。应用侧配合:关键路径埋跟踪点(应用自定义事件会出现在时间线里,与系统事件同轴对齐)——这是分析效率的最大杠杆。
▍分析的基本功
时间线打开后先缩放到问题区间(卡顿的那一两秒)。看三层:应用层(自定义事件:帧开始、脏区计算、绘制、提交);进程层(线程状态:运行、睡眠、等待);系统层(合成节拍、调度事件)。卡顿的形态对号入座:主线程长期运行(单线程忙,看它在忙什么——自定义事件区间定位);线程频繁短睡(等锁或等 IO,看唤醒源);渲染提交晚于节拍(绘制太慢或开始太晚)。
▍典型结论模板
一次真实分析的输出长这样:主线程在帧 N 的绘制区间耗时是平均值的六倍,区间内自定义事件命中图片解码——结论:大图同步解码卡帧,改异步预解码。跟踪的价值就是把这样的因果链摆出来,而不是泛泛说性能不好。
▍注意事项
一,跟踪本身有开销,抓取时的绝对时间不可信,用相对对比(问题帧与正常帧的比值)。二,偶发问题要多轮抓取(骰子型问题单轮数据无效——Air 系列的方法论:风暴时点方差大,判定要三轮以上重复)。三,文件转表格工具可以做段级聚合(各线程各状态的时间占比),比肉眼看时间线快。
▍验收自测
对你手上的应用抓一次冷启动跟踪,说出启动最长的三个区间各是什么。说得出,这门课就入门了。
免费无广告的安装包可以在官网下载体验。
楼主
7 天前