1.性能测试方法原理
CAMSYS 其性能指标主要包括:帧率、延迟,以及系统的 DDR 带宽、CPU 占用率等。
对于帧率、延迟,通过在驱动中创建 trace event,分别记录通路上的每个 IP,每帧开始处理(frame_start)和结束处理(frame_end)的时间戳信息和帧信息,来实现帧率计算和延迟统计。
1.1帧率统计
每个模块处理完成后会产生一个 frame_done 中断,此时会记录下一个 event 点,此时在时间轴上每一帧则对应一个个离散的点。按照时间进行 resample(重采样),得到每秒的帧率数据序列,此种方法可以较为直观的反应帧率变化。
1.2延迟统计
对于延迟会统计两个数据,第一个是硬件处理引入的耗时,这个数据一般与处理尺寸相关相对固定,这个耗时称为模块延迟(module latency);另外一个是从 cim 接受到一行数据产生 frame_start 开始到当前模块 frame_end 的耗时,这个耗时包括 sensor 的出图完成+前级 IP 硬件处理耗时+软件耗时,这个延迟称为到某模块的通路延迟(flow latency)。
1.2.1模块延迟
只需要将该模块 trace 的帧 event 中的 fe 时间戳 - fs 时间戳即可得到硬件处理耗时,即为 module latency
模块 | 模块延迟含义 | 备注 |
---|---|---|
CIM | CIM FE - CIM FS | |
ISP | ISP FE - ISP FS | |
YNR | YNR FE - YNR FS | |
PYM | PYM FE - PYM FS | |
GDC | GDC FE - GDC FS | 此处 GDC FS 不代表中断,指得是配置寄存器 triger 硬件开始处理得时间 |
STITCH | STITCH FE - STITCH FS | 此处 stitch FS 不代表中断,指得是配置寄存器 triger 硬件开始处理得时间 |
1.2.2通路延迟
在 trace 的 event 中会传递 cim 的 fs 时间戳(timestamp),因此只需将模块的 fe event 时间戳-timestamp,即可得到从第一行像素输入开始到当前的整个通路延迟。
如以到 GDC 的通路延迟为例,那么统计的通路延迟就包含如图所示的所有延迟。
模块 | 通路延迟含义 | 备注 |
---|---|---|
CIM | CIM FE - CIM FS | 等同于 CIM 的模块延迟 |
ISP | ISP FE - CIM FS | |
YNR | YNR FE - CIM FS | |
PYM | PYM FE - CIM FS | |
GDC | GDC FE- CIM FS | |
STITCH | STITCH FE - CIM FS |
1.3CPU 占用率统计
统计两个指标,一个是统计测试时 CPU 整体的 load;第二个是开发工具统计感知通路相关进程以及内核线程造成的 CPU 开销。前者反应当前测试的环境的状态,后者反应 CAMSYS 软件的开销。
1.4DDR 带宽统计
使用 hurt_ddr 工具获取 DDR 读写信息,主要统计整体的 DDR 读写带宽与 CMA SYS 的读写带宽。
2报告解读
基础数据信息中包含着测试环境、测试用例等固定信息
数据分析划分为两部分,第一部分为 VPS 的帧率、延迟分析,每个颜色块对应着某一条通路在该模块的帧率和延迟数据,其中延迟为到该模块的通路延迟。
第二部分为系统 load 分析,包括系统整体的 CPU、DDR load,也包括 VPS 对应的 CPU load、CMA SYS 读写带宽
2.1可视化图形解读
VPS 的数据分析中, 每个模块的每个通路对应一个可视化结果: 第一个子图为模块的硬件处理耗时,纵轴为耗时(ms),横轴为帧序,如下图的 isp_latency;
第二个子图为到该模块的通路延迟,纵轴为耗时(ms),横轴为帧序,如下图中的 vin->isp_flow_latency;
第三个子图为对应的帧率统计序列,纵轴为帧率),横轴为时间(s)
系统负载分析中,第一个子图为 CPU load, 纵轴为 loading(%),横轴为时间(s);第二个子图为 DDR 读写带宽,纵轴为带宽(MB/s),横轴为时间(s)。