Repository navigation
Profiling with Tracy
⚠️ This wiki is under construction. Pages are being populated incrementally.
Nodens integrates Tracy Profiler for real-time frame profiling, memory tracking, and lock contention analysis.
Tracy instrumentation is compiled in only for the Profiling configuration. Debug and Release leave every Tracy macro as a no-op, so a build in those configurations produces no profiling data.
Profiling mirrors Release code generation and adds debug symbols (-g) and frame pointers (-fno-omit-frame-pointer). Timings therefore transfer to the shipped build, and callstacks resolve.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Profiling
cmake --build buildTo build the profiler GUI from the vendored Tracy source, configure with ND_BUILD_TRACY_PROFILER=ON and build the tracy-profiler target:
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Profiling \
-DND_BUILD_TRACY_PROFILER=ON
cmake --build build
cmake --build build --target tracy-profilerThe profiler GUI is a separate CMake project that vendors its own dependencies, so it is driven by ExternalProject and excluded from the default build; build it by target name. The build also needs capstone and the thin-LTO archiving tools (llvm-ar, llvm-ranlib).
The client and the profiler must be the same Tracy version. The pinned revision lives in cmake/NodensDependencies.cmake, currently v0.14.1.
-
Frame marks.
FrameMarkat the end ofApplication::Run(), so the profiler shows a frame timeline. -
CPU zones.
ZoneScopedon the framework's hot paths:Applicationconstruction, teardown, and the main loop;EventBusdispatch and flush; theImGuiLayerframe; and eachJobSystemworker task. Named worker threads appear as separate tracks. -
Plots and locks.
TracyPlot("Job Queue Size", ...)tracks the pending task count, and the job queue mutex usesTracyLockablefor contention views. -
Vulkan GPU timing.
VulkanContextowns oneTracyVkCtxper frame-in-flight command buffer. The ImGui pass records aTracyVkZone; collection happens after the frame fence. Validation layers areDebug-only, so they never serialize GPU work during aProfilingcapture.
- Concurrency and JobSystem — Thread pool profiling.
-
Examples Guide — The
asynceventexample includes a profiling showcase. - Tracy Documentation
Getting Started
Architecture
Guides
Reference