找回密码
 会员注册
查看: 12|回复: 0

游戏客户端性能兜底方案——硬件打分方案设计

[复制链接]

7

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2024-10-1 20:02:28 | 显示全部楼层 |阅读模式
性能调优团队在刚介入X项目时,大概只有1个月的时间进行分析和调优,在时间紧迫的情况下,根据X项目的性能现状优先选择了梳理硬件打分保证大盘性能、和梳理线上/线下性能监控方案确保问题能及时暴露2个着力点,这边文章主要分享下我们在机型分档所做的尝试及思考。参数说明名词解释Gflops在计算中,每秒浮点操作数(flop / s)是计算机性能的度量,是衡量GPU芯片能力重要的参考指标On-chip graphics memoryGPU内部的memory,读取texture会优先读取此块缓存的内存,不足时从系统内存中读取,相比读取系统内存On-Chip Memory有非常高的读写速度 ,但由于成本昂贵,因此 On-Chip Memory 的空间非常有限MPMali GPU可以由SoC厂商自由组合,MPx代表该SOC有x个GPU核心数硬件打分硬件打分的背景硬件打分简而言之就是将影响性能的多维度硬件能力(CPU、GPU、内存)进行归一化,方便制定画质档位。其重点和难点在于从哪些维度进行归一化,以及如何归一化。游戏测主要关注的能力有带宽、机型内存大小、CPU核数、CPU频率、GPU 频率、 GPU gflops等能力。方案调研公司其他团队已经有其他较为成熟的打分系统,深入调研后发现其类似于安兔兔抽象了不同的硬件能力,通过对demo的实测得到各个子项的分值,然后通过权重来归一化形成分数。可以看到该打分系统主要关注的能力在音视频解码这一块,与游戏关注的硬件能力有较大差异,因而我们决定自己单独实现一套。一种分档思路是按照游戏的实际表现来进行分档,通过利用打分软件来对游戏进行归一化,形成天梯图,然后游戏接入的时候再进行实际测试,根据测试结果fps(均值、标准差、jank)进行机型分档。这一块有几个比较大的缺点,一是对测试场景强依赖,随着版本更迭,测试场景可能变化较大;二是对测试人员能力强依赖,以最终的fps来分档,要求不同局之间fps波动较小,排除游戏内的变化因素(毒圈、随机出生点等)和游戏外的变化因素(降频、大小核调度等)后数值较为稳定。因而后续分档没有采用此思路。另外一种思路是根据手机自身各项参数(内存带宽、机型内存大小、CPU核数、CPU频率、GPU 频率、 GPU gflops)进行性能预估,但是缺点是各大无良芯片厂商为了宣传一般给的参数都是实验室的理想值,但是实际运行过程中,为了功耗考量,会进行动态调节(DVFS),且不同厂商的驱动效率参差不齐,因而实际效果可能和宣传参数有一定偏差,但是同一个系列内基本具有性能跟随gflops递增的规律性,不同芯片间可以通过gflops初步锚定,再根据真机实测结果添加机型白名单和动态画质降档机制来进行规避,所以最终采用了此方案。由于X项目时间较为紧张,且根据经验,对于特效消耗较高的游戏而言,一般GPU所占权重会更大一些。因而X项目直接采用了根据GPU分档的策略。如何根据GPU进行分档呢,因为现在还没有可靠的GPU天梯图,介于CPU到GPU是唯一映射关系,所以主要参照CPU天梯图进行参考。https://www.mydrivers.com/zhuanti/tianti/01/index.html方案详情移动端GPU主要集中在Adreno、Mali、PowerVR三家。Adreno、Mali、PowerVR分别是高通、ARM、imagination开发的GPU,其中Adreno主要用于高通自家的Snapdragon芯片,Mali多用于联发科和麒麟芯片,PowerVR多见于早期的三星Exynos芯片和苹果A系列芯片。因为苹果系列产品较为固定,因而可以直接采用芯片或者机型打分策略,本次主要是根据Android产品进行打分。Adreno系列GPU在Android用户中占比超过60%,是现有Android用户最多的GPU系列,因而机型打分主要是根据Adreno系列来锚定GPU打分规则,主要根据gflops进行排序,Mali系列和PowerVR根据GPU gflops进行映射。Adreno系列高通GPU的命名通常为Adreno xxx,且具有规律性,例如Adreno 512,参考https://zh.wikipedia.org/wiki/Adreno,其中每个系列性能按照序号基本具有递增的规律性。X项目按照(140,160,400)进行了三档的分割,然后在分界线附近进行机型实测。为了减少人力成本,性能数据主要依赖于之前对外测试上报GPM系统上的数据。Mali系列Mali GPU的命名包含3种,早期采用Mali-2xx,Mali-3xx(现已废除);中期采用T系列Txxx(T860),现在多采用G系列GXX,类似G72。https://zh.wikipedia.org/wiki/Mali_(GPU)原因如下:Mali系列与高通系列最大的不同就是把GPU core可以自由组合。需要注意下面几点:即使GPU core相同,GPU核数不同差异也比较大,MPx代表有x个GPU core,例如G71MP2和G71MP12性能差异非常大,实测可以跨越2-3档画质。同一个GPU core也有不同的规则,例如G52@2EU代表有32个ALU,G52@3EU代表有48个ALU。麒麟系列的MP经常获取不到,可以通过device model添加白名单来规避。PowerVR系列PowerVR GPU的命名包含几种:SGX系列,例如SGX530,还有可能存在MP后缀,类似SGX543 MP2G系列,例如G6050GX系列,例如GX6250GT系列,例如GT7600GE系列,例如GE8310GM系列,例如GM9446powerVR系列命名相对复杂,但是用户占比不高,因而在X项目中采用直接添加白名单的方式进行了分档。GPU天梯图使用说明下图是以在X项目中的分档情况抛砖引玉,不同游戏硬件基线差异较大,具体分档仅供参考。参考意义较大的是不同GPU的相对关系。下图更适用出现GPU瓶颈的游戏,CPU瓶颈的游戏请参考CPU天梯图(https://www.mydrivers.com/zhuanti/tianti/01/index.html)。例如Adreno512对应snapdragon660(2大核6小核架构),Adreno530对应snapdragon820(2大核2小核架构),因为现在的游戏多采用多线程渲染,开启多线程后4核不够用,频繁出现线程阻塞造成的卡顿,所以在部分游戏里实际上snapdragon820 fps 是低于snapdragon660的。主要原因是最终机型上的性能表现并不仅仅取决于GPU,还与CPU核数、CPU频率、整机内存相关,类似木桶效应,性能与超过硬件瓶颈的一环密切相关。括号内代表该GPU 的Gflops;括号内无数值代表该GPU Gflops查询不到;括号内有多个数值且以" ,"分割类似Adreno305(27.2,40.8)有两种含义:一种是GPU model对应不同的频率,类似Adreno 305(19.2,21.6),另外一种是GPU model对应不同的GPU core,多见于mali系列,类似Mali-G52(27.2,40.8),代表该GPU core下有2个规格的CPU;括号内有多个数值且以" -"分割类似Adreno650(1244-1267),代表因为Gflops在该区间内波动。标黑代表热门芯片(出货量较大,市场占有率较高)。GflopsAdreno(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-12 20:03 , Processed in 2.013431 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表