用途:当 Meta Quest / Horizon OS 应用掉帧、卡顿、过热或需要做性能剖析时使用。若涉及整机路线图或阶段审计,改用 quest-lifecycle;单一技术任务归本技能负责。
主要能力:提供各刷新率的每帧预算——72 Hz 为 13.9 ms,90 Hz 为 11.1 ms,120 Hz 为 8.3 ms。帧预算是截止时间而非目标值;CPU、渲染线程、GPU 与合成器工作构成流水线,可跨帧重叠,应比较关键路径和同步与截止时间的关系,不能把 CPU/GPU 独立采样相加当作通用帧时公式。
GPU% 的判读:当应用降到半速时 GPU 提前完成并空闲,利用率反而下降,此时应用实际仍受 GPU 限制。示例:FPS=36/72(半速,每帧显示两次)、Stale=36、GPU%=0.65、App=18.05 ms。GPU% 是在被拉长为 27.8 ms 的区间上测得,因此读数 65% 会误导——实际需要削减约 23%,而非它暗示的 35% 余量。规则:以毫秒计的 App 值对照刷新率预算来看,仅接近饱和时才信任 GPU%。要脱离半速,GPU 工作必须装进一个刷新间隔,即在半速下利用率降到约 50% 以下。若 App 在预算内而 Stale 仍非零,应在 trace 中检查 CPU 提交、同步与合成器时序;该现象本身不足以证明 CPU 瓶颈。上述示例假设了给定的指标定义且未启用 SpaceWarp,需先核实这两点。
可选手段(据测量出的瓶颈选取):动态分辨率,通过引擎/SDK 支持的控制路径调节渲染缩放,并验证实际行为;注视点渲染,区分固定与眼动追踪,测试支持的等级与质量;刷新率,请求代表性负载可持续的速率并观察实际运行时与热行为;Application SpaceWarp,需受支持的深度/运动矢量集成并做伪影与延迟测试,并非自动救援或保证的增益。
捕获链:logcat VrApi 统计(FPS、Stale、App、GPU%)可用 metavr log / adb logcat;头显内实时数字用 OVR Metrics Tool(ovrmetric APK),经 metavr tools install ovrmetric 后启用覆盖层;CPU 与 GPU、线程时间线与停顿用 Perfetto,经 metavr MCP start_perfetto_capture → stop_perfetto_capture → analyze_trace 或 CLI 等价命令;C/C++ 函数耗时用 Android NDK 的 simpleperf;绘制调用、着色器或渲染阶段用 RenderDoc Meta fork,经 metavr tools install renderdoc 查看绘制调用 trace、渲染阶段 trace 与 Vulkan 着色器统计。Meta 另有 hz-perfetto-debug、hz-simpleperf-debug 与 hz-vr-debug 任务技能;安装后本技能决定测什么,由它们驱动工具。具体序列见 references/capture-playbook.md。
方法:在真机 release 构建上复现(模拟器只验证模拟行为,不代表头显性能);先记录刷新率与对应预算;在最差场景而非菜单中捕获;每次只改一处后重新捕获并比较 App 毫秒数而非印象;把前后 App、Stale、场景与构建 id 记入项目笔记。
限制与坑:过热降频会令对比失效,需冷却或注明温度状态;开发者模式覆盖层与日志会耗帧,测量时应关闭;计数器语义依捕获/运行时模式而定;绘制调用是 CPU 开销而填充率是 GPU 开销,填充受限时减少绘制调用无效;WebXR 有自身计数器,应参考 quest-webxr。相关数据引自 documentation/native/android/os-missed-frames.md(2026-09-20),可用 metavr docs search "missed frames" 复核。