【问题回溯】记录处理launcher3滑动卡顿问题

  • 项目
  • 问题背景
  • 问题描述
  • 分析过程
    • 初步分析
    • 挖根因
    • 验证观点
    • 修改和验证
  • 结论和反思
    • 结论
    • 反思

项目

Android14,展锐T606

问题背景

老平台升级Android13升级到Android14,对此问题无影响

问题描述

客户反馈在launcher应用列表中滑动卡顿明显,选中的刷新率为60hz

分析过程

初步分析

先精确问题,自测发现只有launcher中滑动会掉帧,在其他应用不会掉帧

直接自己抓trace看,掉帧发生时的trace中,直接宏观观察app和sf出帧姿态,不是常规的卡顿掉帧,是稳定的出一帧掉一帧,帧率为30fps

在这里插入图片描述

app这边不用看了,因为app发生挤压的原因是dequeuebuffer在等待sf唤醒,不是执行耗时;而sf这边因为本身需要合成的时候没有合成,让app等待,才造成app挤压。

所以下一步是看sf为什么稳定掉帧

如下两图,选取任意两帧,其中A帧不掉,B帧掉,进行分析,发现其差异在B帧没有setSfWakeUp这个动作,并且多了scheduleFrame动作后中断合成

在这里插入图片描述
在这里插入图片描述

继续追溯到源码中,在surfaceflinger模块搜索isFencePending,找到相关源码的对应逻辑
在这里插入图片描述

SurfaceFlinger::commit函数中,进行了isFencePending判断,B帧为true,退出。含义为fence未被release。

初步结论:fence未被release,造成掉帧。

下一步:继续查看为什么fence不释放,造成稳定的掉帧。

挖根因

目前继续从trace中查看,也不知道查看哪一路信号量。

尝试从其他的log类型获取信息。

既然问题出在合成阶段,那就dump一下launcher应用列表界面的sf,看看合成情况

adb shell dumpsys SurfaceFlinger > sf.txt

如果是解锁后的debug版本,还可以打开以下宏控,然后抓取ylog

adb root
adb remount
adb shell setprop debug.hwc.info 1
adb shell setprop debug.gsp.info 1
adb shell setprop debug.dpu.info 1adb shell "echo 0x3 > /sys/module/drm/parameters/debug"

从sf中可以看到当前合成的图层信息,其中很明显的是Wallpaper有一个缩放动作,从4k缩到720p

因为缩放是采用的GSP合成,此芯片GSP合成慢,可能是这个原因导致gsp合成超时,fence释放慢,引发的掉帧问题。
在这里插入图片描述

如果开启了上述宏控,还能从抓到的ylog中搜索gsp相关信息:
在这里插入图片描述
目前能得出一个信息:和gsp合成相关

所以可以到trace中继续搜索gsp信号,能搜到如下信息
在这里插入图片描述

能看到此处的drm在等待gsp-core唤醒,而gsp-core为sleep状态,该trace中无法进一步往更底层追查。
在这里插入图片描述

结合目前的信息,能得到如下影响链:

壁纸为4k->bsp合成耗时长->drm等待超时->fence不能在一个vsync内释放->sf拿不到fence不进行合成->掉帧

验证观点

为了验证这一观点,可将合成方式强制转换为更快的gpu合成。

可用于验证是否合成方式引发的掉帧

方式:设置->开发者选项中->打开停用hw叠加层

打开后,再进行测试,现象未见卡顿,从trace中未见掉帧,dump sf也能看到wallpaper的合成方式变为了GPU。

这说明之前的分析是正确的

修改和验证

拍摄照片,查看相册中照片的分辨率,为4k。进到设置中,分别尝试将系统自带的壁纸资源和拍摄的4k照片设置为壁纸,都不会有掉帧现象,说明设置中修改壁纸时,会对资源做裁剪。

进一步更新现象为:在系统默认的壁纸下,launcher中进行滑动会稳定30fps。

所以,只需要将源码中默认壁纸的尺寸换为720p的,就可以处理此问题。

注:

1.GSP合成慢是芯片的瓶颈,只能想办法不用gsp合成,即修改图片尺寸,使用dpu合成。

2.为什么不强制使用gpu合成?因为功耗会很高,强制gpu合成仅作为debug手段,排查是否合成方式导致的掉帧。

默认壁纸存放路径:
framework/base/core/res/res/drawable-sw720p-noapi/default_wallpaper.png

结论和反思

结论

壁纸为4k->bsp合成耗时长->drm等待超时->fence不能在一个vsync内释放->sf拿不到fence不进行合成->掉帧

遂修改默认壁纸的尺寸为720p,不让其以gsp方式合成

反思

之后出现类似问题,在前方保留现场时,除了要求trace以外,应同步要一下sf的dump。这次问题是自己抓取信息,所以随时可以抓取,以后场景就不一定了。分析到一半再要求需要的信息,会比较拖节奏

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能|集成学习——混合专家模型 (MoE)

随着 Mixtral 8x7B (announcement, model card) 的推出,一种称为混合专家模型 (Mixed Expert Models,简称 MoEs) 的 Transformer 模型在开源人工智能社区引起了广泛关注。在本篇博文中,我们将深入探讨 MoEs 的核心组件、训练方法,…

论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)

文章目录 1 要点2 方法2.1 算法设计2.2 设计选择 1 要点 题目:用于千兆像素图像的自监督学习 (Giga-SSL: Self-Supervised Learning for Gigapixel Images) 代码:https://github.com/trislaz/gigassl 研究目的: 现有的WSI分类方法依赖于有…

C语言蓝桥杯:语言基础

竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_search函数,用于查找…

运动耳机哪个牌子最好用?年度精选五款好用的骨传导耳机推荐

相信大家都已经深有体会,拿那种常规的入耳式无线蓝牙耳机来做运动耳机,很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机,虽然简单轻巧,但也是入耳式设计,长时间佩戴耳朵不舒服。这样看来,运…

vulhub spring 远程命令执行漏洞(CVE-2022-22963)

1.执行以下命令启动靶场环境并在浏览器访问 cd spring/CVE-2022-22963docker-compose up -ddocker ps 2.反弹shell 构造payload 页面刷新抓包,修改内容 POST /functionRouter HTTP/1.1 Host: 192.168.0.107:8080 Accept-Encoding: gzip, deflate Accept: */* Acc…

uni-app实现web-view和App之间的相互通信

双向实时 如果app端部署成网站&#xff0c;则web-view就是iframe&#xff0c;使用也可以双向通讯 https://uniapp.dcloud.net.cn/component/web-view.html APP端代码 index.vue: <template><web-viewid"m-webview":fullscreen"true":src"…

python-确定进制

题目描述 6 942 对于十进制来说是错误的&#xff0c;但是对于 13 进制来说是正确的。即 6(13)​ 9(13)​42(13)​&#xff0c;而 42(13)​4 13^12 13^054(10)​。 你的任务是写一段程序读入三个整数 p,q 和 r&#xff0c;然后确定一个进制 B(2≤B≤16) 使得 p qr 。如果 B 有…

CMS之Wordpress建设

下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…

VLAN配置学习笔记

1、VLAN的基础配置命令 &#xff08;1&#xff09;创建VLAN [Huawei] vlan vlan-id 通过此命令创建VLAN并进入VLAN视图&#xff0c;如果VLAN已存在&#xff0c;直接进入该VLAN的视图。 vlan-id是整数形式&#xff0c;取值范围是1&#xff5e;4094。 [Huawei] vlan batch {…

docker管理redis集群

1.拉取redis镜像 docker pull redis拉取完成 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest a617c1c92774 3 years ago 105MB2.运行redis容器 docker run -itd --name redis-test01 -p 6379:6379…

Apache OFBiz 远程代码执行漏洞复现(CVE-2024-45195)并拿到shell

FOFA&#xff1a;app"Apache_OFBiz" 复现&#xff1a; VPS上准备两个文件 rceschema.xml <data-files xsi:noNamespaceSchemaLocation"http://ofbiz.apache.org/dtds/datafiles.xsd" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

c++基类和派生类对象的赋值转换——赋值兼容规则

1.引出 如下场景&#xff1a; 由于b是double类型&#xff0c;所以赋值给int类型的引用前&#xff0c;要先进行隐式类型转换&#xff0c;这中间会生成临时对象&#xff0c;类是对象具有常性&#xff0c;所以int&之前应该加上const。 但是下面的场景&#xff1a; 没有出现报…

Qt进程通信,不推荐使用QSharedMemory和QLocalSocket,而是推荐ZMQ

一、据一位资深的网友说QLocalSocket有问题&#xff0c;共享内存QSharedMemory也有&#xff0c;比如存在多线程问题&#xff0c;不灵活&#xff0c;丢数据等问题都有&#xff0c;而且还占资源。血的教训。后来换成了zmqprotobuf。ZMQ进程内&#xff0c;进程间&#xff0c;机器间…

电脑文件怎么加密?文件加密方法介绍

随着数字化时代的到来&#xff0c;电脑文件的安全性问题日益凸显。为了保护个人隐私和企业数据&#xff0c;文件加密成为了一项重要的安全措施。本文将详细介绍几种常见的电脑文件加密方法&#xff0c;帮助你更好地保护自己的数据安全。 超级加密3000 超级加密3000提供了两种主…

F110批量付款如何Debug BTE增强(后台JOB的调试方法)

F110批量付款如何Debug BTE增强&#xff08;后台JOB的调试方法&#xff09; SAP系统中的F110&#xff08;Automatic Payment&#xff09;是一个常用的付款程序&#xff0c;在实施过程中&#xff0c;也经常会遇到一些运行的错误&#xff0c;而对于此类的错误&#xff0c;通常的…

网络分析仪仪器校准要怎么进行检测?容易出现哪些误差?

当我们使用矢量网络分析仪时&#xff0c;会发现测量数据存在误差。要纠正它&#xff0c;首先要知道矢量网络分析仪的误差来源是什么。 主要有三个方面:漂移误差、随机误差、系统误差。 一、 漂移误差:是由于仪器或测试系统仪器校准之后性能发生变化引起的&#xff0c;主要是温…

uni-app和Node.js使用uni-push2.0实现通知栏消息推送功能

前言 uniapp 提供了 unipush 统一推送服务,但是每次要推送消息的时候都要登陆 Dcloud 开发者后台&#xff0c;有点不方便&#xff0c;运营需要在我们的后台系统就可以完成操作。 效果演示 消息下发流程 名词解释 名词解释通知消息指定通知标题和内容后&#xff0c;由个推 SD…

【STM32】OLED

OLED显示原理 OLED使用的是I2C协议&#xff0c;使用ssd1306芯片对所有灯进行控制&#xff0c;如果一个灯需要一个引脚的话&#xff0c;屏幕分为8页&#xff0c;每页有128列&#xff0c;8行 . 共有128* 88个灯 这样引脚是算不过来的&#xff0c;所以我们使用了ssd1306芯片&…

【深度学习】【图像分类】【OnnxRuntime】【C++】ResNet模型部署

【深度学习】【图像分类】【OnnxRuntime】【C】ResNet模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【图像分类】【OnnxRuntime】【C】ResNet模型部署前言模型转换--pytorch转onnxWindows平台搭建依赖环境ONNXRuntime推…

搜索功能技术方案

1. 背景与需求分析 门户平台需要实现对服务信息的高效查询&#xff0c;包括通过关键字搜索服务以及基于地理位置进行服务搜索。面对未来可能的数据增长和性能需求&#xff0c;选择使用 Elasticsearch 来替代 MySQL 的全文检索功能。这一选择的背景与需求可以总结为以下几点&am…