Skip to content

Metric Interaction Patterns

killown edited this page Mar 16, 2026 · 4 revisions

Metric Interaction Patterns

When single-metric analysis is insufficient, use these patterns to interpret metric combinations.


Pattern: High Sync + High vblank_mul

Symptom: sync > 90 but vblank_mul ≥ 2
Interpretation: The frame aligned cleanly to a later VSync pulse. Phase-locking worked, timeliness failed.
Likely Causes:

  • CPU submission stall delayed GPU start.
  • Resource streaming hitch blocked command buffer.
  • Compositor queue buildup (FIFO mode).

Diagnostic Steps:

  1. Check cpu_frame_ms for the stalled frame → CPU-bound?
  2. Check gpu_time_ms → Was GPU actually overloaded?
  3. Check MSD → Did the stall exceed the macro-threshold?

Example Log Snippet:

{
  "delta_ms": 24.9,
  "drift_ms": -0.12,
  "sync": 98,
  "vblank_mul": 3,
  "cpu_frame_ms": 12.4,
  "gpu_time_ms": 5.2
}

Analysis of Snippet:

CPU took 12.4ms to submit, GPU finished fast, frame waited 2 pulses in FIFO queue.


Pattern: Low Slack + High Sync

Symptom: slack_ms < 1ms but sync > 95
Interpretation: GPU finished just-in-time for the pulse. Low-latency Mailbox mode working as intended.
Risk: Zero headroom for load spikes.
Action: Monitor gpu_time_ms trends, add headroom if variance increases.


Pattern: High FTV + Low MSD

Symptom: Frame-time variance is high, but no macro-stalls exceed threshold.
Interpretation: Consistent micro-jitter without user-visible hitches.
Action: Lower --threshold for MSD to catch sub-25ms stalls if smoothness is critical.


Pattern: Stable Drift + Low Sync

Symptom: drift_ms is steady at +4ms but sync ≈ 50
Interpretation: Intentional software offset (e.g., 4ms hold for safety buffer).
Action: Verify pacing logic, no fix needed if intentional.

Clone this wiki locally