PerfDog的使用教程
作者:互联网
一、介绍:
移动全平台iOS/Android性能测试、分析工具平台,快速定位分析性能问题。PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)、Android模拟器、云真机等性能测试。支持APP多进程测试(如Android多子进程及iOS扩展进程APP Extension)。
重要说明Q&A:https://bbs.perfdog.qq.com/detail-128.html
特殊机型指南:https://bbs.perfdog.qq.com/detail-127.html
性能参考标准说明:https://bbs.perfdog.qq.com/detail-145.html
WEB使用手册:https://bbs.perfdog.qq.com/article-detail.html?id=49
PerfDogService(自动化及云测性能服务):https://perfdog.qq.com/perfdogservice
二、优缺点:
优点:
- 支持移动全平台:支持Android/iOS移动平台,提供PerfDog软件Windows & Mac版本
- 无需ROOT/越狱:Android设备无需ROOT, iOS设备无需越狱
- 测试数据准确:工具CPU性能影响<1%,保证性能数据准确真实性
- 测试数据完整全面: 轻松获得 FPS、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能参数
- 支持应用广泛:支持所有APP应用、游戏、小程序、小游戏、H5、web
- 工具易用性高:无需安装,即插即用,减少繁琐的测试障碍
缺点:
PerfDog当前处于市场推广阶段,存在诸多Bug,测试一天下来发下的Bug就不下5个,如:
- 在Mac上执行时,如果Mac屏幕休眠后,手机会与该工具断开连接导致测试中断
- 在Mac上执行测试期间图表显示正常,但上传到云平台后cpu或内存图表无法展示,且单次测试时间越长越容易复现,已提交给他们的开发处理这个Bug
- 在云平台上对浏览器的分辨率适配不好,当测试时间超过10分钟后,在云平台上无法展示完整的图表,比如测试30分钟,只显示13分钟的图标数据,可通过放缩浏览器,改变mac分辨率等方式解决,但显示有问题,已提交给他们的开发处理这个Bug
- 统计https的流量上行与实际值偏差大
- 测试数据保存本地时,经常出现PerfDog卡死
三、性能指标:
- 包体大小:包体大小能被列为性能指标,是从APP性能指标及游戏运营两个维度考虑的,玩家是更希望包体小的同时性能要好,有时它们会是一个互相取舍的关系。
- CPU占用率:一般情况下,用主流手机玩游戏20%-40%的CPU占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果CPU占用率超过80%就非常值得我们去关注了。
- 图片处理器每秒刷新的帧数(FPS):可用来指示页面是否平滑的渲染。手机游戏帧率FPS,30-60都可接受,上了60对于人眼主观感受差别就不大了。对于游戏开发而言,并不是FPS越高就一定越好,FPS取决于显卡,其次是内存、CPU,然后是网络。故综合游戏其他性能指标,选择一个适合的FPS即可。
- 内存使用:在Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。移动设备的内存资源是非常有限,为每个APP进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。
- 电量:相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,android的很多特性都比较耗电(如屏幕,GPS,sensor传感器,唤醒机制,CPU,连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验。
- 流量:目前的网络类型包含2G\3G\4G\wifi,其中还有不同运营商的区分,我们在APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。另外,对于需要联网的手游来说,部分游戏对不同联网方式的网络类型采用了不同的流量消耗策略,主要分为wifi环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试。
总结,性能指标大致如下:
FPS cpu mem GPU NETwork Battery(wifi)
四、测试前准备
- 自己的设备的其他应用全都关闭。
- 电量充足,一般70%以上。(其实测试50%以上就行了,但是在测试过程中会耗电)
- 不能边充电边进行性能测试。
- 保持登录应用的账号不要被其他人挤掉,不然可能测试的性能数据作废了。
- 设备。至少要准备三台测试机,覆盖目前的高、中、低配手机(主要看cpu),如果是ios需要更多的机型。
五、安装及运行
登录PerfDog官网https://perfdog.qq.com/,根据您的PC平台选择想要下载的桌面应用程序
Windows平台:解压下载包,双击打开PerfDog.exe桌面应用程序。
Mac平台:直接运行dmg桌面应用程序。
账号的注册登录:
需要先注册账号,然后登录该账号后测试的数据就会同步到平台上;
打开PerfDog.exe文件,需要登录才能进入到 perfDog的主页, 输入刚刚官网注册邮箱即可
连接手机:
iOS:则即插即用,用户无需做任何操作。若PerfDog检测不到连接手机或无法测试,请先安装确保最新itunes是否能连上手机(最新itunes可在QQ管家上直接下载安装)。
备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html
Android:有两种模式,非安装模式和安装模式。(注:请开启手机USB调试模式及允许USB应用安装。)。
a. 非安装模式:
手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。
b. 安装模式:
需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示(允许USB应用安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。此模式下,在测试过程中,可能由于系统资源紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能。
备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html
测试模式:
USB模式测试:
USB连线后,在设备列表选择USB图标设备进行USB模式测试
WIFI模式测试(测试功率):
只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(USB模式测试功率无任何意义,会充电))(备注:一般公司WIFI可能做了安全策略限制,导致iOS平台在公司WIFI下无法使用)
首页模块介绍:
模块1:选择调试的手机设备
模块2:选项需要测试的应用名称,会显示手机上安装的所有应用
模块3:手机的CPU、GPU、内存介绍等
- device:显示的是设备相关信息;
- Setting:显示的是性能指标数据的配置页面, 参数有:FPS(帧数)、FrameTime(帧时间)、CPU、NetworkFlow(网络流量) 一般我们保持默认(可以根据自己产品的特点调整)
- About:显示的是版本号和帮助文档入口
模块4:
FPS:
FPS(Frames per second) 1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS。
名称说明Avg(FPS)平均帧率(一段时间内平均FPS)Var(FPS)帧率方差(一段时间内FPS方差)Drop(FPS)降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
在平时玩游戏的时候, 延迟不能大于100毫秒, 否则用户的严重只剩下了卡顿, 100-300毫秒用户可以感受到延迟, 当达到一秒, 用户的注意力就会转移
Jank:
1秒内卡顿次数, 帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)
Jank1s内卡顿次数(同时满足ab,则认为一次卡顿Jank)
a) 当前帧耗时>前三帧平均耗时2倍。
b) 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。
BigJank1s内严重卡顿次数(同时满足ab,则认为是一次严重卡顿BigJank)
a) 当前帧耗时>前三帧平均耗时2倍。
b) 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
BigJank:1秒内严重滞后的次数
Jank(/10min):平均每10分钟卡顿次数
BigJank(/10min):平均每10分钟严重卡顿次数PerfDog Stutter测试过程中,卡顿时长的占比。Stutter(卡顿率)=卡顿市场/总时长
FTime:
名称说明FTime上下帧画面显示时间间隔,即认为帧耗时Avg(FTime)平均帧耗时Delta(FTime)增量耗时(平均每小时两帧之间时间差>100ms的次数)
模块5:
CPU Usage:CPU利用率官方讲解
名称说明Total CPU整机CPU使用率AppCPU进程CPU使用率CPU Clock各个CPU核心的未规划频率和未规划使用率CPU Clock Normalized各个CPU核心的规划频率和规划使用率
模块六:
名称说明MemoryPSS Memory
统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)Swap Memory部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低Virtual Memory(VSS)VSS 虚拟耗用内存(包含共享库占用的内存)Memory DetailNativePSS、GFX、GL、UnknownCTempCPU温度
Battery Power(Current电流、Voltage电压、Power功耗)
注:与仪器测试误差<3%左右。
注:Sum(Battery)是耗电量。
模块7:
选择需要收集性能参数,默认已经选中了一些常用的
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与卡顿无任何直接关系)
参考:https://bbs.perfdog.qq.com/article-detail.html?id=6
PerfDog Jank计算方法:
1.同时满足以下两条件,则认为是一次卡顿Jank.
a)当前帧耗时>前三帧平均耗时2倍。
b)当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。
2.同时满足两条件,则认为是一次严重卡顿BigJank.
a)当前帧耗时>前三帧平均耗时2倍。
b)当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
1)BigJank:1s内严重卡顿次数
2)Jank(/10min):平均每10分钟卡顿次数。
3)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
- Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
- Tiler: Tiler利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
- 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)。
参考:https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/devf7f7c5fcd
- Log日志采集(WIFI模式下,不支持Log收集)
Android平台
- ScreenShot(只支持USB模式,注:部分机型截图影响性能)
- FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
- Avg(FPS):平均帧率(一段时间内平均FPS)
- Var(FPS):帧率方差(一段时间内FPS方差)
- Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
备注:高阶FPS功能-Android窗口与FPS
请参考https://bbs.perfdog.qq.com/?m=app&c=detail&a=index&id=201
- InterFrame(部分机型具有动态补帧/插帧技术,此参数可真实反映1秒内插入的帧数)
- Jank(1S内卡顿次数。解释说明如iOS平台说明)
- BigJank:1s内严重卡顿次数
- Jank(/10分钟):平均每10分钟卡顿次数。
- BigJank(/10分钟):平均每10分钟严重卡顿次数
- Stutter(测试过程中,卡顿时长的占比)
- FTime(上下帧画面显示时间间隔,即认为帧耗时)
- Avg(FTime):平均帧耗时
- 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
- Non-fragment:非片段着色器(顶点着色器,细分着色器,计算着色器)耗费的GPU时间占渲染耗费的GPU时间的比例。
- Fragment:片段着色器耗费的GPU时间占渲染耗费的GPU时间的比例。
- Mali Memory & Bus Bandwidth(仅支持Mali芯片GPU)
- L2Load/Store:Load/Store单元读取L2内存的实际带宽 (包括顶点缓存,原子,图像数据)。
- L2Texture:Texture单元读取L2内存的实际带宽 (纹理采样)。
- Bus Read:定义GPU到DRAM或者GPU外部的系统内存的实际读带宽。
- Bus Write:定义GPU到DRAM或者GPU外部的系统内存的实际写带宽。
- Mali Pixels Info(仅支持Mali芯片GPU)
- OverDraw:表示每个像素由多少个片段分层组成,通常用于表示像素被重复绘制的次数。
- PixelsThroughput:表示每个被渲染的像素耗费的GPU的时钟的数量。
注:更多GPU信息说明,请参考:https://bbs.perfdog.qq.com/article-detail.html?id=72
- 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收集)
六、测试步骤
1.打开该软件并使用数据线连接手机,选择要测试的手机设备
2.点击右下角“+”,在PerfDog上勾选好性能测试需要的参数
3.在PerfDog上选好需要进行测试的APP,并在手机上打开该APP
4.(待程序趋于稳定状态开始录制,一般等待2分钟)在PerfDog上点击开始进行性能录制
5.结束测试
可以在保存excel文件的路径里看到测试的数据
也可以在云端看到自己测试的数据(性能数据同步上传到了PerfDog云端web看板)进入云端:点击右上角“云”icon,登录TAPD,进入云端。
标签:教程,FPS,PerfDog,内存,测试,使用,GPU,CPU 来源: https://www.cnblogs.com/Testing1105/p/15088843.html