暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

perfdog初探

测试备忘录 2021-09-26
1380

    perfdog在移动端测试中有着比较广泛的应用,尤其是针对性能数据,有比较完善的执行和展示体系,有必要来进行了解。

软件性能数据采集:

    iOS平台(苹果官方Xcode工具参数对齐。注:iOS系统对进程性能参数做严格限制,超过限制则会被系统kill)

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)

  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)

    • Avg(FPS): 平均帧率(一段时间内平均FPS)

    • Var(FPS): 帧率方差(一段时间内FPS方差)

    • Drop(FPS): 降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

  • Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)

  •     PerfDog Jank计算方法:

        1.  同时满足以下两条件,则认为是一次卡顿Jank.

            a) 当前帧耗时>前三帧平均耗时2倍。

            b) 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。

        2. 同时满足两条件,则认为是一次严重卡顿BigJank.

            a) 当前帧耗时>前三帧平均耗时2倍。

            b) 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。


    • BigJank:1s内严重卡顿次数

    • Jank(/10min):平均每10分钟卡顿次数。

    • BigJank(/10min):平均每10分钟严重卡顿次数

  • Stutter(测试过程中,卡顿时长的占比)

  • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持)

      1) Avg(FTime):平均帧耗时

      2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)

  • CPU Usage(TotalCPU表示整机CPU使用率,AppCPU表示进程CPU使用率,统计结果和Xcode一致,PerfDog使用率=Xcode使用率/核心数。备注:iOS平台CPU Usage是未规范化CPU使用率,请参考https://bbs.perfdog.qq.com/detail-146.html)

  • Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。注:PerfDog暂时在iOS9、10系统无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本

  • Xcode Memory (XCode Debug gauges统计方式即XCode Memory)。注:iOS9、10系统暂时无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本

  • Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存系统策略有关,衡量内存指标时不会关注,但是它有助于分析定位整体性能问题。比如:footprint没有降低,说明应用没有释放内存,但是real memory却降低了,说明系统对内存做了压缩。由于压缩会占用CPU资源,同时相应会导致FPS降低)

  • Virtual Memory(虚拟内存)

  •  Available Memory(整机可用剩余内存)

  • Wakeups(线程唤醒次数。注:超过150进程很大可能会被系统kill。a sleep/wake cycle on each thread per second,Exceeding limit of 150 wakeups per second over 300 seconds,特别是iOS13.2闷杀后台进程事件,建议重点关注)

  • CSwitch(上下文切换测试。

    注:单核超过14000进程会被系统Kill。Context Switch Limit 14000(Core/Second)

  • GPU Utilization

  • 1) Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)

    2)  Tiler: Tiler利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)

    3) Device:设备利用率(整体GPU利用率)

  • Network(Recv/Send,测试目标进程流量,统计结果合Xcode一致)(注:USB测试模式下是app的,WiFi测试模式下可能是整机可能是app

  • BTemp(电池温度)

  • Battery Power(仅WIFI模式,整机实时Current电流、Voltage电压、Power功耗)(注:20s获取一次,目前最精准的统计方式,结果和Battery life结果一致,支持所有iOS机型

    • 注:Sum(Battery)是耗电量。

  • Energy Usage(即为Xcode Energy Impact。监控应用使用的能耗情况(包括CPU、GPU、NetWork、Location、Display (iPhone X only)、Overhead)。(注:和Xcode Energy Impact结果一致。有线模式下测试,支持iOS9及以上系统。Total Energy<=270为Low,270<Total Energy<=1000为High,Total Energy>1000为Very High)。

  • Log日志采集(WIFI模式下,不支持Log收集)

Android平台

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)

  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)

  •     1)   Avg(FPS):平均帧率(一段时间内平均FPS)

        2)  Var(FPS):帧率方差(一段时间内FPS方差)

        3)  Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

        备注:高阶FPS功能-Android窗口与FPS

  • InterFrame(部分机型具有动态补帧/插帧技术,此参数可真实反映1秒内插入的帧数) 

  • Jank(1S内卡顿次数。解释说明如iOS平台说明)

  •  1) BigJank:1s内严重卡顿次数

     2) Jank(/10分钟):平均每10分钟卡顿次数。

     3) BigJank(/10分钟):平均每10分钟严重卡顿次数

  • Stutter(测试过程中,卡顿时长的占比)

  • FTime(上下帧画面显示时间间隔,即认为帧耗时)

  •     1) Avg(FTime):平均帧耗时

        2)  Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)

  • CPU Usage(传统CPU利用率,也叫未规范化CPU利用率,TotalCPU表示整机未规范化CPU使用率,AppCPU表示进程未规范化CPU使用率。备注:统计结果和Android Studio Profiler一致。具体参考https://bbs.perfdog.qq.com/detail-146.html)

  • CPU Usage (Normalized)(规范化CPU利用率,TotalCPU表示整机规范化CPU使用率,AppCPU表示进程规范化CPU使用率。备注:建议参考规范化CPU利用率,性能参考更精准。具体参考https://bbs.perfdog.qq.com/detail-146.html)

  • CPU Clock(各个CPU核心的未规范化频率和未规范化使用率)

  • Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)

  • Swap Memory (Swap Memory,部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低)

  • Virtual Memory(VSS)

  • Available Memory(整机可用剩余内存)

  • Memory Detail(NativePSS、GFX、GL、Unknown)

    注:在极限测试情况下,例如开启游戏超高帧率,建议不要勾选收集Memory Usage和Memory Detail,因为部分机型会有性能损耗。

  • GPU Usage(目前仅支持部分手机)。注:Top Android GPU测试机型,请参考:https://bbs.perfdog.qq.com/detail-195.html

  • GPU Frequency(目前仅支持部分手机)。

  • Mali GPU Utilization(仅支持Mali芯片GPU)注:支持的GPU列表,请参考:https://bbs.perfdog.qq.com/detail-332.html

         1)  Non-fragment:非片段着色器(顶点着色器,细分着色器,计算着色器)耗费的GPU时间占渲染耗费的GPU时间的比例。

         2)  Fragment:片段着色器耗费的GPU时间占渲染耗费的GPU时间的比例。

  • Mali Memory & Bus Bandwidth(仅支持Mali芯片GPU)

         1) L2Load/Store:Load/Store单元读取L2内存的实际带宽 (包括顶点缓存,原子,图像数据)。

         2) L2Texture:Texture单元读取L2内存的实际带宽 (纹理采样)。

         3) Bus Read:定义GPU到DRAM或者GPU外部的系统内存的实际读带宽。

       4) Bus Write:定义GPU到DRAM或者GPU外部的系统内存的实际写带宽。

  • Mali Pixels Info(仅支持Mali芯片GPU)

          1) OverDraw:表示每个像素由多少个片段分层组成,通常用于表示像素被重复绘制的次数。

        2) PixelsThroughput:表示每个被渲染的像素耗费的GPU的时钟的数量。

  • Network(Recv/Send,测试目标进程流量)注:USB/WiFi测试模式下均为APP数据

  • CTemp(CPU温度)

  • Battery Power(仅WIFI模式,Current电流、Voltage电压、Power功耗)(注:与仪器测试误差<3%左右)。注1:Sum(Battery)是耗电量。注2:对于已经兼容的双电机型,可参考:https://bbs.perfdog.qq.com/detail-340.html,未兼容设备可以电流x2进行容错。

  • Log日志采集(WIFI模式下,不支持Log收集)

参考链接:https://bbs.perfdog.qq.com/article-detail.html?id=5

文章转载自测试备忘录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论