2. 性能指标基础
在旭日平台的性能优化工作中,帧率、延迟、内存和温度是四个最核心的观测维度。它们分别回答四个不同的问题:画面是否流畅、操作是否跟手、资源是否够用、设备是否稳定。理解它们的定义、测量单位以及彼此之间的耦合关系,是后续所有优化手段的判断基础。
一、四个指标的定义与测量单位
帧率(Frame Rate / FPS)指单位时间内完成渲染并提交显示的图像帧数量,单位为帧每秒(fps)。它衡量的是“画面更新速度”。在旭日这类嵌入式视觉平台上,常见目标为 30fps 或 60fps。帧率越高,运动画面越顺滑;但帧率是平均值,必须结合帧时间分布一起看,否则会掩盖偶发卡顿。
延迟(Latency)指从输入事件发生到画面产生对应反馈所经历的时间,单位通常为毫秒(ms)。它衡量的是“响应及时性”。延迟是一个端到端概念,包含采集、处理、渲染、显示多个环节。对交互类应用,延迟比帧率更直接影响主观体验;对实时控制类应用,延迟甚至决定功能是否可用。
内存(Memory)指进程与系统在运行过程中占用的存储资源,常用单位有 MB、GB,以及带宽单位 MB/s。它包含多个层次:物理内存占用(RSS/PSS)、堆内存、显存/图形缓冲区、以及内存带宽。内存不足会触发频繁回收甚至 OOM,内存带宽不足则会直接拖慢渲染与拷贝速度。
温度(Temperature)指芯片关键发热点的温度,单位为摄氏度(℃)。它衡量的是“热状态与可持续性”。温度本身不是性能,但它通过温控策略反向约束性能:温度升高会触发降频,降频会拉低帧率、抬高延迟。因此温度是性能能否长期稳定的边界条件。
一句话记忆:帧率看“快不快”,延迟看“跟不跟手”,内存看“够不够用”,温度看“能不能一直快”。
二、四者相互关系:一条完整的因果链
这四个指标并非孤立,而是通过一条清晰的因果链相互影响。下面的信号链图展示了从输入到显示、再到热反馈的完整路径,以及四个指标在链路中的位置。
从图中可以看出三条关键关系:
- 内存是帧率与延迟的底层支撑。内存不足会触发频繁的垃圾回收或页面换入换出,直接拉长处理与渲染时间,表现为帧率下降和延迟上升。
- 温度是性能的长期约束。温度升高触发降频,降频后帧率下降、延迟上升;如果负载不变,温度会继续升高,形成负反馈循环。
- 帧率与延迟并不总是同向变化。高帧率可能因缓冲队列过长而带来高延迟;低延迟也可能因单帧渲染时间过长而帧率不高。二者需要分别测量、分别优化。
三、测量方法与典型工具
不同指标需要不同的测量手段,混用会导致误判。下表给出旭日平台上常用的测量方式与注意事项。
| 指标 | 测量单位 | 常用工具/命令 | 关键注意点 |
|---|---|---|---|
| 帧率 | fps | SurfaceFlinger 统计、perfetto、帧时间日志 | 看平均值也要看 P95/P99 帧时间,避免被均值掩盖卡顿 |
| 延迟 | ms | 高速相机、输入时间戳打点、端到端 trace | 必须明确起止点,不同起止点结果不可直接比较 |
| 内存 | MB / GB / MB·s⁻¹ | dumpsys meminfo、procrank、带宽计数器 | 区分 PSS 与 RSS,区分容量与带宽,二者瓶颈不同 |
| 温度 | ℃ | thermal zone 节点、传感器读数、温控日志 | 关注的是结温与触发降频的阈值,而非外壳温度 |
采集时建议使用统一的时间基准,例如用 perfetto 同时抓取 CPU 调度、GPU 提交、显示刷新和温度节点,这样四个指标才能在同一时间轴上对齐分析。
四、案例场景:一次卡顿的联合定位
某旭日设备上的交互应用出现“偶发卡顿且越用越卡”。单看帧率日志,平均帧率仍有 55fps,似乎正常。但结合其他指标后问题清晰起来:
时间轴(同一 trace 对齐):
t=0s 温度 42℃ 内存 PSS 820MB 帧时间 P95 18ms
t=60s 温度 58℃ 内存 PSS 1150MB 帧时间 P95 34ms
t=120s 温度 71℃ 内存 PSS 1420MB 帧时间 P95 52ms 触发降频
t=180s 温度 76℃ 内存 PSS 1480MB 帧时间 P99 90ms 出现明显卡顿
复盘结论:内存持续增长导致回收压力上升,处理时间变长;处理时间变长使 CPU/GPU 占用率上升,温度随之升高;温度越过阈值后降频,帧时间进一步恶化。这是一个典型的“内存→温度→帧率/延迟”级联问题。若只盯帧率平均值,会误判为“性能尚可”;只有四个指标联合观察,才能定位到内存泄漏这一根因。
常见误区:把帧率当作唯一指标。高平均帧率可能伴随高延迟和高温降频;把温度当作结果而非约束,会忽略它在长时间运行中的决定性作用;把内存只看容量不看带宽,会漏掉图形管线中的真实瓶颈。
五、优化时的指标权衡
四个指标之间存在天然权衡,优化时必须明确当前目标:
- 追求低延迟时,可能需要减少缓冲队列,但这会降低帧率的平滑度。
- 追求高帧率时,可能增加预渲染与缓存,这会抬高内存占用和延迟。
- 追求低温度时,需要限制峰值算力,这会牺牲帧率上限。
- 追求低内存时,可能减少缓存,这会增加重复计算并推高温度。
实践建议:先确定场景的主指标(如实时控制以延迟为主、视频播放以帧率为主),再为其余三个指标设定可接受的边界值,最后在此约束下做优化,而不是同时追求四项最优。