-
Notifications
You must be signed in to change notification settings - Fork 0
Metric Interaction Patterns
When single-metric analysis is insufficient, use these patterns to interpret metric combinations.
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:
-
Check
cpu_frame_msfor the stalled frame → CPU-bound? -
Check
gpu_time_ms→ Was GPU actually overloaded? -
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.
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.
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.
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.