【腾讯优测干货分享】安卓专项测试之GPU测试探索

使用Trepn Profiler工具分析Dragonboard410c的功耗和性能(一) 一、简介Trepn™ Profiler工具是高通开发的运行在使用高通骁龙芯片或者硬件开发设备等移动设备上分析功耗和性能的一个应用,可以帮助准确分析手机应用的性能和耗电情况。下载链接:https://developer.qualcomm.com/download/trepn/trepn-profiler.zip二、功能 六个快速加载配置预设 叠加层显示在正在分析的应用程序的屏幕上 配置您的设备,或单个 阅读详情

本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63

作者:章未哲——腾讯SNG质量部

背景

我们在安卓上进行性能测试时,如果想获取CPU以及内存等常用性能指标,linux系统自身就提供了现成的方法,谷歌官方甚至公司内部也都提供了大量功能强大的分析工具。而相比之下,想要获取GPU的相关指标则没那么容易,甚至我们对GPU应该使用什么指标衡量都几乎一无所知。这一方面是由于系统没有提供相关接口与命令,另一方面似乎业界目前对于GPU的关注度不足,相关积累与沉淀较少,鉴于此,个人感觉GPU测试这一块也可以作为终端专项后面需要关注及攻克的课题。

通过这两天的调研,笔者将GPU的测试方法简单的分为两类:

  1. 安卓官方提供的工具及方法;
  2. GPU厂商提供的工具及方法。下面将具体介绍这两类测试分析方法。

一、安卓官方提供的工具

google或者百度“安卓GPU测试”等关键词搜索出来的结果多半属于这一类方法。这一类方法还有一个显著的共同点:没有提供GPU直接关键指标,而是通过逐帧计算界面绘制渲染的过程及消耗时间间接呈现GPU的占用。具体工具及使用方法如下:

1. GPU View Updates

开启方式:设置-开发者选项-显示GPU视图更新。主要查看view的更新以及redraw的区域大小。这个工具比较简单,不做具体介绍。

2. Show GPU Overdraw

开启方式:设置-开发者选项-调试GPU过度绘制-显示过度绘制区域。开启后的效果如下图:

过度绘制(overdraw)指的是某些组件在屏幕像素点上绘制次数超过一次,不同颜色代表含义如下:

  • 无色:无过度绘制,即该像素点只绘制1次
  • 蓝色:1倍过度绘制,即该像素点绘制了2次
  • 绿色:2倍过度绘制,即该像素点绘制了3次
  • 浅红:3倍过度绘制,即该像素点绘制了4次
  • 暗红:4倍过度绘制,即该像素点绘制了5次

在开发及测试的过程中,多倍过度绘制应该是需要特别注意并极力避免的。

3. Profile GPU Rendering

开启方式:设置-开发者选项-GPU呈现模式分析。

里面有两个选项:

  1. 在屏幕上显示条形图;
  2. 在 adb shell dumpsys gfxinfo中。

1、选择第一项,效果如下:

手机上出现大量GPU绘制信息,每条柱状信息代表一帧渲染时间,柱子越长代表这一帧的渲染时间越长,不同颜色代表每一帧渲染各个阶段所占时长。为确保画面流畅,系统每秒钟需要渲染60帧(60fps),即平均每帧渲染时间为16ms,上图中的绿色横线即为16ms“警戒线”,超过这个警戒线的柱子代表该帧渲染时间过长,可能造成界面卡顿。

柱子不同颜色的组成代表了每一帧渲染各阶段耗时,在4.x的系统中,只分了3个阶段,而在5.x系统中细分成4个阶段,而在6.0系统中更进一步细分为了9个阶段,上图是6.0系统下呈现的效果,而在4.x系统下的呈现效果如下图所示:

下面介绍各系统下不同颜色代表的含义:

4.x:

蓝色:代表绘制时间,即创建和更新display lists的时间
红色:代表执行时间,即系统进行2D渲染Display List的时间
橙色:代表处理时间,即CPU等待GPU完成渲染处理的时间

5.x:

新增紫色:代表渲染线程写入资源所需时间

6.x:

变成9种颜色,将渲染过程中的几大步骤进一步细分,可以通过Android Studio上的GPU Monitor可以看到各颜色含义更新如下(关于GPU Monitor下一小节会具体介绍):

  1. Swap Buffers:对应原先Process(橙色),表示处理任务的时间,也可以说是CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多;

  2. Command Issue:对应原先Execute(红色),表示执行任务的时间,这部分主要是Android进行2D渲染显示列表的时间,为了将内容绘制到屏幕上,Android需要使用Open GL ES的API接口来绘制显示列表,红色线条越高表示需要绘制的视图更多;

  3. Sync & Upload:表示的是准备当前界面上有待绘制的图片所耗费的时间,为了减少该段区域的执行时间,我们可以减少屏幕上的图片数量或者是缩小图片的大小;

  4. Draw:对应原先Update(蓝色),表示测量和绘制视图列表所需要的时间,蓝色线条越高表示每一帧需要更新很多视图,或者View的onDraw方法中做了耗时操作;

  5. Measure/Layout:表示布局的onMeasure与onLayout所花费的时间,一旦时间过长,就需要仔细检查自己的布局是不是存在严重的性能问题;

  6. Animation:表示计算执行动画所需要花费的时间,包含的动画有ObjectAnimator,ViewPropertyAnimator,Transition等等。一旦这里的执行时间过长,就需要检查是不是使用了非官方的动画工具或者是检查动画执行的过程中是不是触发了读写操作等等;

  7. Input Handling:表示系统处理输入事件所耗费的时间,粗略等于对事件处理方法所执行的时间。一旦执行时间过长,意味着在处理用户的输入事件的地方执行了复杂的操作;

  8. Misc Time/Vsync Delay:表示在主线程执行了太多的任务,导致UI渲染跟不上vSync的信号而出现掉帧的情况;出现该线条的时候,可以在Log中看到这样的日志: I/Choreographer(*): Skipped XXX frames! The application may be doing too much work on its main thread

关于这一部分的具体原理及详细解释可以参考Android性能优化典范:

http://hukai.me/android-performance-patterns/
http://hukai.me/android-performance-patterns-season-5/

2、选择第二项“adb shell dumpsys gfxinfo”,可以在终端中通过“adb shell dumpsy gfxoinfo taskName”命令获取对应进程的帧渲染日志文件。

4. GPU Monitor

另外,在Android Studio 1.4之后的版本中集成了GPU Monitor,也可以查看每帧的渲染耗时。使用方法如下:

将手机连接电脑病开启USB调试选项,打开Android Studio并点击底部的“Android Monitor”,选择待测的设备与进程,即可看到GPU Monitor的监控结果。以6.0系统为例,可以看到,GPU Monitor中呈现的信息实际上与GPU呈现模式分析中在手机屏幕上显示的柱状图是相同的。

GPU Monitor中展示的柱状图的颜色数量也是与系统版本有关的,若使用5.x系统,GPU Monitor中渲染耗时展示如下:

二、GPU厂商提供的工具

上面提到的方法都是通过监控帧渲染时间等手段间接反映GPU的状态,但是这些工具都不能满足我们的需求。其实我们的需求很简单:希望能够直接获得GPU占用率或者类似的指标,就如同top命令可以直接查看CPU占用率一样,简单快捷。但是,可能是由于相比CPU占用率,大部分开发者对GPU占用率并不是十分关心,不仅Linux/Android没有提供GPU占用指标,就连Windows上也没有提供原生的方法。Windows平台上有一些第三方工具能够监测显卡状态,例如GPU-Z,暂时还不太清楚其工作原理及精确度。而在Linux/Android平台上似乎还缺少比较权威的第三方监测工具,Linux上可以通过Nvidia提供的nvidia-smi命令获取GPU参数,但是对其他GPU支持有限。在Android端,高通也提供了一些工具能够监测GPU的运行情况,但是也仅仅支持使用了高通CPU/GPU的移动设备。高通开发了两个能够监测GPU的工具:

  1. Adreno Profiler;
  2. Trepn Profiler。

其中,前者是PC端的工具,功能强大,但是使用相对复杂,因此如果测试人员只需要简单的测试数据,没有必要使用该工具。有兴趣的同学可以在网上检索资料,官方网站:

https://developer.qualcomm.com/software/adreno-gpu-profiler
(复制链接在浏览器中打开)

本文主要介绍Trepn Profiler。Trepn Profiler是运行在终端上的性能监测工具,在应用宝等各大应用市场均能免费下载。

官方网站:

https://developer.qualcomm.com/software/trepn-power-profiler。
(复制链接在浏览器中打开)

Trepn Profiler能够实时监测手机几项主要性能指标,主要包括CPU、内存、GPU、网络流量以及电量。其中GPU监测仅支持搭载高通处理器的设备,而其他功能可以在搭载任意处理器的手机上使用。Trepn Profiler使用起来也十分简单,下面主要介绍如何使用该工具监测并提取GPU数据。

首先打开Trepn Profiler,可以看到以下界面:

各个入口对应了不同的监测指标,以CPU监测为主,而GPU监测隐藏在“Performance Graph”中,点击该按钮并划到最下方:

同CPU占用一样,这里使用百分比表示了当前GPU的占用情况,刚好能够满足我们的需求,完美!但是,非高通机器在这里面是找不到GPU Frequency和GPU Load这两个指标的。然而这仅仅提供了一个折线图,如果想获取更详细信息,比如说原始数据以及各进程对应的GPU占用,没关系,Trepn Profiler同样能够满足。

回到首页,点击左上角选项按钮,选择“ADVANCED MODE”,进入以下界面:

选择“Profile App”即可选择监测应用,在Setting中可以选择监测项目,采样频率等高级选项,同时还可以选择开启悬浮窗口实时监测。我们选择监测QQ空间直播过程中的GPU占用情况,并开启悬浮窗口实时监测GPU状态,如下图:

直播结束后,回到Trepn Profiler并选择“Stop Profiling”,会提示是否保存测试结果,选择“Save as .csv”,就可以保存测试过程中每次采样获得的原始数据。从手机中将csv格式的原始数据捞出来,可以用excel打开或者文本编辑器打开,可以根据后续需要自行选择数据处理方式。

总结

本文记录了一个小白探索安卓GPU测试方法的过程并总结了现有的几个方法,但是笔者感觉本文总结的几个方法还是存在许多不足,并且对GPU测试相关也仍然存在一些疑问,例如:是否有公认统一的GPU测试衡量指标?第三方(非GPU厂商)能否做到跨硬件平台的、精确的GPU监控与测试?

在专项测试关注的其他几个领域里,我们都建立了较完善的监控体系和工具集成,而相比之下,本文总结的GPU测试方法就显得过于简陋。随着当前直播业务的火爆以及未来VR/AR技术的逐步普及,将来会有越来越多的非游戏类应用涉及到较大规模的GPU运算。而目前我们专项测试乃至整个业界似乎对于GPU监控与测试的关注度还不够,所以最后也希望我们专项团队能够尽早完善GPU的测试方法以及监测体系。

笔者来自SNG质量部专项技术测试团队,由于本人刚入职还处于学习阶段,在性能/专项测试方面仍然资历尚浅,之前也没有接触过GPU以及图形学方面的知识,本文若有不准确不严谨不完善的地方,也请大家不吝赐教。

更多精彩内容欢迎关注腾讯优测的微信公众账号:

腾讯优测是专业的移动云测试平台,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供「全面兼容测试」、「云手机」等多种质量检测工具,同时在线下为VIP客户配备专家团队,提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖亿级用户,7*24小时在线运行,为各类测试工具提供支持。

腾讯优测优分享 | Android应用性能优化个人总结–图形优化 腾讯优测是专业的移动云测试平台,涵盖自动化测试-全面兼容性测试,远程真机租用,漏洞分析等,旗下优分享不定时提供大量的移动研发及测试相关的干货~ 应用UI卡顿常见原因主要在以下几个方面: 1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿; 2.布局Layout过于复杂,无法在16ms内完成渲染; 3.同一时间动画执行的次数过多,导致CPU或GPU负载过重; 4.Vi 阅读详情

相关推荐

使用Trepn Profiler工具分析Dragonboard410c的功耗和性能(二)

上篇简单介绍了一下Trepn Profiler工具的功能,那现在使用Trepn Profiler具体来分析一下Dragonboard410c。首先先打开Trepn Profiler,可以看到已经预设好的六个快速加载配置可以看到的,六个快速加载配置分别是cpu频率悬浮叠加显示、移动数据监测、性能图、cpu使用情况监控、cpu负载悬浮叠加显示、网络活动。每个配置的右边都标示了该配置可以查看的模式,像性能

尪錓chengx的博客 1347

图文结合,教您如何使用Trepn Profiler测试手机应用的耗电量

摘要:Trepn Profiler 可以帮助准确分析手机应用耗电情况的Android应用,可以测量很多与电池有关的数据,本文将结合图文,详细讲解如何操作。 Trepn Profiler 是一款帮助准确分析手机应用耗电情况的Android应用,可以测量很多与电池有关的数据,包括: 两款类似应用哪一个耗电量更低? 带广告的免费应用比无广告付费应用多消耗多少电量? 这款移动设备比另一款耗电更多吗? 开启省电模式后真的节约了很多电量吗? 设置对耗电的影响(如:关闭蓝牙、Wi-Fi、4G后节电效果明显.

chqj_163的专栏 1865

高通手机CPU状态深度分析:Trepn-profiler软件指南

trepn-profiler是高通公司推出的一款性能分析工具,专为Android平台设计,旨在帮助开发者和性能优化人员深入了解应用程序的资源消耗情况。作为一款强大的性能监控软件,trepn-profiler提供了CPU、GPU、内存等多方面的监控功能,使得用户能够从不同维度分析软件的运行状况,及时发现并解决可能存在的性能瓶颈。软件界面直观易用,即便是没有深厚技术背景的用户也能快速上手。

weixin_35749545的博客 1433

Snapdragon Profiler

哈哈

qq_39876973的博客 2200

Trepn Profiler 汉化版

http://www.lupaworld.com/article-251894-1.html

trepn-profiler 高通的手机状态查看软件

trepn-profiler 高通的手机状态查看软件

Android性能优化

总结归纳自《Android开发艺术探索》、《Android群英传》等关于性能优化资料。 转载请注明链接:http://blog.youkuaiyun.com/feather_wch/article/details/79615455 Android性能优化 版本: 2018/3/20-1 Android性能优化 布局优化 内存优化 参考资料 1、UI渲染机制 系统通过VS...

feather(猎羽) 471

Ubuntu AX200 iwlwifi-cc-46.3cfab8da.0.tgz无法下载的解决办法

AX200 iwlwifi-cc-46.3cfab8da.0.tgz 无法下载网页出问题使用 其他方法来进行但是前提还是有网络。

chen20170325的博客 1039

android-性能-Android Profiler‌ GPU分析教程及案例

定位线程阻塞点(图示:时序报告界面)。:Profiler 中点击。可生成时序报告,结合。

summerkissyou1987的专栏 2341

Ovito隐藏技巧:用Expression Selection快速提取分子链(附模糊背景配置参数)

本文详细介绍了Ovito软件中Expression Selection功能的隐藏技巧,用于从复杂的分子动力学模拟数据中快速、精准地提取目标分子链。通过结合Expand Selection和Invert Selection等修饰器,形成一套高效的工作流,并深入解析了实现SCI论文级渲染效果的景深模糊参数配置,帮助研究者大幅提升数据处理与图片生成效率。

pz890123的博客 867

ComfyUI中一个超好用的变量管理类节点-KJNodes

在AI绘图中,ComfyUI的热度开始慢慢起来一些,但是这个软件在使用的过程中,需要很多连线,仅仅一个最简单的动画生成,就需要连接这么多线条,而且有些线会飞的很远,看起来就很不美观,尤其是一些复杂工作流,连接到最后自己可能已经分不太清楚到底连接好了没有。今天在研究C站的大佬们的工作流的时候,发现一个有意思的工作流,看起来大概是这种感觉:干净整洁。他用到了KJNodes这么个节点来管理变量,git上星标也不算很多,所以我想很多朋友可能还不知道,所以这里简单介绍下用法。

聚梦小课堂 7520

安卓专项测试之GPU测试探索

作者:章未哲——腾讯SNG质量部 http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 背景 我们在安卓上进行性能测试时,如果想获取CPU以及内存等常用性能指标,linux系统自身就提供了现成的方法,谷歌官方甚至公司内部也都提供了大量功能强大的分析工具。而相比之下,想要获取GPU的相关指标则没那么容易,甚至我们对GPU应该使用什

影音视频技术 3395

RK3568下YT8531/YT8521 PHY移植避坑指南:RGMII与设备树详解

嵌入式Linux网络调试中,PHY芯片作为MAC与物理介质之间的桥梁,其驱动配置直接影响网络稳定性。RGMII接口的延时补偿、PHY地址设定以及复位时序是设备树配置中的关键环节,稍有差错便会出现链路已通却无法通信的现象。通过理解PHYLIB框架与mdio总线枚举原理,开发者可以快速定位寄存器级故障。在RK3568等工业级平台中,裕太微YT8531/YT8521凭借高性价比与内核主线支持,成为替代传统方案的热门选择。从设备树模板、内核配置到常见坑点,系统梳理千兆以太网PHY的移植与调试方法,帮助开发者少走弯路

weixin_29189381的博客 212

Android查看CPU和GPU使用率(五十五)

参考一 参考二 1、top -t 能打印出线程级别的CPU使用情况 0.打印进程的堆栈信息。从堆栈信息里可以通过.so辨别哪个线程是干什么的,从而在 top -t 的结果里去查找你想要的那个线程的 CPU 使用情况。 # debuggerd -b <pid> 1.查看高通821 GPU使用率 # adb shell cat /sys/class/kgsl/kgsl-3d0/g...

Android系统攻城狮 3万+

搞定8GB/s数据流:一个FPGA工程师的XDMA驱动调优实战(附避坑清单)

本文详细记录了FPGA工程师在XDMA驱动调优过程中实现8GB/s高带宽数据流的实战经验。通过优化DDR访问、中断响应、DMA映射等关键环节,解决了PCIE数据采集卡在高带宽场景下的性能瓶颈,并提供了实用的避坑清单和技术方案。

weixin_29194255的博客 202

五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

java专栏 969

Android GPU 检查器 (AGI)

////////////////////////////////////////////////////////// 使用这款强大的图形分析器分析您的游戏对 Android 设备的影响,以便您识别性能问题和需要优化的区域。 https://developer.android.com/agi AGI 下载 AGI 可在下方或 GitHub 上下载。有关要求和设置信息,请参阅快速入门。发行说明和开发者版本也可以在 GitHub 上找到。 平台 包 SHA-256 校验和 尺...

蛰伏--当你不够强大时,就不要放弃努力 5679

MTK Camera HAL 与 FeaturePipe 架构解析:从硬件抽象到功能管线的工程落地路径

MTK 的 Camera 系统在 Android 平台下采用高度模块化的 HAL 与 FeaturePipe 架构组合,分别承担着底层硬件抽象与上层功能封装的职责。通过将 ISP、3A 算法、Sensor 驱动与图像处理节点解耦封装于功能链条中,联发科平台实现了灵活可控的影像能力调度机制。本文将基于真实项目实践,系统解析 MTK Camera HAL 与 FeaturePipe 架构的设计思路、核心模块与运行机制,结合 AE/AWB/AF 控制流、Buffer 管理策略、功能管线构建方法与多线程调度实现方式

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1571

android应用性能测试

1.在安卓手机安装谷歌商店 2.下载GameBench 3.下载adreno-profiler 4.下载Trepn Profiler

zien的博客 564

十二种嵌入式通信协议

嵌入式通信协议选型核心要点解析 在嵌入式系统开发中,通信协议选型直接影响项目成败。本文系统梳理了12种主流协议,从三个维度提供选型指南: 板级通信协议: I²C:双线制,适合传感器连接(温湿度、RTC等) SPI:高速全双工,适用于Flash存储、TFT屏等 UART:异步串行,常用于调试日志输出 总线通信协议: CAN:汽车电子首选,支持多主节点和硬件仲裁 LIN:低成本单线方案,适用于车窗控制等场景 RS485:工业自动化主力,最长传输距离1200米 Modbus:工业领域通用协议,支持RTU/TCP格

qq_37999850的博客 248

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Android应用】性能测试方法

Android设备的性能测试涉及面较广,且机型较多,所以Android设备的性能测试先天就是比较复杂的。此文力图以最简洁、最直接的方式阐述Android应用性能测试方法,同时也会涉及到一些性能测试标准。一方面是为有需要的童鞋做个参考,少踩些坑;另一方面也是为了共同进步,不断学习Android应用性能测试方法。Android性能测试主要分为:帧率fps、静默CPU占用率、内存泄漏、流量、响应时间、过度渲染等,下文按照以上顺序进行展开(以手淘外卖为测试对象)。

liuhongbin2011net的博客 2400

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Trepn Profiler v6.0:Android最棒的性能与功耗监测工具

Trepn™ Profiler是Qualcomm Technologies, Inc.的一款产品。它是用于移动设备上的应用功耗和性能分析工具。(留着以后用得着,转载自优快云。http://www.youkuaiyun.com/article/a/2015-04-16/15823833)。 规格特性: 6个快速下载分析预置可显示在被分析应用屏幕的顶层可分析设备,或者单个应用在支持的设备上,可显

vaecer 3404

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android上查看MTK的GPU使用率

cat /sys/module/ged/parameters/gpu_loading

hajungong007的博客 1499

Trepn Power Profiler工具的简单操作

之前已经简单介绍了Trepn  Power Profiler的特点,接下来简单介绍一下Trepn Power Profiler的不同模式的功能,通过了解这些有助于工具的使用。 图1 Trepn  Power Profiler主界面 一、Preset Mode(预设模式): 在这个模式下有6个易于分析的预设。 1.CPU Frequency Overlay-显示前4个核的速度。因

s_jason的博客 3760
上一篇: 【腾讯Bugly干货分享】微信iOS SQLite源码优化实践分享实录
下一篇: 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
腾讯Bugly
博客等级 码龄12年 1875粉丝 201原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值