首页 > 其他分享 >tracer ftrace笔记(20)—— Systrace中tag汇总

tracer ftrace笔记(20)—— Systrace中tag汇总

时间:2023-08-19 20:23:51浏览次数:44  
标签:ftrace 20 信号 Systrace 合成 XXX HW 硬件 VSYNC

一、视频显示

1. HW_VSYNC_ON_XXX

(1) 类型

布尔值,1 表示 HW VSYNC 信号开关被打开,0 表示开关被关闭。

(2) 时机

HW VYSNC 硬件信号被打开和关闭的时候。

(3) 解释

HW_VSYNC_ON_XXX 后面的 XXX 一般是一串数字,代表的是 displayid,如果你的机器有外接了显示器,那么可以通过 displayid 来区分不同的屏幕的 HW VSYNC 硬件信号。

HW VSYNC 硬件信号之所以会被一直打开关闭,主要原因是目前 Android Display/Graphic framework 依赖的信号不是硬件信号,而是软件信号——DispSync。HW VSYNC 只是用来做校准,打开的时机是当软件 VSYNC 的误差超过一定阈值以后,DispSync 就会主动打开 HW VSYNC 信号来做校准,(目前是)接收 6 个硬件信号以后就会关闭。

(4) 作用

可以用来作为分析项目前期硬件侧导致的各种 bug 的时间锚点。


2. HW_VSYNC_XXX

(1) 类型

瞬时布尔值,从 1 变成 0 或者 0 变成 1 都表示当前时刻发出了 HW_VSYNC。

(2) 时机

HW VSYNC 硬件信号发出的时候。

(3) 解释

需要说明很重要的一点,从 Systrace 看,HW_VSYNC_XXX 似乎是一个区间,实际上,Systrace 中的 HW_VSYNC_XXX 应该这么解读:
HW_VSYNC_XXX 的值是一个瞬时值,记录的是在当前时刻收到了 HW VSYNC 硬件信号,因此在 Systrace 中,当 HW_VSYNC_XXX 的值从 1 变成 0 或者从 0 变成 1,都代表着收到了 HW VSYNC 信号,类似于示波器中的脉冲信号一样。
当收到硬件的 HW VSYNC 信号之后,HWComposer::onVsync() 这个函数就会被回调,接着这个 displayData.vsyncTraceToggle 的值就会被一直取反,模拟出一个脉冲信号的样子并赋给 HW_VSYNC_XXX。
而前面我们在 HW_VSYNC_ON_XXX 提到的,DispSync 在收到 6 个 HW VSYNC 硬件信号之后就会把 HW VSYNC 关闭,systrace上也是可以看的出来的。

(4) 作用

分析 HW VSYNC 硬件信号会有不发或者乱发的问题。


3. hasClientComposition

(1) 类型

布尔值,1 表示本次合成有 GPU 合成(注意是有 GPU 合成,而不是只有 GPU 合成),0 表示本次合成没有 GPU 合成。

(2) 时机

SurfaceFlinger::doComposition() 的开头。

(3) 解释

SurfaceFlinger 按照合成的硬件不一样,有两种类型:

CLIENT 合成:
又称为 GPU 合成,通过 CompositionEngine(RenderEngine线程) 调用一系列的 OpenGL ES 接口去完成合成的操作。

DEVICE 合成:
又称为 HWC 合成,这种合成方式是使用 Hardware Composer 来进行合成。Hardware Composer 是一种特殊的硬件,在高通平台曾用名为 SDE,现在称为 DPU。

利用 Hardware Composer 来合成优势省电,快速,劣势 Layer 是圆角的、Layer 的总数超过硬件的上限无法使用,其次合成逻辑和策略闭源,如果出现问题只能依赖 vendor 去解决。

(4) 作用

如果发现了本应该是 DEVICE 合成的场景出现了 hasClientComposition 等于 1 的情况,那么就说明合成策略有问题。


4. PrevFrameMissed/PrevGpuFrameMissed/PrevHwcFrameMissed

(1) 类型

布尔值,1 表示上一次的合成有对应的 FrameMissed 类型,0 表示没有。

(2) 时机

SurfaceFlinger 合成 Invalidate 阶段的最开始。

(3) 解释

代表的是 SurfaceFlinger 上一次合成的结果,当 SurfaceFlinger 合成完的帧显示到屏幕上时,present fence 就会 signal。因此 可以认为 present fence signal 相当于一次合成的彻底完成。#########
因此,SurfaceFlinger 在每一次开始被 VSYNC-sf 唤醒的时候,会先检查上次合成的情况,方式就是检查上一次合成的 present fence 有没有 signal。如果没有那么就认为是一个 FrameMissed,并且依据上一次合成的方式是否有 GPU 或者是 HWC 参与,对 GpuFrameMissed 和 HwcFrameMissed 进行置位。

(4) 作用

present fence 没有及时 signal 主要有两种原因:

(1) Display 出问题了。App/游戏的 GPU 负载太高了,导致底层大部分时间都花在了等 GPU 渲染工作完成,延后了 present fence 的 signal,######## 从而导致 FrameMissed。
FrameMissed 目前在 Android 官方有两个作用:

(2) 统计。Android 官方有一个 debug 开关,可以在检测到上一帧有 FrameMissed 出现的时候,跳过本次的合成,######### 留给底层更多的时间去显示。这个初衷是好的,不让底层过于繁忙,通过主动跳过合成来减缓底层的工作量。但是由于跳过合成就相当于主动丢帧,在某些场景下会导致到持续性的掉帧。因此这个开关一般是不会打开的。


5. VSYNC-sf/VSYNC-app

(1) 类型

瞬时布尔值,变化的时候表示该时刻发出了 VSYNC-sf/VSYNC-app 软件信号。

(2) 时机

DispSync 分发的时候。

(3) 解释

是应用渲染/SurfaceFlinger 合成的起点。

(4) 作用

VSYNC-app 和 VSYNC-sf 作为 DispSync 两个分发,是应用渲染/SurfaceFlinger 合成的起点,也是我们分析一个 Systrace 一开始最应该看的地方。如果某一处 VSYNC-sf 没有了,那么就说明该处有丢帧的情况,要么是 SurfaceFlinger 主动丢帧(如前面提到的);要么是 app 没有及时渲染完导致的丢帧。

 

 

 

 

参考:

Systrace 中的这些 tag 究竟是什么意思(一)| 掘金技术征文-双节特别篇:https://juejin.cn/post/6879336157277061133

 

标签:ftrace,20,信号,Systrace,合成,XXX,HW,硬件,VSYNC
From: https://www.cnblogs.com/hellokitty2/p/17643014.html

相关文章

  • 2023.8.19-假期周进度报告
    本周,主要进行暑期社会调查内容的思考和基本社会调查报告的编写,下周准备继续完成暑期社会调查报告和调查日志的编写,并按要求将它们抄到纸上。本周日,思考社会调查的主题,完成了社会调查的主题,遇到了社会调查写什么好呢的问题,解决方法是想到既然在揽月湾附近,就以揽月湾为主题写一个社......
  • iBooker 技术评论 20230819:打工是风险最高的事情
    很多人总是认为打工是稳定的事情,因为每个月都有工资到账。但是这个稳定从来不取决于你,是公司所决定的。换句话说,公司想什么时候开除你就什么时候开除你。这么看来,打工毫无稳定可言。根据墨菲定律,如果公司能够迫害你,或者说迫害你的收益大于不这么做,就一定会迫害你。那为什么多数人......
  • 2022 上海闵行高三一模英语订正
    I卷除听力订正语法填空第25题,根据文章第一句话可以知道:英国最近才推出政策。用过去式不好,而【现在进行时/一般现在时/现在完成时】都是可以的,填istaking/takes/hastaken。第30题,句意很清楚:“无论政策和规定有什么不同,有一件事很清楚……”,但是不知道两个空的【无论......
  • 2023.8 水题记录
    集训回来之后做题频率下来了.1.CF1856DMoreWrong这场CF场上只写出来ABD(主要卡B的证明上了),什么水平?90%交互=binarysearch(暴论)2.CF1851GVladandtheMountains是我没见过的操作.学到了.3.CF1856CToBecomeMax考试的时候没看.很简单.4.CF1270G......
  • 漏洞复现报告:CVE-2017-18349
    漏洞简介CVE-2017-18349是Fastjson1.2.24版本中的一个反序列化漏洞,该漏洞可能导致远程代码执行(RCE)。Fastjson是一种用于处理JSON数据的Java库,该漏洞允许hacker通过构造恶意的JSON数据来执行任意代码。漏洞原理fastjson在解析json对象时,会使用autoType实例化某一个具体的类,并调用se......
  • 2023.7 水题记录
    一天天就会做板子题和水题/oh如果只写了啊?那说明我认为这个题过于厉害.1.P5459[BJOI2016]回转寿司前缀和之后在权值线段树上查询.2.P8862「KDOI-03」还原数据倒序考虑操作之后贪心,用线段树维护.3.P4247[清华集训2012]序列操作选\(c\)个数加起来这个东西是......
  • 2022 彩虹云商城 最新彩虹代刷V6.9.0免授权纯净完整版
    2022彩虹云商城最新彩虹代刷V6.9.0免授权纯净完整版直接上传源码解压缩后访问域名安装即可,亲测可用彩虹自助下单系统安装说明:上传到空间后直接访问即可根据提示安装。PHP使用7.0及以上版本V6.91.修复SQL注入漏洞V6.8.51.修复亿乐对接2.新增支持倍数输入框V6.81.更新全新的faka模......
  • P9425 [蓝桥杯 2023 国 B] AB 路线 题解
    ~~应该能过官方数据吧~~---回归正题。我开始想过更简单的深搜,但是我怕无法记忆化,所以选择了广搜。和普通的广搜不同,此题的队列要存$3$个维度,分别是$x$,$y$,$z$,分别表示横坐标、纵坐标、目前的步数模$2k$的值。此时我们可以把每$2k$步进行分组,前$k$步走在```A```的格子......
  • 2023.8.19JD笔试题目
    第二题题目大意是给一个长度20的01字符串,1表示得了该种病0未得。给出m种药每种药喝完可以治疗一些症状也可以诱发一些新症状,由两个长度为20的01字符串表示。然后给出用药顺序,求用完所有药后还有多少种症状。分析:*每次吃药等同于位运算,额外获得的新症状用a|b求,治疗的症状用a&(^b......
  • T型槽铝框架型材行业调研及未来趋势2023-2029
    2023-2029全球T型槽铝框架型材行业调研及趋势分析报告 2022年全球T型槽铝框架型材市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国T型槽铝框架型材市场占据全球约%的市场份......