A reference list of executable launch parameters for profiling Unreal Engine with Unreal Insights—covering CPU traces, Garbage Collection logging, Slate UI performance, context switches, File I/O, and world streaming.
Most of these configurations share a common set of baseline parameters designed to stabilize performance and enable standard profiling markers:
-statnamedeventsstat game or custom cycle counters) into named event markers that appear in the Unreal Insights timeline.-NoVerifyGC-DPCvars="gc.VerifyAssumptionsOnFullPurge=0"For basic CPU profiling, use this layout to capture the default engine events along with detailed task graph scheduling.
-trace=default,task -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0"
-trace=default,taskdefault) and tracks task execution across the Engine’s Thread Pool (task).If you need visual feedback on performance spikes in real-time while recording a trace, this variation displays the unit graph and FPS counters on screen.
-trace=default,task -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0" -ExecCmds="stat unitgraph, stat fps"
-ExecCmds="stat unitgraph, stat fps"Garbage collection (GC) can cause sudden, periodic frame drops. Use these arguments to output detailed GC logging alongside your performance trace to correlate hitches with GC sweeps.
-trace=default,task -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0" -ExecCmds="stat unitgraph, stat fps" -LogCmds="LogGarbage Verbose"
-LogCmds="LogGarbage Verbose"Verbose level, printing detailed reports of every object collected, sweep duration, and purge cycle to the log.An ensure or ensureAlways statement that fails will capture a callstack, which can stall the game thread for several milliseconds. To make sure developer-facing ensures don’t artificially skew your profiling data, use this configuration to ignore them.
-trace=default,task -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0" -ExecCmds="stat unitgraph, stat fps" -HandleEnsurePercent=0
-HandleEnsurePercent=0For a comprehensive profiling configuration that tracks CPU and task graphs, outputs verbose Garbage Collection logging, displays in-game statistics, disables heavy GC verification, and ignores ensures, combine all parameters:
-trace=default,task,counters -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0" -ExecCmds="stat unitgraph, stat fps" -LogCmds="LogGarbage verbose" -HandleEnsurePercent=0
If you are investigating thread contention, core scheduling, or suspect that threads are blocking each other, you need to capture thread context switches at the OS level.
-trace=taskgraph,contextswitch -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0"
-trace=taskgraph,contextswitchcontextswitch channel disabled to prevent log spam.When profiling level transition hiccups, asset loading, or initial startup bottlenecks, use these trace channels to monitor disk activity and serialization.
-trace=cpu,file,assetloadtime,loadtimes,iostore,contextswitch -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0"
-trace=cpu,file,assetloadtime,loadtimes,iostore,contextswitchcpu: Main CPU thread timelines.file: Standard file read/write calls.assetloadtime: High-level asset loading metrics.loadtimes: Detailed package serialization and loading stages.iostore: Zen/I/O Store requests for packaged builds.contextswitch: Context switching to see load-thread wakeups.To profile UI performance and analyze widget tick, layout, and paint evaluation timelines in Unreal Insights, pass the slate trace channel to the -trace argument.
-trace=default,task,slate -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0"
slate Trace Channel (-trace=...,slate)slate trace channel to record UI widget timing, layout, tick, and paint event timelines in Unreal Insights.WITH_VERY_VERBOSE_SLATE_STATS MacroWITH_VERY_VERBOSE_SLATE_STATS preprocessor macro enabled (#define WITH_VERY_VERBOSE_SLATE_STATS 1).When diagnosing streaming hitches, level streaming stalls, or World Partition cell loading/unloading bottlenecks, you need simultaneous visibility across disk I/O, asset serialization, async worker tasks, physics lock contention, and thread scheduling.
-trace=default,counter,stats,file,loadtime,assetloadtime,task,chaoslocks,contextswitch -statnamedevents -NoVerifyGC -DPCvars="gc.VerifyAssumptionsOnFullPurge=0"
-trace=default,counter,stats,file,loadtime,assetloadtime,task,chaoslocks,contextswitchdefault: Standard baseline engine timeline events (CPU frames, bookmarks).counter: Tracks numeric metrics and telemetry values over time (e.g., streaming pool budgets, resident cell counts).stats: Emits STAT system stats and cycle counters into the trace.file: Low-level file system activity (file opens, async reads, seeks).loadtime: Package loading, serialization stages, and linker phases.assetloadtime: High-level asset instantiation and registration timing.task: Task Graph and Task System execution across worker threads.chaoslocks: Chaos physics lock contention, scene sync points, and mutex wait times when generating collision for newly streamed actors/cells.contextswitch: OS-level thread scheduling to spot core migration, thread preemption, or streaming worker starvation.-statnamedeventscontextswitch channel disabled to prevent log spam.