功能上新| GPU篇:SoC GPU信息、GPU Counter性能指标

news2024/12/24 21:19:34

在玩家要求游戏更流畅、画质更精美的今天,优化GPU过度使用导致的性能问题成了大多数游戏开发团队关注的核心。当项目的GPU压力达到一定阈值时,卡顿、掉帧、发热、降频等问题便随之而来,严重影响用户体验。

为了解决项目的GPU压力问题,UWA GOT Online Overview模式中已推出的GPU Counter功能,展示GPU负载、着色、带宽、图元等参数,帮助开发者对GPU性能压力进行更详细的分析。在最新版UWA SDK 2.4.7中,UWA进一步新增了SoC GPU信息功能和更多GPU Counter数据,在宏观监控GPU压力的同时,更全面、更准确地定位GPU压力来源。下面将详解SoC GPU信息和GPU Counter相关数据的解读和UWA建议。

需要注意的是,基于各个厂商的GPU架构不同,同一参数在不同品牌芯片上的推荐值也会存在差异,不同设备间横向对比的意义不大,UWA更推荐大家在相同的设备上进行纵向对比。

SoC GPU信息

在SoC GPU信息模块下,开发者可以从更宏观的角度对设备的GPU运行情况进行监控,在观察GPU运行状态、判断是否存在GPU降频情况的同时,也可以快速定位GPU压力较大的场景,以便更有针对性地进一步分析这些场景的性能压力来源。

SoC GPU信息目前仅支持MTK SoC设备和安卓10及以上的HISI SoC设备,具体支持设备列表可通过下图或登录UWA官网对“GOT Online支持设备列表”列表进行查询:
https://www.uwa4d.com/main/supported.html

GPU频率
GPU频率(GPU Freq)表示当前采样帧GPU的工作频率,不同型号和厂商的GPU具有不同的额定最大频率,且GPU会动态调整工作频率。开发者可以通过GPU频率观察GPU的工作情况,结合GPU Counter下的具体参数,快速判断GPU是否处于正常工作状态。

GPU负载
GPU负载(GPU Utilization),表示当前GPU频率相对于GPU额定最大频率的百分比,该参数走势和GPU频率走势一致。

当GPU负载持续较高时,说明设备持续处于高压场景,长期处于这种情况会容易引起GPU过热,造成游戏性能表现下滑,需要开发者结合GPU Counter模块重点关注这些场景的GPU压力。

需要注意的是,SoC下的GPU负载体现的是GPU整体运行层面的负载情况,Mali/PowerVR GPU Counter下的Fragment和Non-Fragment负载(具体参考:《GPU Counter功能更新|支持Adreno、PowerVR芯片》)则是体现了GPU内部的两个主要工作单元的负载情况,各自代表了不同层面下的GPU负载情况,分析时需要根据对应的层面综合分析。

MTK GPU利用率
在MTK SoC设备上,UWA支持GPU利用率(GPU Loading),表示GPU的时钟周期数占当前可用时钟周期数的百分比,即当前额定频率的利用率。需要注意的是,GPU利用率仅表示当前频率下GPU的使用情况,而非GPU压力情况。

HISI DDR频率
在HISI SoC设备上,UWA支持DDR频率(DDR Freq)参数,表示设备系统内存频率,而DDR的工作状态也会影响到GPU的性能释放。

GPU Counter

GPU Counter则是对GPU下各个模块的数据进行了更全面的补充。在此次更新中,UWA新增了GPU活动、GPU着色、GPU缓存三项性能参数,同时补充了之前版本下不同厂商的数据。在进一步完善了GPU数据的全面性和准确性的同时,也可以使开发者可以更便捷地定位项目的性能瓶颈、制定性能标准。

GPU活动
在Mali/PowerVR/Adreno GPU Counter页下,都新增了GPU活动参数,即GPU Clocks,表示渲染一帧耗费的GPU时钟周期数,是用于衡量GPU性能的主要指标。通过GPU Clocks,开发者可以快速定位项目的GPU压力主要来自哪些场景,并结合GPU Counter下的其他参数对GPU压力情况进行具体分析。

GPU着色
在Mali/PowerVR/Adreno GPU Counter下的GPU着色页下,都新增了Fragment shaded和Vertices shaded两项指标。Mali/PowerVR下已有的Cycles/Pixel可以表示项目的平均每像素复杂度,新增的Fragment shaded和Vertices shaded则可以从另一个方面体现项目的Overdraw情况。

其中Fragment shaded表示每帧Fragment shader执行了多少次,用Fragment shaded数除以设备分辨率,可以侧面反映项目的Overdraw情况。

当Overdraw较高时,容易引起发热和能耗方面的问题。我们可以通过降低半透明粒子特效的粒子数量、使用不规则面片代替矩形面片渲染粒子特效或UI等方式,减少项目的Overdraw层数,降低GPU压力。

而Vertices shaded则表示每帧Vertex shader执行了多少次。使用Vertices shaded除以输入图元数,即可得到平均每个图元进行了多少次Vertices shaded。UWA推荐平均每个图元执行次数应控制在1.5次以下。

Mali GPU缓存
Mali GPU缓存包括Read Stall和Write Stall两项数据,分别表示外部读、写事件上GPU处于等待状态周期数占总周期数的百分比。即当GPU向系统内存发出请求时,系统内存没有及时响应,等待时间占GPU活动时间百分比。

GPU缓存情况可以直接体现GPU带宽压力:Read Stall和Write Stall越低,GPU运行状态越好,UWA建议这两项参数应各自控制在5%以下。

当Read Stall较高时,说明此时GPU存在较明显的带宽压力,开发者可以通过降低目标帧率、减少纹理资源与网格资源的大小和数量等方式对带宽压力进行优化;当Write Stall较高时,则可以降低网格复杂度,或通过控制Framebuffers的数量与内存大小进行优化。

PowerVR GPU缓存
PowerVR GPU缓存则是增加了GPU Memory Bus Utilization参数,即每帧GPU内存总线负载。它表示当前GPU带宽消耗占总可用带宽的百分比。

当GPU Memory Bus Utilization持续较高时,说明GPU访问内存的频率过于频繁,可以通过减少纹理资源与网格资源的大小和数量控制GPU缓存的占比。

Adreno GPU缓存
Adreno GPU缓存在原有的基础上新增了Texture L2 Cache Miss,以便开发者对缓存命中情况进行更全面考量。关于Texture L1 Cache Miss的定义和优化方式,可以参考之前的文章:《GPU Counter功能更新|支持Adreno、PowerVR芯片》。

除了上述新功能外,UWA还在Adreno GPU Counter下新增了GPU带宽、在PowerVR GPU Counter下新增了GPU负载功能。由于这两个参数的数据含义和优化方式与其他GPU Counter一致,此次不再赘述,大家可以通过以下往期文章查看。

GPU带宽:《GPU Counter、Timeline功能上线 | 性能优化快人一步!》
GPU负载:《GPU Counter功能更新|支持Adreno、PowerVR芯片》

提示:在测试开始前,部分设备可能会弹出无法正常获取GPU Counter的提示,建议大家查看用户手册中的《1.3本地测试-注意事项》篇,对GPU Counter采集异常的情况进行排查,并根据文档中的方法尝试获取GPU Counter数据。

如果您对新功能感兴趣,请前往UWA官网下载SDK,下载链接:
UWA | 致力于游戏VR和AR应用提供项目研发解决方案 | 简单优化、优化简单 | 侑虎科技

相关推荐

《功能上新|内存篇:PSS显存、内存占用、堆内存对象快照》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka的常用命令

提前说明:下述所有命令都是需要进入到Kafka服务的的bin目录下执行,即下图所示目录。 1.查看主题列表 kafka-topics.sh --list --bootstrap-server ip:端口 2.创建主题 如下为创建一个单分区单副本的主题的命令示例: kafka-topics.sh --c…

Hack The Box - sequel关卡

TASK 1 任务 1 During our scan, which port do we find serving MySQL? 在扫描过程中,我们发现哪个端口为 MySQL 提供服务? 3306TASK 2 任务 2 What community-developed MySQL version is the target running? 目标运行的是哪个社区开发的MySQL版…

基于nodejs+Vue的少儿编程课程网上报名系统express+vscode

近年来,随着网络技术的不断发展,越来越多人在网站查询各种信息,少儿编程网上报名系统对用户和管理员都有很大帮助,少儿编程网上报名系统通过和数据库管理系软件协作来实现用户与管理员之间的一个很好的操作平台,基于这…

【大数据学习篇11】广告点击流实时统计

学习目标/Target 掌握广告点击流实时统计实现思路 掌握利用Kafka生产用户广告点击流数据 了解数据库设计 掌握如何创建Spark Streaming连接 掌握利用Spark Streaming读取业务数据 掌握利用Spark读取黑名单用户 掌握利用Spark Streaming过滤黑名单用户 掌握利用Spark St…

bug:使用useClipboard不生效问题

背景 使用vueuse/core的useClipboard来实现复制功能,没有生效。 原因 useClipboard 的底层是是使用navigator.clipboard实现的。但是在 http协议 中,navigator.clipboard打印undefined(如下图),导致在http协议中使用…

旅行商问题TSP

目录 蚁群算法 Hopfield网络 遗传算法 免疫算法 蚁群算法 求解思路 Hopfield网络 Hopfield网络适合求结果的次优解,可以保证解向能量函数最小值方向收敛,但不能确保达到全局最小点。 实现能量函数 网格能量的最小值对应于最佳或者次最佳的路径距离。…

MySQL部署PXC集群-全网最详细

MySQL部署PXC集群 一,PXC了解 1.PXC介绍 Percona XtraDB Cluster(简称PXC) 是基于Galera的MySQL高可用集群解决方案 Galera Cluster是Codership公司开发的一套免费开源的高可用方案 PXC集群主要由两部分组成:Percona Server …

计算机网络开荒1-概述

文章目录 一、网络基本概述1.2 InternetInternet组成Internet服务角度 1.3 网络协议 二、计算机网络结构2.1 计算机网络结构2.1.1 网络边缘2.1.2 接入网络 物理介质2.1.2.1 DSL2.1.2.2 电缆网络2.1.2.3 家庭网络接入2.1.2.4 企业网络接入2.1.2.5 无线网络接入 2.1.3 网络核心 三…

肉豆蔻酰六肽-4 /myristoyl hexapeptide-4, sympeptide230

简介----肉豆蔻酰六肽-4 肉豆蔻酰六肽-4为胜肽系列应用最早和最广泛的多胜肽,国内外知名品牌普遍采用作为抗皱配方重要成分,在很多抗皱护肤产品中经常出现它的身影。它可以穿透真皮增加胶原蛋白,通过从内至外的重建来逆转皮肤老化的过程&…

感应雷电浪涌的防线,SPD浪涌保护器

SPD - Surge Protective Device SPD 是防止雷击导致故障的避雷器,代表浪涌保护设备。一般指浪涌保护器,浪涌保护器,也叫防雷器,是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 IEC/ EN61643-11 &#xff08…

Vulkan Tutorial 8 深度缓冲

目录 26 三维几何图形 深度图像和视图 27 显式转换深度图像 渲染通道 帧缓冲区 清除值 深度和模版状态 处理窗口调整大小 26 三维几何图形 到目前为止,我们所处理的几何体是投射到三维的,但它仍然是完全平面的。在这一章中,我们要给位…

(学习日记)2023.4.22

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【C++】关键字:static

关键字static 在这一章节,将对C中的关键字static做进一步介绍。 成员函数中的this指针 这里先附上之前写的一个complex类代码: //防卫式定义 #ifndef __MYCOMPLEX__ #define __MYCOMPLEX__//前置声明 class complex;//类声明 complex& __doapl (…

分享一个隐藏链接的样式

先上效果图&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>隐藏的链接按钮</title><style>.trapdoor {-webkit-transform: translateZ(0px);-webkit…

Unity Addressables热更流程

一、分组&#xff08;网上教程一大堆&#xff09; 二、构建 构建前设置&#xff1a; 1、分组设置。所有组做远端构建加载选择&#xff0c;RemoteBuildPath 。RemoteLoadPath 2、AddressableAssetSettings设置 3、构建 三、导出信息分析&#xff1a; 1、Assets同级目录下&#…

第十二届蓝桥杯国赛JavaB组题解

A. 整数范围 思路&#xff1a; 签到题。答案&#xff1a; 255 255 255 B. 纯质数 思路&#xff1a; 先用筛法筛出所有的质数&#xff0c;再根据题意判断&#xff0c;模板参考AcWing 数学知识。 代码&#xff1a; import java.io.BufferedReader; import java.io.IOExcepti…

Python相关环境变量配置和模拟手机app登录

【java环境变量配置】 接着&#xff0c;打开系统->高级系统设置->环境变量。新建一个JAVA_HOME C:\Program Files\Java\jdk1.8.0_201&#xff08;这里是你的安装路径&#xff0c;最好复制粘贴&#xff09; 然后在Path下添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后…

【LeetCode每日一题】——1493.删掉一个元素以后全为 1 的最长子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 滑动窗口 二【题目难度】 中等 三【题目编号】 1493.删掉一个元素以后全为 1 的最长子数组 …

wx.request net::ERR_TOO_MANY_REDIRECTS

文章目录 问题解决方法一&#xff1a;请求头里添加Cookies方法二&#xff1a;使用weapp-cookie 问题 使用微信小程序开发者工具开发小程序项目时&#xff0c;wx.request 返回总是报 net::ERR_TOO_MANY_REDIRECTS wx.request发起一个get请求&#xff0c;一直重定向直到请求失败…

Java Web——Session实现购物车

实验名称&#xff1a; Session实现购物车 实验目的&#xff1a; &#xff08;1&#xff09;掌握什么是Cookie对象&#xff0c;掌握Cookie对象的使用 &#xff08;2&#xff09;掌握什么是Session对象&#xff0c;掌握Session对象的使用 &#xff08;3&#xff09;掌握使用…