How to Use the Performance Overview Window
How to Use the Performance Overview Window
The Performance Overview window displays real-time frame timing, GPU memory consumption, per-stream playback diagnostics, and output status for each render group. Use it for pre-show health checks, live monitoring, and diagnosing playback bottlenecks.
[USER-ACTION-REQUIRED: Attach a screenshot of the Performance Overview window here]
Before you start
- A project is loaded with at least one render group
- At least one output is configured and routed
- For stream diagnostics: at least one Sequence is playing or paused
Steps
1. Open the Performance Overview
From the menu bar, select View > Other Windows > Performance Overview.
2. Select a render group tab
The window shows one tab per render group. Transform Groups are excluded. Click a tab to view that group's metrics.
3. Read the left column: system-level metrics
The left column contains three sections stacked vertically:
-
Rendergroup Performance — frame timing table and VSYNC plot
-
Graphic Memory Consumption — GPU memory usage by heap, category, and memory pool
-
Output Status — rendered layer count per output
4. Read the right column: stream diagnostics
The right column shows one panel per actively playing or paused video stream, plus one panel per active audio stream. Each video stream panel includes timing plots, buffer fill, frame event counters, and a frame status bar.
5. Reset counters for a clean baseline
Click Reset at the top of a tab to clear all accumulated min/max/average values and event counters. Do this after making configuration changes to isolate new behavior.
6. Enable the on-screen overlay (optional)
Check OSD to project the same performance data directly onto the rendered outputs. This lets you monitor performance without switching windows during a live show or on-site calibration.
Options explained
Render Group Performance metrics
Each metric shows four columns: the label, current Value, Avg (moving average), and Max (peak since last reset). Metrics turn yellow when the min/max deviates significantly from the current value, and stay green otherwise.
|
Metric |
Description |
Healthy values |
|---|---|---|
|
FPS |
Frames per second rendered by this group. |
Should match your target frame rate (e.g. 60 for 60 Hz outputs). Sustained drops indicate a bottleneck. |
|
FRAME |
Total frame time in milliseconds, measured wall-clock between successive present calls. |
At 60 FPS: ~16.7 ms. At 30 FPS: ~33.3 ms. Spikes above your frame budget indicate dropped frames. |
|
GPU |
GPU render time in milliseconds. Measures the time from GPU work submission to GPU work completion. |
Must stay below your frame budget. If GPU time approaches FRAME time, the scene is GPU-bound. |
|
VSYNC |
Present/vsync time in milliseconds. Time from the start of the frame to the completion of the present call. |
Should be stable and close to your frame period. Erratic values suggest display sync issues. |
Below the table, a VSYNC +/- time-series plot graphs the present timing deviation over time. Flat lines indicate stable sync. Spikes or oscillation indicate jitter.
GPU Memory Consumption
GPU memory usage is displayed in three sub-sections:
|
Section |
Description |
Color coding |
|---|---|---|
|
Per Heap |
Used vs. total memory for each GPU memory heap, with percentage. |
Green: < 50%. Yellow: 50-90%. Yellow: > 90% (approaching out-of-memory). |
|
Per Category |
Breakdown by usage type: Internal, Asset, AssetPreBuffer, VideoFramePool, GUI, OutputAdapter, LogicalOutput, MechanicalBlending, Rendergroup, Projector, Display, Surface, Camera. |
No color coding. Shown in MB. |
|
Per Video Memory Pool |
Used vs. total memory per memory pool, with block count. |
Same as Per Heap: green, yellow, yellow thresholds. |
Output Status
Lists each output in the render group with the number of layers currently being rendered to it. If an output shows zero layers, either no content is routed to it or all Sequences targeting it are stopped.
Video Stream Diagnostics
One panel per actively playing or paused video stream. Each panel contains:
Time-series plots
|
Plot |
Description |
What to look for |
|---|---|---|
|
Scheduler Time |
Timing deviation of the frame scheduler over time. |
A flat line near zero is ideal. Spikes mean the scheduler is struggling to keep up with the requested frame rate. |
|
Latency |
Frame delivery latency over time. |
Should be stable. Rising latency suggests disk or decode cannot keep up with playback speed. |
Both plots overlay colored event markers at the sample where each frame event occurred.
Playback Buffer Fill
Displays the percentage of pre-buffered frames ready for playback, e.g. Playback Buffer Fill: 87% (87/100). A buffer that stays near 100% means disk read-ahead is keeping up comfortably. A buffer that drops toward 0% means frames are being consumed faster than they can be loaded.
For capture inputs (e.g. DeckLink, Datapath), the buffer fill is replaced by a Requested Skips counter, since capture inputs do not use a pre-read buffer.
Frame event counters
Cumulative counters that increment each time a frame event occurs. Each counter flashes briefly in its assigned color when the event fires, then fades.
|
Counter |
Description |
Severity |
|---|---|---|
|
Intentional Skips |
Frames intentionally skipped to catch up to sync position. |
Normal during seek or speed changes. Frequent during playback may indicate sync drift. |
|
Repeats |
Frames intentionally shown twice. |
Normal when content FPS is lower than output FPS. |
|
Jumps |
Intentional jumps in frame position (e.g. loop point, seek command). |
Normal. Only concerning if unexpected. |
|
Unintentional Skips/Jumps |
Frame skips or jumps caused by render group lag or system issues. |
Warning. Indicates the system cannot maintain the requested playback rate. |
|
Frame Missing / Read Error |
Disk read or decode error prevented a frame from being loaded. |
Error. Check disk health, media integrity, or storage throughput. |
|
Unavailable |
The requested frame was not available in the buffer when needed. |
Warning. Disk read-ahead is falling behind. Check storage throughput. |
|
Unfinished Transfers |
Host-to-device GPU transfer was not complete when the frame was needed for rendering. |
Warning. GPU memory bus is saturated or frames are too large for the available bandwidth. |
|
Requested Skips |
Frames skipped at the request of a capture input. Only shown for capture-based streams. |
Normal for capture inputs with frame rate mismatch between source and output. |
Frame Status bar
A row of colored squares showing the current pipeline state of each frame slot in the playback buffer:
|
Color |
State |
Meaning |
|---|---|---|
|
Green |
ReadyToRead |
Frame is decoded and ready for rendering. This is the ideal state. |
|
Cyan |
Render / Transfer |
Frame is actively being rendered or transferred. |
|
Orange |
QueuedForCopy |
Frame is waiting in the copy queue. Normal in a healthy pipeline. |
|
Yellow |
Copying |
Frame data is being copied from host memory. |
|
Magenta |
HostToDeviceTransfer |
Frame is being uploaded from system RAM to GPU memory. |
|
Red |
Error |
Frame failed to load or transfer. Investigate disk or media issues. |
|
Grey |
Undefined |
Frame slot is uninitialized. Normal during startup or after a stop. |
Audio Stream Diagnostics
One panel per active audio stream, showing the stream name and its current Latency value in milliseconds.
Identifying bottlenecks
Use the render group metrics to identify which subsystem is the limiting factor:
|
Symptom |
Likely bottleneck |
What to check |
|---|---|---|
|
GPU time is close to or exceeds FRAME time |
GPU-bound |
Reduce output resolution, layer count, or blending complexity. Check GPU memory usage for near-full heaps. |
|
FRAME time is high but GPU time is low |
CPU-bound |
The render pipeline is waiting on CPU work (node graph, decode, scheduling). Check Scheduler Time in stream diagnostics. |
|
Playback Buffer Fill drops toward 0% |
Disk/storage-bound |
Storage cannot feed frames fast enough. Switch to faster storage (NVMe RAID), reduce resolution, or use a more efficient media format. |
|
Unfinished Transfers counter climbing |
Transfer-bound |
Host-to-device (PCIe) bandwidth is saturated. Reduce the number of simultaneous high-resolution streams or use GPU-native formats (NotchLC). |
|
VSYNC plot is erratic or VSYNC avg drifts |
Sync/timing issue |
Check output sync settings, genlock configuration, and PTP status in Settings. |
Common Mistakes
-
Reading metrics right after loading a project — the first few seconds of playback include initialization overhead. Click Reset after playback stabilizes to get meaningful readings.
-
Confusing intentional and unintentional counters — Intentional Skips, Repeats, and Jumps are normal operational behavior (sync adjustments, frame rate matching, seek commands). Only Unintentional Skips/Jumps, Frame Missing / Read Error, Unavailable, and Unfinished Transfers indicate problems.
-
Ignoring the Frame Status bar — persistent red (Error) or grey (Undefined) squares indicate frames that are stuck or failing to load. A healthy pipeline should show a mix of green, cyan, orange, yellow, and magenta cycling through the buffer.
-
Assuming yellow metric color means a problem — yellow indicates min/max deviation from the current value, not that a threshold has been exceeded. Check the actual Max value to decide if it is within your acceptable range.
Tips
-
Enable OSD during on-site commissioning to monitor performance directly on the projected output without needing a separate monitor for the Backstage UI.
-
The event markers on the Scheduler Time and Latency plots are color-coded by event type. A cluster of orange markers (Unintentional Skips) at the same timestamp as a latency spike pinpoints the moment a bottleneck hit.
-
For pre-show checks, play all content simultaneously, let it run for 30 seconds, then check: FPS is stable, Playback Buffer Fill stays above 80%, and no Unintentional counters are climbing.
-
If GPU memory usage (Per Heap) exceeds 90%, reduce the number of pre-buffered frames, lower output resolution, or remove unused assets from the project.
-
The Per Category memory breakdown helps identify which subsystem is consuming the most GPU memory. Large Asset or VideoFramePool values are expected for media-heavy projects; unexpectedly large Internal or GUI values may indicate an issue.
Related
Performance Issues — systematic troubleshooting guide for performance problems
Settings Window Reference — configure render groups, output settings, and performance options
Log — view application log messages for errors and warnings
GPU Output — configure GPU output properties including resolution, bit depth, and sync
