Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

1. 使用DS-5 Streamline定位瓶颈

    DS-5 Streamline要求GPU驱动启用性能测试,在Mali GPU驱动中激活性能测试对性能影响微不足道。

1.1 DS-5 Streamline简介

    可使用DS-5 Streamline从CPU和Mali GPU中实时收集性能计数器,然后以图形方式显示这些计数器,其主要功能如下:
     • 收集计数器--从CPU和Mali GPU中
     • 保存收集到的计数器数据以供回放
     • 查看显示GPU活动、GPU活动和Framebuffer变化的时间线
     • 以图形或表格的方式显示指定的性能计数器的值
     • 观察计数器值如何变化
     • 评估每一帧的性能
     • 查看处理器活动的图表
     • 查看堆栈跟踪
     • 查看应用程序分析(Profiling)

1.2 DS-5 Streamline分析图

1)  查看下面三个图:
      • GPU Vertex activity.
      • GPU Fragment activity.
      • <Application processor> Instruction: Executed.

2) 分析图

     • 寻找具有最高和最长图形的处理器,它的使用最多;
     • 如果很难找到占用太多时间的单个处理器,则问题可能在于带宽过度使用或图形管理被阻塞;
     • 如果找到占用太多时间的处理器,则采取更多测量以隔离此问题;
     • 如果所有图形都很忙,则应用程序充分利用了Mali GPU。

2. 通过比较定位问题区域

    可以通过以下比较来定位问题区域:
    • 修改分辨率
       修改分辨率,然后测试帧率变化:
       如果分辨率增加,而FPS下降(即分辨率增加为原来的2倍,则FPS下降为原来的1/2),则FP或带宽是性能的瓶颈;
       如果FPS不随着分辨率的变化而变化,则CPU或VP是性能的瓶颈。       
    • 改变纹理大小
       逐步减小纹理的大小,如果帧率增加,且纹理Cache命中率太低:则表明纹理太大,带宽是性能的瓶颈。
    • 减少Shader的长度
       如果Shader太长,它将降低帧率,深度缩短Shader并进行测试。
       注:如果分辨率或FPS加倍,则FP可得到的cycles减半。
    • 使用空的Fragment Shder
       一个null shader什么都不做。如果使用null shader,性能快速上升,则表明Fragment Shader或带宽是性能瓶颈。
    • 改变顶点数
       如果减少顶点数,则FPS上升,则表明顶点数过多或带宽是性能瓶颈。
    • 改变纹理位深度
       当减少纹理深度时,如果FPS上升,则表明内存带宽是性能的瓶颈。
    • 改变Drawing Surface位深度
       当降低surface位深度,如果FPS上升,则表明内存带宽是性能的瓶颈。
    • 减少draw调用
       优化应用程序以减少draw调用,观察性能变化。
    • 减少状态变化

       优化应用程序以减少状态变化,观察性能变化。 

3. 隔离具体的问题区域

    当定位到问题区域之后,下一步就是找到瓶颈的具体原因。其方法如下:

3.1 应用处理器(CPU)限制了应用性能

    • 应用逻辑复杂导致性能问题
      如果删除draw调用和eglSwapBuffers之后,性能变化很少或没有变化,则表明瓶颈在应用逻辑,可通过OProfile来进行分析,它可区分用户态和Kernel态瓶颈问题。
    • 驱动超负荷导致性能问题
      如果低分辨率输出表明瓶颈在于CPU,且应用逻辑没有问题,则问题可能在于调用OpenGL ES API的方式:
      1) 太多的draw调用
      2) 太多的状态变化
      3) 管道被阻塞
    • 应用程序逻辑与驱动超负荷共同导致了性能问题

      可通过DS-5或OProfile分析问题的根源所在。

3.2 顶点处理器(VP)限制了应用性能

      如果顶点处理器限制了应用性能,问题可能在于以下方面:
      • 太多的顶点
      • Vertex Shader太长
      • Vertex SHader太复杂
      • 三角形设置时间过长

      • 多边形列生成器单元时间过长(PLBU: Polygon List Builder Unit)

3.3 像素处理器(FP)限制了应用性能

   如果像素处理器(FP)限制了应用性能,则问题可能在以下方面
   1) 瓶颈:像素处理器(Fragment Processing)
     • 过多的draw调用
     •
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值