systrace分析 之 问题初步定位

2、systrace分析 之 问题初步定位

  • 1、找到问题点
  • 2、有buffer,SF却什么没有取
    • 2.1、GPU 处理时间长导致
    • 2.2、区分HWC release 是否有异常:
    • 2.3、SF 异常导致
    • 2.4、SF 自身处理时间长
    • 2.5、RenderThread处理时间长
  • 3、案例分享

1、找到问题点


2、有buffer,SF却什么没有取

有tx buffer但sf 却什么都没有取,可以往下继续check 出帧process 的render thread 和 GPU complation /hwc complation的状态。

2.1 GPU 处理时间长

如下示例中,buffer TX 中有两个buffer,但SF 却没有去取,往下看,是前一帧的 waiting for GPU completion 在vsync-sf来的时候都没有完成。所以需要请GPU 进一步确认。

2.3、区分HWC release 是否有异常:

首先,需要先了解下HWC和GPU之间的fence是怎么样的一个过程?
    . GPU拿的是acquireFence   HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,
    . 要GPU画完这块buffer acquireFence放掉,SF才能拿去合成显示,
    . 要driver完成合成显示,放掉releaseFence,GPU才能拿这块buffer去绘制,
    . 如果此时可用的buffer不止一块,可以一边合成一边绘制下一张,但是如果下一张画完了当前帧的releaseFence没有放掉,当前帧合成还没完成,
      就必须等待releaseFence放掉才能合下一帧   

下图是两个案例,因为wait PreFence 和waiting for HWC release 的时间是平行的,所以第一例中,虽然没有HWC release的信息,但是也可以从wait PreFence 的时间来估算HWC 那边的时间。 


2.3、SF 异常导致

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。

2.4 SF 自身处理时间长

如下图中(120hz的刷新率,所以1 vsync = 8.333ms),整个surfaceflinger 的UI thread 看起来很忙,无空闲时间。则直接进一步check SurfaceFlinger

 

 2.5、RenderThread 处理时间长

如下实例中确认有tx buffer,但SF 没有去取是因为当前帧的GPU 合成还没有做完。 

但是GPU合成没有做完的原因是因为RenderThread 前期处理时间是太长,queuebuffer trigger 的太晚。所以需要进一步确认 RenderThread处理时间长的原因

3、案例分享

如下图中,虽然Frames有很多黄灯的地方,但是SurfaceFlinger只有三个空缺点,所以只需要check 那三个空缺点掉帧的原因就好。 

该案例为120hz的刷新率,所以1 vsync = 8.333ms

从图中UI thread 和 RenderThread的duration时间来看,都是UI Thread 的animation 时间较长导致。所以可以按照UI Thread 的check 方式进一步处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/151856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GoLong的学习之路,进阶,标准库之并发(context)补充并发三部曲,你真的明白context吗?

其实对于,context来说,如果只是用来做并发处理就有些不太合适。因为对于golang来说,context应用场景不仅在并发有用,并且在网络链接,http处理,gorm中都有体现。但是其实,本质来说。以上这些场景…

ubuntu云服务器配置SFTP服务

目录 一、安装并运行SSH服务 1,安装ssh服务 2,运行ssh 3,查看ssh运行状态 二、创建SFTP用户并进行用户相关的配置 1,创建SFTP用户 2,限制用户只能使用 SFTP,并禁止 SSH 登录。打开/ect/ssh/sshd_conf…

解析:什么是生成式AI?与其他类型的AI有何不同?

原创 | 文 BFT机器人 快速浏览一下头条新闻,你会发现生成式AI似乎无处不在。事实上,一些新闻标题甚至可能是通过生成式AI编写的,例如OpenAI旗下的ChatGPT,这个聊天机器人已经展现出了生成看起来像人类所写文本的惊人能力。 当人们…

io+day8

#ifndef __SEM2 #define __SEM3 4 //声明一个创>5 int init_sem(6 7 //声明一个p操8 int P(int sem9 10 //声明一个v操11 int W(int sem12 13 //声明一个删>14 int del_sem(i15 16 #endif 1 #include <myhead.h> …

【博客系统】 二

本文主要介绍了linux和如何在云服务器上部署一个简单的servlet程序. 一.云服务器 真正搞一个网站,是希望这个网站被其他人访问到 , 所以需要一个云服务器(具有外网ip)来让别人也可以访问 云服务器 操作系统是Linux(一般都是通过命令行来操作) 当前市面上常见的系统: 1.windo…

IDEA写mybatis程序,java.io.IOException:Could not find resource mybatis-config.xml

找不到mybatis-config.xml 尝试maven idea:module&#xff0c;不是模块构造问题 尝试检验pom.xml&#xff0c;在编译模块添加了解析resources内容依旧不行 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.or…

魔众文库系统 v5.6.0 DWG文件格式支持,部分数据封面显示异常,定时调度清理临时文件

魔众文库系统基于文档系统知识&#xff0c;建立平台与领域&#xff0c;打造流量、用户、付费和变现的闭环&#xff0c;帮助您更好的搭建文库系统。 魔众文库系统发布v5.6.0版本&#xff0c;新功能和Bug修复累计17项&#xff0c;DWG文件格式支持&#xff0c;部分数据封面显示异…

P95陷阱

想象这个场景&#xff1a; 一位测试同事走到你的座位旁&#xff0c;说&#xff1a;“接到客户&#xff08;上游系统&#xff09;反馈&#xff0c;说我们系统有个Rest接口响应慢。我看了监控上的P95响应时间&#xff0c;都一秒多了&#xff0c;帮忙看看吧。” 又来活了。 你喜…

langchain 之 Tools 多案例使用(一)

原文&#xff1a;langchain 之 Tools 多案例使用&#xff08;一&#xff09; - 简书 ATTENTION: 如果采用 openai 的接口&#xff0c;需要走代理&#xff0c;本文采用 proxychains 进行设置。开启 debug 模式后&#xff0c;能看到更多的输出信息。 import langchain langcha…

ROC 曲线:健康背景下的应用和解释

一、介绍 在医疗保健领域&#xff0c;做出明智的决策对于改善患者治疗结果、有效分配资源和设计有效的诊断测试至关重要。受试者工作特征 (ROC) 曲线是一个强大的工具&#xff0c;在评估诊断测试的性能、区分健康个体和患病个体以及优化医疗保健干预方面发挥着至关重要的作用。…

第07章 面向对象编程(进阶)

一 关键字&#xff1a;this 1.1 this是什么&#xff1f; 在Java中&#xff0c;this关键字不算难理解&#xff0c;它的作用和其词义很接近。 它在方法&#xff08;准确的说是实例方法或非static的方法&#xff09;内部使用&#xff0c;表示调用该方法的对象。它在构造器内部使…

【android】install android NDK

目录 1 下载NDK 2 解压 3 android-ndk的配置 1 下载NDK 下载网址&#xff1a;NDK 下载 | Android NDK | Android Developers 如果没有所需要的版本&#xff0c;则点击页面下面 不受支持的 NDK 下载需要的版本。 2 解压 将压缩文件&#xff08;例如 android-ndk-r25c-…

(五)什么是Vite——冷启动时vite做了什么(依赖、预构建)

vite分享ppt&#xff0c;感兴趣的可以下载&#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录&#xff1a; &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff0…

一看就会的jni,不会你来打我!

环境配置 Android Studio&#xff0c;这个不多说了。 简单说一下NDK的下载和环境变量&#xff0c;方便在Terminal里使用命令(mac版)。 下载 1.可以通过Android Studio内置的Settings-Android SDK-SDK Tools安装NDK&#xff0c;下载目录为 /Users/mac-xxx(Username)/Library…

VF01 bapi BAPI_BILLINGDOC_CREATEMULTIPLE修改付款方

系统标准通过函数SD_PARTNER_READ&#xff0c;读取VBPA表销售订单对应的伙伴。 调整通过源代码增强LV60AA01最后位置。

《QT从基础到进阶·二十九》QT,opencv源码调试

有时候我们在使用VS调试程序的bug&#xff0c;但发现程序崩溃的地方并不在我们写的程序中&#xff0c;我们通过调用堆栈发现程序崩溃的地方出现在QT或者opencv等源码中&#xff0c;那么我们怎么能把断点打到这些开源库中&#xff0c;下面提供一种办法&#xff1a; 解决方案–右…

单日充值破6000万、8天收入破亿,小程序短剧的商业真相

进入2023年以来&#xff0c;短剧发展的速度相当惊人。无论是从短视频平台的用户规模来说&#xff0c;还是从短剧内容的商业效益来看&#xff0c;都进入了双增长的狂飙模式。 小程序指的是在一些APP的小程序平台上&#xff08;多为微信端&#xff0c;抖音、快手等平台也有&…

使用requests库解决Session对象设置超时的问题

在requests库的IRC频道中&#xff0c;提出了一个问题&#xff0c;即Session对象在requests库中没有一个可以全局设置的timeout属性&#xff0c;而是需要为每个请求传递timeout值&#xff0c;或者创建一个自定义子类来实现。 为了解决这个问题&#xff0c;可以向Session对象添加…

Apache阿帕奇安装配置

目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip ​编辑​ 5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统…

中国芯片金字塔成形,商业化拐点将至

其作始也简&#xff0c;其将毕也钜。 传说埃及用时30年建成左赛尔金字塔&#xff0c;成为亘古不灭的世界奇迹。在今天&#xff0c;中国芯片产业走过8年“国产替代”历程&#xff0c;国产芯片的“金字塔”体系业已初具雏形&#xff0c;展现出蓬勃的发展潜力。 2023年是补全自主…
最新文章