Contents
Unreal Engine 5.8 · System guide
Insights Profiling
Capture and isolate Unreal performance bottlenecks
On this page
Choose a task
Choose an approach
Build and understand
Capture contractOpen reference →First-pass triageOpen reference →GPU and render threadOpen reference →Hitches, loading, and garbage collectionOpen reference →Instrumentation and exportsOpen reference →Memory InsightsOpen reference →Network, task graph, and UI tracesOpen reference →Regression workflowOpen reference →Timing Insights and CPUOpen reference →
Troubleshoot
Workflow and boundaries
Use these checks when a task crosses several systems. The focused references above contain the specific actions.
Establish the measurement contract
Read references/capture-contract.md, then choose the narrowest
tool in references/tool-selector.md.
- State target platform, hardware class, build configuration, resolution, quality tier, map, camera path, player count, and workload.
- State the frame, hitch, memory, load-time, or bandwidth budget in measurable units.
- Reproduce without editor-only noise when possible; use a Development or Test packaged build.
- Triage with
stat unit/stat unitgraph; identify Game, Draw, RHI, GPU, memory, loading, or net. - Capture only the trace channels needed for the hypothesis and mark the measured interval.
- Analyze inclusive/exclusive cost, thread dependencies, spikes, counts, and the critical path.
- Change one causal variable, repeat the same workload, and compare milliseconds or bytes.
- Preserve the baseline, candidate, capture metadata, and acceptance result.
Load only what applies:
references/first-pass-triage.mdreferences/timing-insights-cpu.mdreferences/gpu-and-render-thread.mdreferences/hitches-loading-and-gc.mdreferences/memory-insights.mdreferences/network-task-and-ui.mdreferences/instrumentation-and-exports.mdreferences/regression-workflow.md
Hard rules
- Report frame time in milliseconds; FPS alone hides magnitude and variability.
- Do not profile a Debug build or treat PIE/editor numbers as shipping evidence.
- Do not infer CPU- versus GPU-bound from FPS; use thread/GPU timing and synchronization context.
- Do not treat GPU time as causal when it includes idle/wait time; inspect the frame and GPU event tree.
- Keep trace channels narrow. Tracing consumes CPU, memory, disk, and bandwidth and can perturb results.
- Capture spikes and steady state separately; averages can hide harmful hitches.
- Memory allocation tracing must start with the process; late connect cannot reconstruct earlier allocations.
- Use bookmarks for infrequent state changes, timers/counters for high-frequency events.
- Preserve same hardware, build, resolution, quality, workload, and capture length for A/B comparisons.
- Optimize the current top cost, re-profile, and stop when the declared budget is met.
See references/sources.md for the UE 5.8 primary-source trail.
Version and evidence
Targets Unreal Engine 5.8 documentation. This label does not establish that every procedure was tested in an editor or packaged build.
Read the documentation sources and verification notes →