OpenTelemetry Profiling (OTEP 0097) defines a vendor-neutral data model for CPU, memory, and other runtime profiles. Learn vocabulary for AttributeTable deduplication, trace-to-profile correlation, OTLP wire format, and JVM-specific unwinding requirements.
0 / 5 completed
1 / 5
The OpenTelemetry Profiling signal was added as part of which OTel specification enhancement effort?
The OpenTelemetry profiling data model is defined in OTEP 0097, which describes a vendor-neutral schema for CPU and memory profiles. The Profiling SIG drives this work, aligning OTel's fourth signal (after traces, metrics, and logs) with existing profiling formats like pprof.
2 / 5
An OTel profiling payload uses the AttributeTable pattern. What problem does this solve compared to storing attributes inline on each sample?
The AttributeTable (or attribute unit table) stores unique attribute key-value pairs once and references them by integer index in each sample. This deduplication reduces payload size significantly for profiles with thousands of stack samples sharing the same labels (e.g., service name, host).
3 / 5
A developer wants to correlate a CPU profile with a distributed trace. Which OTel mechanism enables this linkage?
OTel profiling supports correlation by including TraceID and SpanID as attributes on profile samples collected during traced operations. This allows backends to join profiles with specific trace spans, enabling engineers to identify which exact code paths were hot during a slow request.
4 / 5
What is the wire format used by the OTel Profiling signal in the OTLP protocol?
Like all OTLP signals, profiling data is serialized as Protocol Buffers over gRPC or HTTP/2 (with HTTP/1.1 JSON as an optional alternative). The profile proto schema defines ExportProfilesServiceRequest analogous to the existing traces/metrics/logs service requests.
5 / 5
An engineer enables OTel profiling on a JVM service. The collector receives profiles but the stack frames show only memory addresses, not function names. What is the most likely cause?
JVM profilers using frame-pointer-based stack walking (like async-profiler in CPU mode) require -XX:+PreserveFramePointer JVM flag. Without it, the frame pointer register is reused for other purposes, causing the unwinder to fail and report only raw addresses instead of resolved function names.