You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/sources/reference/components/pyroscope/pyroscope.ebpf.md
+37-22Lines changed: 37 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -15,19 +15,25 @@ title: pyroscope.ebpf
15
15
`pyroscope.ebpf` configures an eBPF profiling job for the current host.
16
16
The collected performance profiles are forwarded to the list of receivers passed in `forward_to`.
17
17
18
+
The `pyroscope.ebpf` component embeds the [`grafana/opentelemetry-ebpf-profiler`][] which is a fork of [`open-telemetry/opentelemetry-ebpf-profiler`][].
To use the `pyroscope.ebpf` component you must run {{< param "PRODUCT_NAME" >}} as root and inside the host PID namespace.
20
25
{{< /admonition >}}
21
26
27
+
{{< admonition type="note" >}}
28
+
The profiler requires file system storage at `/tmp/symb-cache` to store symbol cache data. Ensure this directory is accessible and has sufficient storage space.
29
+
{{< /admonition >}}
30
+
22
31
You can specify multiple `pyroscope.ebpf` components by giving them different labels, however it's not recommended as it can lead to additional memory and CPU usage.
23
32
24
33
## Supported languages
25
34
26
-
This eBPF profiler only collects CPU profiles. Generally, natively compiled languages like C/C++, Go, and Rust are supported. Refer to [Troubleshooting unknown symbols][troubleshooting] for additional requirements.
27
-
28
-
Python is the only supported high-level language, as long as `python_enabled=true`.
29
-
Other high-level languages like Java, Ruby, PHP, and JavaScript require additional work to show stack traces of methods in these languages correctly.
30
-
Currently, the CPU usage for these languages is reported as belonging to the runtime's methods.
35
+
- Native code (C/C++, Rust, Zig, Go, etc. without debug symbols on host)
36
+
- Broad set of HLLs (Hotspot JVM, Python, Ruby, PHP, Node.JS, V8, Perl).
31
37
32
38
## Usage
33
39
@@ -44,27 +50,36 @@ The component configures and starts a new eBPF profiling job to collect performa
44
50
45
51
You can use the following arguments with `pyroscope.ebpf`:
46
52
47
-
| Name | Type | Description | Default | Required |
|`forward_to`|`list(ProfilesReceiver)`| List of receivers to send collected profiles to. || yes |
50
-
|`targets`|`list(map(string))`| List of targets to group profiles by container id || yes |
51
-
|`build_id_cache_size`|`int`| The size of the elf file build id -> symbols table LRU cache |`64`| no |
52
-
|`collect_interval`|`duration`| How frequently to collect profiles |`"15s"`| no |
53
-
|`collect_kernel_profile`|`bool`| A flag to enable/disable collection of kernelspace profiles |`true`| no |
54
-
|`collect_user_profile`|`bool`| A flag to enable/disable collection of userspace profiles |`true`| no |
55
-
|`container_id_cache_size`|`int`| The size of the PID -> container ID table LRU cache |`1024`| no |
56
-
|`demangle`|`string`| C++ demangle mode. Available options are: `none`, `simplified`, `templates`, or `full`|`"none"`| no |
57
-
|`go_table_fallback`|`bool`| A flag to enable symbol lookup in `.sym` / `.dynsym` sections when `.gopclntab` lookup failed. May be useful for `cgo` binaries. |`false`| no |
58
-
|`pid_cache_size`|`int`| The size of the PID -> proc symbols table LRU cache |`32`| no |
59
-
|`pid_map_size`|`int`| The size of eBPF PID map |`2048`| no |
60
-
|`python_enabled`|`bool`| A flag to enable/disable python profiling |`true`| no |
61
-
|`same_file_cache_size`|`int`| The size of the elf file -> symbols table LRU cache |`8`| no |
62
-
|`sample_rate`|`int`| How many times per second to collect profile samples |`97`| no |
63
-
|`symbols_map_size`|`int`| The size of eBPF symbols map |`16384`| no |
53
+
| Name | Type | Description | Default | Required |
|`forward_to`|`list(ProfilesReceiver)`| List of receivers to send collected profiles to. || yes |
56
+
|`targets`|`list(map(string))`| List of targets to group profiles by container ID. || yes |
57
+
|`build_id_cache_size`|`int`| Deprecated (no-op), previously controlled the size of the elf file build id -> symbols table LRU cache. |`64`| no |
58
+
|`cache_rounds`|`int`| Deprecated (no-op), previously controlled the number of cache rounds. || no |
59
+
|`collect_interval`|`duration`| How frequently to collect profiles. |`"15s"`| no |
60
+
|`collect_kernel_profile`|`bool`| Deprecated (no-op), previously enabled collection of kernelspace profiles. |`true`| no |
61
+
|`collect_user_profile`|`bool`| Deprecated (no-op), previously enabled collection of userspace profiles. |`true`| no |
62
+
|`container_id_cache_size`|`int`| The size of the PID -> container ID table LRU cache. |`1024`| no |
63
+
|`demangle`|`string`| C++ demangle mode. Available options are: `none`, `simplified`, `templates`, or `full`. |`"none"`| no |
64
+
|`dotnet_enabled`|`bool`| A flag to enable or disable .NET profiling. |`true`| no |
65
+
|`go_table_fallback`|`bool`| Deprecated (no-op), previously enabled symbol lookup in `.sym` / `.dynsym` sections when `.gopclntab` lookup failed. |`false`| no |
66
+
|`hotspot_enabled`|`bool`| A flag to enable ordisable hotspot profiling. |`true`| no |
67
+
|`perl_enabled`|`bool`| A flag to enable or disable Perl profiling. |`true`| no |
68
+
|`php_enabled`|`bool`| A flag to enable or disable PHP profiling. |`true`| no |
69
+
|`pid_cache_size`|`int`| Deprecated (no-op), previously controlled the size of the PID -> proc symbols table LRU cache. |`32`| no |
70
+
|`pid_map_size`|`int`| Deprecated (no-op), previously controlled the size of eBPF PID map. |`2048`| no |
71
+
|`python_enabled`|`bool`| A flag to enable or disable python profiling. |`true`| no |
72
+
|`ruby_enabled`|`bool`| A flag to enable or disable Ruby profiling. |`true`| no |
73
+
|`same_file_cache_size`|`int`| Deprecated (no-op), previously controlled the size of the elf file -> symbols table LRU cache. |`8`| no |
74
+
|`sample_rate`|`int`| How many times per second to collect profile samples. |`19`| no |
75
+
|`symbols_map_size`|`int`| Deprecated (no-op), previously controlled the size of eBPF symbols map . |`16384`| no |
76
+
|`v8_enabled`|`bool`| A flag to enable/disable V8 profiling. |`true`| no |
64
77
65
78
Only the `forward_to` and `targets` fields are required.
66
79
Omitted fields take their default values.
67
80
81
+
Several arguments are marked as "Deprecated (no-op)". These arguments were previously used for configuring various cache sizes and behaviors, but they no longer have any effect. They are kept for backward compatibility but will be removed in a future release. It is recommended to remove these arguments from your configuration.
82
+
68
83
## Blocks
69
84
70
85
The `pyroscope.ebpf` component doesn't support any blocks. You can configure this component with arguments.
0 commit comments