关于使用perfetto(systrace)对卡顿进行分析 |
您所在的位置:网站首页 › 鸿蒙系统掉帧 › 关于使用perfetto(systrace)对卡顿进行分析 |
Perfetto实战分析
文章目录
Perfetto实战分析前言一、Perfetto是什么?二、分析步骤1.将Trace文件导入到perfetto中2.分析卡顿原因
总结
前言
本文主要讲述了我在使用perfetto分析小米系统中桌面滑动卡顿的方法以及步骤。 这是我用的trace文件: 链接:https://pan.baidu.com/s/11EhCvu0pfR7Qfu6bDf_GLw?pwd=ic43 提取码:ic43 一、Perfetto是什么?Perfetto 是用于性能检测和跟踪分析的生产级开源堆栈。它提供用于记录系统级和应用级跟踪、本机 + java 堆分析、使用 SQL 分析跟踪的库以及用于可视化和浏览多 GB 跟踪的基于 Web 的 UI 的服务和库。 二、分析步骤 1.将Trace文件导入到perfetto中在地址栏输入https://ui.perfetto.dev/进入到perfetto中然后 发现三个可疑点: 很明显RenderThread线程耗时,任务繁忙,受CPU影响频率影响或者是跑到了小核上面。 我们先不看别的,我们先来看看surfacefinger,来看看APP是否提供了可用的Buffer来给surfacefinger进行合成,然后看一下surfacefinger主线程的合成情况,通过对比查看vsync-sf信号到来的时候是否有buffer可用,如果没有,则这一帧就发生了卡顿。(可以发现图中buffer为0) 接下来我们回到RenderThread线程,查看他的运行状态。 我们可以发现前面未发生卡顿的时候,RenderThread是跑在CPU6上,而发生卡顿的时候是跑在了CPU2上面(一般默认数字小的是小核,数字大的是大核,这里小米10pro是高通骁龙865,有四个小核,三个大核,1个超大核)故可以知道此次掉帧的原因是调度问题,是CPU大小核调度问题。 至于 RenderThread 的任务为啥跑着跑着就掉到了小核,这个跟调度器是有关系的,大小核直接的调度跟任务的负载有关系,任务从大核掉到小核、或者从小核迁移到大核,调度器这边都是有参数和算法来控制的,所以后续的优化可能需要从这方面去入手,比如: 1.调整大小核迁移的阈值参数或者修改调度器算法 2.参考竞品表现,看看竞品在这个场景的性能指标,调度情况等,分析竞品可能使用的策略 总结这是关于我此前使用perfetto工具对MIUI滑动桌面发生卡顿原因的分析。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |