Universal Profiling
Elastic Universal Profiling is a whole-system, always-on, continuous profiling solution that eliminates the need for code instrumentation, recompilation, on-host debug symbols, and service restarts. Leveraging eBPF technology, Universal Profiling operates within the Linux kernel space, capturing only the needed data with minimal overhead in an unobtrusive manner. For a quick overview of Universal Profiling, see theUniversal Profiling product page.
On this page, you’ll find information on:
- inspecting data throughstacktraces,flamegraphs, andfunctions
- filtering your data
- comparing time ranges throughdifferential views
To openUniversal Profiling, findInfrastructure in the main menu or use theglobal search field.
UnderUniversal Profiling, clickStacktraces to open thestacktraces view.
Universal Profiling currently only supports CPU profiling through stack sampling.
From theStacktraces view, you get an overview of all of your data. You can also use filtering queries in the search bar to slice your data into more detailed sections of your fleet. Time-based filters and property filters allow you to inspect portions of data and drill-down into how much CPU various parts of your infrastructure consume over time.
SeeFiltering for more on slicing data andDifferential views for more on comparing two time ranges to detect performance improvements or regressions.
Your stacktrace can be:
- symbolized, showing the full source code’s filename and line number
- partially symbolized
- not symbolized
In the following screenshot, you can see that unsymbolized framesdo not show a filename and line number, but a hexadecimal number such as0x80d2f4 or<unsymbolized>.
Adding symbols for unsymbolized frames is currently a manual operation. SeeAdd symbols for native frames.

The stacktraces view shows graphs of stacktraces grouped by threads, traces, hosts, deployments, and containers:







