Profiling
Profile a NYXDB engine with Tracy (instrumented), Parca, and Pyroscope (continuous eBPF).
When the engine is slow, hung, or contended, three complementary profilers cover gaps the others don't.
| Tool | Kind | Production? | Best at |
|---|---|---|---|
| Tracy | Instrumented, on-demand | build-gated | Zone timing and lock contention on the hot path |
| Parca | Continuous, eBPF | yes | On-CPU and off-CPU flamegraphs, no code changes |
| Pyroscope | Continuous, eBPF | yes | Same class as Parca, Grafana-native |
Tracy
Tracy is an instrumented profiler: the engine emits zones and plots the code was
annotated with (the NYXDB_ZONE* macros). It is off by default and zero-cost
— the macros compile to nothing. Built with -DNYXDB_TRACY=ON, the client is
compiled on-demand, so even an enabled build collects nothing until a Tracy
viewer connects (default TCP 8086).
Tracy is instrumented engine-wide, including allocator-level memory profiling, which makes it the tool for lock-contention and "which lock is the flush thread parked on" investigations that SQL telemetry can't answer.
Parca & Pyroscope
Parca and Pyroscope are continuous eBPF profilers — they attach to the running process and produce on-CPU and off-CPU flamegraphs with no code changes, suitable for always-on production profiling.
In-engine query timing is also available without any external profiler: see
system.queries for per-stage and
per-operator µs, and system.traces for span timelines.
TODO-verify: Parca (P1) and Pyroscope (P2) setup are staged in the engine's profiling runbook; confirm the wiring for your deployment.