美文网首页
Systrace 学习笔记

Systrace 学习笔记

作者: 程序员Android1 | 来源:发表于2021-05-31 20:26 被阅读0次

    和你一起终身学习,这里是程序员 Android

    经典好文推荐,通过阅读本文,您将收获以下知识点:

    一、Systrace 红绿黄 frame 代表意义?

    绿色: 一帧耗时在 1 个 vsync 周期内完成。
    黄色: 一帧耗时在 1-2 个 vsync 周期内完成。
    红色: 一帧耗时在 2 个 vsync 周期以上完成。

    二、Systrace 中 如何判断丢帧?

    SurfaceFlinger 是判断丢帧的关键

    1.SurfaceFlinger 的 UIThread 在每个 Vsync-SF 的时候是否没有合成?
    2.如果没有合成操作,那么需要看没有合成的原因:

    • a.因为 SurfaceFlinger 检查发现没有可用的 Buffer 而没有合成操作?
    • b.因为 SurfaceFlinger 被其他的工作占用(比如截图、HWC 等)?

    3.如果有合成操作,那么需要看对应的 App 的 可用 Buffer 个数是否正常:
    如果 App 此时可用 Buffer 为 0,那么看 App 端为何没有及时 queueBuffer(这就一般是应用自身的问题了),因为 SurfaceFlinger 合成操作触发可能是其他的进程有可用的 Buffer .

    三、Vsync 是什么?

    Vsync (Vertical Synchronization ) 垂直同期, 将 FPS 与 屏幕刷新率同步起来,避免撕裂现象发生。

    四、Systrace 中 Input 事件有哪些关键字?

    • InputReader: System_server 中,负责从 EventHub 中读取出 input 事件,并放入 InboundQueue
    • InboundQueue :存放input 事件,交给 InputDispatcher处理。
    • InputDispatcher: System_server 中,对input事件进行包装分发
    • OutboundQueue:即将要被派发给对应 AppConnection 的事件
    • WaitQueue:已经派发给 AppConnection 但是 App 还在处理没有返回处理成功的事件
    • PendingInputEventQueue:记录的是 App 需要处理的 Input 事件
    • deliverInputEvent : App UI Thread 被 Input 事件唤醒
    • InputResponse:标识 Input 事件区域,这里可以看到一个 Input_Down 事件 + 若干个 Input_Move 事件 + 一个 Input_Up 事件的处理阶段都被算到了这里

    五、 抓取/打开 Systrace 的方法是怎样的?

    抓取:
    1.Android SDK monitor
    Android Device Moniter -- capture system wide trace using Android systrace
    2.手机开发者模式自带
    Developer Options --System Tracing ( 文件保存路径:data/local/traces )
    3.pyhton 命令
    python systrace.py -o trace.html -t 77 gfx am input view wm res idle freq sched camera -b 102400 --time=10
    打开:
    chrome://tracing/
    https://ui.perfetto.dev/#!/viewer

    六、Systrace 中的线程状态有哪些?

    绿色: Running 运行中,点击可查看 CPU 运行状态,运行时间等。
    蓝色: Runnable 待运行,等待CPU调度,时间越长表示 CPU 调度越繁忙。
    白色: Sleeping

    至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    相关文章

      网友评论

          本文标题:Systrace 学习笔记

          本文链接:https://www.haomeiwen.com/subject/dhnjsltx.html