# 真机性能测试

# 简介

使用云真机进行APP/应用的实时基础性能数据采集,可以精确到进程级别,支持多进程,可以在一次使用过程中测试多个场景的性能。性能数据目前包括:cpu、内存、帧率、流量,更多性能数据指标还在开发中...


# 支持系统

Android & iOS


# 使用说明

# 服务地址:https://yanshu.effirst.com/real-devices-performance

# 顶部一级菜单


# 选择设备:

  • 通过勾选筛选条件进行筛选
  • 如果您需要更多的筛选条件,请点击更多
  • 通过输入关键字搜索,支持型号搜索

# 安装应用

性能测试每次自动测试新安装的应用,所以使用前必须进行安装被测应用

  • 安装已有应用
  • 上传本地包安装
  • 安装常用应用

以上方式任选其一

# 性能测试

安装后自动开始收集安装的APP的性能数据,就可以开始进行性能测试了,在一次使用云真机的过程中,可以进行多次性能数据采集,会生成多分性能报告。

# 开始测试

点击开启测试,开始进行测试数据收集,同时操作云真机上的app配合进行测试。

勾选了测试过程截图,平台底层即会进行截图操作,在结束测试后的报告中展示

注意:测试过程截图会消耗一定的性能,因此对基础性能数据会有一定的影响

# 结束测试

点击结束测试,结束此次场景下的测试,会把这一段时间内的性能数据进行采集和分析,生成对应的测试报告

# 查看报告

# 基本数据

设备数据、被测应用信息、测试时间等

# 概览数据

CPU/内存/网络/FPS/Jank 等基础数据的最大数据、最小数据、中位值以及90分位数

# 各项数据

  1. CPU
  2. 内存
  1. 帧率
  2. 网络流量

点击图表数据,自动显示该时间点对应的截图(测试过程需要勾选截图


向下滚动,截图缩略图自动固定在顶部,方便其他指标联动


# 数据指标:

# 1. Android

性能指标

描述

指标

标准

cpu


total cpu: 整机cpu使用率

app cpu:进程cpu使用率

cpu clock: 各个cpu核心的频率和使用率


memory

memory

NativePSS:native 程序使用的物理内存
gfx:

GL:

unknown: https://www.gameres.com/865025.html


swap memory

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


virtual memory

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。


fps

两种计算方法:

AppMonitor使用Choreographer,

线下使用SurfaceFlinger

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

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

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

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


jank


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

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

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

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

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

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

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

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

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

jank

stutter

一次Jank卡顿,会有一次卡顿时间Jank time。测试过程中可能有多次Jank卡顿,即有多次卡顿时间Jank time。测试总时长为Time

Stutter(卡顿率) = Jank time / Time


1min,5min,10min

1min,5min,10min,jank次数


ftime

上下帧画面显示时间间隔,即认为帧耗时

Avg(FTime)


平均帧耗时


Delta(FTime)

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


GPU

GPU Usage

gpu 核心使用率



gpu clock

gpu 核心使用频率


network


Recv:下行

Send:上行


CTemp

cpu温度



battery

usb 模式下统计功耗没有意义(充电)



加载耗时


页面加载耗时


# 2. iOS

性能指标

描述

指标

标准

cpu


total cpu: 整机cpu使用率

app cpu:进程cpu使用率


memory

footprint

  1. Memory Footprint refers to the total current amount of system memory that is allocated to your app. 程序申请分配的所有内存。
  2. OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM


Xcode Memory

XCode Debug Gauges统计方式即XCode Memory


Real Memory

Xcode Instrument统计方式即Real Memory,实际占用物理内存。除了footprint外,还有进程在系统中使用的内存,如:

OpenGL textures,OpenAL,code等

注:物理内存与系统策略有关,关注意义不大


Virtual Memory

虚拟内存


fps

两种计算方法:

AppMonitor使用Choreographer,

线下使用SurfaceFlinger

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

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

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

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


jank


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

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

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

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

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

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

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

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

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


stutter

一次Jank卡顿,会有一次卡顿时间Jank time。测试过程中可能有多次Jank卡顿,即有多次卡顿时间Jank time。测试总时长为Time

Stutter(卡顿率) = Jank time / Time


1min,5min,10min

1min,5min,10min,jank次数


ftime

上下帧画面显示时间间隔,即认为帧耗时

Avg(FTime)


平均帧耗时


Delta(FTime)

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


GPU

Render


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


Tilter:

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


Device

设备利用率(整体GPU利用率)


network


Recv:下行

Send:上行


Wakeups

线程唤醒次数

超过150进程很大可能会被系统kill


CSwitch

上下文切换测试

单核超过14000进程会被系统Kill


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)。


battery

usb 模式下统计功耗没有意义(充电)

整机实时Current电流、Voltage电压、Power功率


加载耗时

页面加载耗时



场景渲染耗时