From 775b873425ed570c3e9e4d9521b6372462ff5638 Mon Sep 17 00:00:00 2001 From: Jin Jie Date: Sat, 11 Oct 2025 14:38:38 +0800 Subject: [PATCH] [docs] update profile configuration docs --- .../02-configuration.md | 219 +++++++++-------- .../02-configuration.md | 228 +++++++++--------- 2 files changed, 233 insertions(+), 214 deletions(-) diff --git a/docs/zh/05-features/04-continuous-profiling/02-configuration.md b/docs/zh/05-features/04-continuous-profiling/02-configuration.md index 2987e2ae..d7ed0f3f 100644 --- a/docs/zh/05-features/04-continuous-profiling/02-configuration.md +++ b/docs/zh/05-features/04-continuous-profiling/02-configuration.md @@ -3,134 +3,143 @@ title: 配置方法 permalink: /features/continuous-profiling/configuration --- -# eBPF On-CPU Profiling +默认情况下,持续剖析仅对特定进程开启,请参考本文修改采集器组配置,开启/调整持续剖析功能。在企业版中,请前往 `系统管理-采集器-配置` 页面进行采集器组配置的修改。 + +# Process Matcher -eBPF On-CPU Profiling 是默认开启的,但你需要通过修改 `static_config.ebpf.on-cpu-profile.regex` 来指定需要开启的进程列表。默认情况下仅对进程名以 `deepflow-` 开头的进程开启。Agent 支持的配置参数如下: +Agent 使用 `inputs.proc.process_matcher` 配置来匹配进程,开启对应进程的持续剖析功能。默认配置如下: ```yaml -static_config: - ebpf: - ## Java compliant update latency time - ## Default: 600s. Range: [5, 3600]s - ## Note: - ## When deepflow-agent finds that an unresolved function name appears in the function call stack - ## of a Java process, it will trigger the regeneration of the symbol file of the process. - ## Because Java utilizes the Just-In-Time (JIT) compilation mechanism, to obtain more symbols for - ## Java processes, the regeneration will be deferred for a period of time. - #java-symbol-file-refresh-defer-interval: 600s - - ## Maximum size limit for Java symbol file. - ## Default: 10. Range: [2, 100] - ## Note: - ## Which means it falls within the interval of 2Mi to 100Mi. If the configuration value is outside - ## this range, the default value of 10(10Mi), will be used. - ## All Java symbol files are stored in the '/tmp' directory mounted by the deepflow-agent. To prevent - ## excessive occupation of host node space due to large Java symbol files, a maximum size limit is set - ## for each generated Java symbol file. - #java-symbol-file-max-space-limit: 10 - - ## on-cpu profile configuration - on-cpu-profile: - ## eBPF on-cpu Profile Switch - ## Default: false - disabled: false - - ## Sampling frequency - ## Default: 99 - frequency: 99 - - ## Whether to obtain the value of CPUID and decide whether to participate in aggregation. - ## Set to 1: - ## Obtain the value of CPUID and will be included in the aggregation of stack trace data. - ## Set to 0: - ## It will not be included in the aggregation. Any other value is considered invalid, - ## the CPU value for stack trace data reporting is a special value (CPU_INVALID:0xfff) - ## used to indicate that it is an invalid value. - ## Default: 0 - cpu: 0 - - ## Sampling process name - ## Default: ^deepflow-.* - regex: ^deepflow-.* +inputs: + proc: + process_matcher: + - match_regex: \bjava( +\S+)* +-jar +(\S*/)*([^ /]+\.jar) + match_type: cmdline_with_args + only_in_container: false + rewrite_name: $3 + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: \bpython(\S)*( +-\S+)* +(\S*/)*([^ /]+) + match_type: cmdline_with_args + only_in_container: false + rewrite_name: $4 + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: ^deepflow- + only_in_container: false + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: .* + enabled_features: [proc.gprocess_info] ``` 上述配置的含义如下: -- **disabled**:默认为 False,表示功能开启。 -- **frequency**:采样频率,默认 99 约表示 10ms 采样周期。不建议设置为 10 的整数倍,避免和程序运行或调度的时钟同频。 -- **cpu**:默认为 0,表示一台主机上采集的数据不区分 CPU,当设置为 1 时数据将按 CPU ID 聚合。 -- **regex**:开启 On-CPU Profiling 的进程名正则表达式。 -- **java-symbol-file-refresh-default-interval**:Java 符号表的刷新间隔,避免高频刷新 -- **java-symbol-file-max-space-limit**:避免 Java 符号表占用过大的 `/tmp` 空间 +- **match_regex**: 进程匹配的正则表达式,匹配规则如下: + - 第一条规则匹配 Java 进程,例如 `java -jar app.jar`,并将进程名重写为 jar 包名 + - 第二条规则匹配 Python 进程,例如 `python app.py`,并将进程名重写为 Python 脚本名 + - 第三条规则匹配以 `deepflow-` 开头的进程 + - 最后一条规则匹配所有进程 +- **match_type**: 匹配类型,可选值: + - `cmdline_with_args`: 匹配完整命令行(包含参数) + - `cmdline`: 仅匹配命令(不含参数) + - `process_name`: 匹配进程名 +- **only_in_container**: 是否仅匹配容器内的进程 +- **rewrite_name**: 重写进程名的规则,支持正则表达式捕获组引用 +- **enabled_features**: 为匹配的进程启用的功能列表: + - `ebpf.profile.on_cpu`: 开启 On-CPU 剖析,需要配置 `inputs.ebpf.profile.on_cpu.disabled: false` + - `ebpf.profile.off_cpu`: 开启 Off-CPU 剖析,需要配置 `inputs.ebpf.profile.off_cpu.disabled: false` + - `ebpf.profile.memory`: 开启内存剖析,需要配置 `inputs.ebpf.profile.memory.disabled: false` + +同时可以使用 `inputs.proc.process_blacklist` 来忽略某些进程,其优先级比 `process_matcher` 高。 -# eBPF Off-CPU Profiling +```yaml +inputs: + proc: + process_blacklist: [sleep, sh, bash, pause, runc, grep, awk, sed, curl] +``` + +# Symbol Table -eBPF Off-CPU Profiling(仅企业版)是默认开启的,但你需要通过修改 `static_config.ebpf.off-cpu-profile.regex` 来指定需要开启的进程列表。默认情况下仅对进程名以 `deepflow-` 开头的进程开启。Agent 支持的配置参数如下: +可以为特定语言配置符号表相关的设置。这些设置对于各类持续剖析都生效,一般保持默认配置即可,无需修改。 ```yaml -static_config: +inputs: ebpf: + symbol_table: + golang_specific: + enabled: false + java: + refresh_defer_duration: 60s + max_symbol_file_size: 10 +``` + +上述配置的含义如下: +- **golang_specific.enabled**:配置是否开启 Golang 特有符号表的解析能力。 +- **refresh_defer_duration**: Java 符号表的刷新延迟,避免高频刷新。 +- **max_symbol_file_size**: Java 符号表占用的最大空间大小,单位为 GB,避免占用过大的 `/tmp` 空间。 + +# eBPF On-CPU Profiling + +eBPF On-CPU Profiling 是默认开启的,但需要修改 `inputs.proc.process_matcher` 来指定进程列表。Agent 支持的配置参数如下: - ## Off-cpu profile configuration, Enterprise Edition Only. - #off-cpu-profile: - ## eBPF off-cpu Profile Switch - ## Default: false - #disabled: false - - ## Off-cpu trace process name - ## Default: ^deepflow-.* - #regex: ^deepflow-.* - - ## Whether to obtain the value of CPUID and decide whether to participate in aggregation. - ## Set to 1: - ## Obtain the value of CPUID and will be included in the aggregation of stack trace data. - ## Set to 0: - ## It will not be included in the aggregation. Any other value is considered invalid, - ## the CPU value for stack trace data reporting is a special value (CPU_INVALID:0xfff) - ## used to indicate that it is an invalid value. - ## Default: 0 - #cpu: 0 - - ## Configure the minimum blocking event time - ## Default: 50us. Range: [0, 2^32-1)us - ## Note: - ## If set to 0, there will be no minimum value limitation. - ## Scheduler events are still high-frequency events, as their rate may exceed 1 million events - ## per second, so caution should still be exercised. - ## If overhead remains an issue, you can configure the 'minblock' tunable parameter here. - ## If the off-CPU time is less than the value configured in this item, the data will be discarded. - ## If your goal is to trace longer blocking events, increasing this parameter can filter out shorter - ## blocking events, further reducing overhead. Additionally, we will not collect events with a block - ## time exceeding 1 hour. - #minblock: 50us +```yaml +inputs: + ebpf: + profile: + on_cpu: + disabled: false + sampling_frequency: 99 + aggregate_by_cpu: false ``` 上述配置的含义如下: +- **disabled**: 默认为 false,表示功能开启。 +- **sampling_frequency**: 采样频率,默认 99 约表示 10ms 采样周期。不建议设置为 10 的整数倍,避免和程序运行或调度的时钟同频。 +- **aggregate_by_cpu**: 默认为 false,表示一台主机上采集的数据不区分 CPU,当设置为 true 时数据将按 CPU ID 聚合。 + +# eBPF Off-CPU Profiling + +eBPF Off-CPU Profiling(仅企业版)是默认关闭的,同时需要修改 `inputs.proc.process_matcher` 来指定需进程列表。Agent 支持的配置参数如下: -- **disabled**:默认为 False,表示功能开启。 -- **regex**:开启 Off-CPU Profiling 的进程名正则表达式。 -- **cpu**:默认为 0,表示一台主机上采集的数据不区分 CPU,当设置为 1 时数据将按 CPU ID 聚合。 -- **minblock**:使用持续时间限制采集的 Off-CPU 事件,避免采集过多导致主机负载过高。 +```yaml +inputs: + ebpf: + profile: + off_cpu: + disabled: true + aggregate_by_cpu: false + min_blocking_time: 50us +``` -另外,下面两个 On-CPU 的配置项同时也对 Off-CPU 有效: +上述配置的含义如下: -- **java-symbol-file-refresh-default-interval** -- **java-symbol-file-max-space-limit** +- **disabled**:默认为 true,表示功能关闭。 +- **aggregate_by_cpu**:默认为 false,表示一台主机上采集的数据不区分 CPU,当设置为 true 时数据将按 CPU ID 聚合。 +- **min_blocking_time**:使用持续时间限制采集的 Off-CPU 事件,避免采集过多导致主机负载过高。 # eBPF Memory Profiling -eBPF Memory Profiling(仅企业版)是默认关闭的,你需要通过修改 `static_config.ebpf.memory-profile.regex` 来指定需要开启的进程列表。Agent 支持的配置参数如下: +eBPF Memory Profiling(仅企业版)是默认关闭的,同时需要修改 `inputs.proc.process_matcher` 来指定需进程列表。Agent 支持的配置参数如下: ```yaml -static_config: +inputs: ebpf: - # Memory profile configuration, Enterprise Edition Only. - memory-profile: - # eBPF memory Profile Switch - # Default: true - disabled: true - - # Memory trace process name - # Default: ^java - regex: ^java + profile: + memory: + disabled: true + report_interval: 10s + allocated_addresses_lru_len: 131072 + sort_length: 16384 + sort_interval: 1500ms + queue_size: 32768 ``` + +上述配置的含义如下: + +- **disabled**:默认为 true,表示功能关闭。 +- **report_interval**:Agent 聚合和上报内存剖析数据的间隔。 +- **allocated_addresses_lru_len**:采集器使用 LRU 缓存记录进程分配的地址,以避免内存使用失控。每个 LRU 条目大约占 32B 内存。 +- **sort_length**:内存剖析数据处理前按时间戳进行排序的队列长度。 + - 配置该选项时先按说明调整 `sort_interval` 参数,在参考采集器性能统计 `deepflow_agent_ebpf_memory_profiler` 中 `dequeued_by_length` 和 `dequeued_by_interval` 指标,在保证前者小于后者几倍的前提下适当调小该参数。 +- **sort_interval**:内存剖析数据处理前按时间戳进行排序的最大时间间隔。该参数控制排序数组中第一个和最后一个元素之间的时间间隔的最大值。 + - 配置该选项可以参考采集器性能统计 `deepflow_agent_ebpf_memory_profiler` 中 `time_backtracked` 指标,增大该参数使之为 0 即可。注意可能需要相应增大 `sort_length` 参数。 +- **queue_size**:内存剖析组件内部的队列大小。 + - 配置该选项可以参考采集器性能统计 `deepflow_agent_ebpf_memory_profiler` 中 `overwritten` 和 `pending` 指标,增大该配置使得前者为 0,后者不高于该配置即可。 diff --git a/translate/translated/05-features/04-continuous-profiling/02-configuration.md b/translate/translated/05-features/04-continuous-profiling/02-configuration.md index d3b650d0..e618523e 100644 --- a/translate/translated/05-features/04-continuous-profiling/02-configuration.md +++ b/translate/translated/05-features/04-continuous-profiling/02-configuration.md @@ -3,136 +3,146 @@ title: Configuration Method permalink: /features/continuous-profiling/configuration --- -> This document was translated by ChatGPT +> This document was translated by DeepSeek -# eBPF On-CPU Profiling +By default, continuous profiling is only enabled for specific processes. Please refer to this document to modify the Agent group configuration to enable/adjust the continuous profiling functionality. In the Enterprise Edition, navigate to `System - Agent - Configuration` to modify the Agent group settings. + +# Process Matcher -eBPF On-CPU Profiling is enabled by default, but you need to specify the list of processes to be enabled by modifying `static_config.ebpf.on-cpu-profile.regex`. By default, it is only enabled for processes whose names start with `deepflow-`. The configuration parameters supported by the Agent are as follows: +The Agent uses the `inputs.proc.process_matcher` configuration to match processes and enable continuous profiling for the corresponding processes. The default configuration is as follows: ```yaml -static_config: - ebpf: - ## Java compliant update latency time - ## Default: 600s. Range: [5, 3600]s - ## Note: - ## When deepflow-agent finds that an unresolved function name appears in the function call stack - ## of a Java process, it will trigger the regeneration of the symbol file of the process. - ## Because Java utilizes the Just-In-Time (JIT) compilation mechanism, to obtain more symbols for - ## Java processes, the regeneration will be deferred for a period of time. - #java-symbol-file-refresh-defer-interval: 600s - - ## Maximum size limit for Java symbol file. - ## Default: 10. Range: [2, 100] - ## Note: - ## Which means it falls within the interval of 2Mi to 100Mi. If the configuration value is outside - ## this range, the default value of 10(10Mi), will be used. - ## All Java symbol files are stored in the '/tmp' directory mounted by the deepflow-agent. To prevent - ## excessive occupation of host node space due to large Java symbol files, a maximum size limit is set - ## for each generated Java symbol file. - #java-symbol-file-max-space-limit: 10 - - ## on-cpu profile configuration - on-cpu-profile: - ## eBPF on-cpu Profile Switch - ## Default: false - disabled: false - - ## Sampling frequency - ## Default: 99 - frequency: 99 - - ## Whether to obtain the value of CPUID and decide whether to participate in aggregation. - ## Set to 1: - ## Obtain the value of CPUID and will be included in the aggregation of stack trace data. - ## Set to 0: - ## It will not be included in the aggregation. Any other value is considered invalid, - ## the CPU value for stack trace data reporting is a special value (CPU_INVALID:0xfff) - ## used to indicate that it is an invalid value. - ## Default: 0 - cpu: 0 - - ## Sampling process name - ## Default: ^deepflow-.* - regex: ^deepflow-.* +inputs: + proc: + process_matcher: + - match_regex: \bjava( +\S+)* +-jar +(\S*/)*([^ /]+\.jar) + match_type: cmdline_with_args + only_in_container: false + rewrite_name: $3 + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: \bpython(\S)*( +-\S+)* +(\S*/)*([^ /]+) + match_type: cmdline_with_args + only_in_container: false + rewrite_name: $4 + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: ^deepflow- + only_in_container: false + enabled_features: [ebpf.profile.on_cpu, proc.gprocess_info] + - match_regex: .* + enabled_features: [proc.gprocess_info] ``` -The meanings of the above configurations are as follows: +The meaning of the above configuration is as follows: + +- **match_regex**: The regular expression for process matching. The matching rules are as follows: + - The first rule matches Java processes, e.g., `java -jar app.jar`, and rewrites the process name to the JAR filename. + - The second rule matches Python processes, e.g., `python app.py`, and rewrites the process name to the Python script name. + - The third rule matches processes starting with `deepflow-`. + - The last rule matches all processes. +- **match_type**: The matching type. Optional values are: + - `cmdline_with_args`: Matches the full command line (including arguments). + - `cmdline`: Matches only the command (excluding arguments). + - `process_name`: Matches the process name. +- **only_in_container**: Whether to match only processes within containers. +- **rewrite_name**: The rule for rewriting the process name, supporting references to regex capture groups. +- **enabled_features**: The list of features enabled for matched processes: + - `ebpf.profile.on_cpu`: Enables On-CPU profiling, requires `inputs.ebpf.profile.on_cpu.disabled: false` + - `ebpf.profile.off_cpu`: Enables Off-CPU profiling, requires `inputs.ebpf.profile.off_cpu.disabled: false` + - `ebpf.profile.memory`: Enables memory profiling, requires `inputs.ebpf.profile.memory.disabled: false` + +Additionally, `inputs.proc.process_blacklist` can be used to ignore specific processes. It has higher priority than `process_matcher`. -- **disabled**: Default is False, indicating the feature is enabled. -- **frequency**: Sampling frequency, default is 99, which approximately represents a 10ms sampling period. It is not recommended to set it to an integer multiple of 10 to avoid synchronization with the program's runtime or scheduling clock. -- **cpu**: Default is 0, indicating that the data collected on a host is not distinguished by CPU. When set to 1, the data will be aggregated by CPU ID. -- **regex**: Regular expression for the process names to enable On-CPU Profiling. -- **java-symbol-file-refresh-default-interval**: Refresh interval for Java symbol files to avoid high-frequency refreshes. -- **java-symbol-file-max-space-limit**: To prevent Java symbol files from occupying too much `/tmp` space. +```yaml +inputs: + proc: + process_blacklist: [sleep, sh, bash, pause, runc, grep, awk, sed, curl] +``` -# eBPF Off-CPU Profiling +# Symbol Table -eBPF Off-CPU Profiling (Enterprise Edition only) is enabled by default, but you need to specify the list of processes to be enabled by modifying `static_config.ebpf.off-cpu-profile.regex`. By default, it is only enabled for processes whose names start with `deepflow-`. The configuration parameters supported by the Agent are as follows: +Symbol table related settings can be configured for specific languages. These settings apply to all continuous profiling types and typically work well with default values, requiring no changes. ```yaml -static_config: +inputs: ebpf: + symbol_table: + golang_specific: + enabled: false + java: + refresh_defer_duration: 60s + max_symbol_file_size: 10 +``` + +The meaning of the above configuration is as follows: +- **golang_specific.enabled**: Configures whether to enable Golang-specific symbol table parsing capability. +- **refresh_defer_duration**: The refresh deferral duration for the Java symbol table, to avoid high-frequency refreshing. +- **max_symbol_file_size**: The maximum disk space occupied by the Java symbol table, in GB, to avoid consuming excessive `/tmp` space. + +# eBPF On-CPU Profiling + +eBPF On-CPU Profiling is enabled by default, but requires modifying `inputs.proc.process_matcher` to specify the target process list. The configuration parameters supported by the Agent are as follows: - ## Off-cpu profile configuration, Enterprise Edition Only. - #off-cpu-profile: - ## eBPF off-cpu Profile Switch - ## Default: false - #disabled: false - - ## Off-cpu trace process name - ## Default: ^deepflow-.* - #regex: ^deepflow-.* - - ## Whether to obtain the value of CPUID and decide whether to participate in aggregation. - ## Set to 1: - ## Obtain the value of CPUID and will be included in the aggregation of stack trace data. - ## Set to 0: - ## It will not be included in the aggregation. Any other value is considered invalid, - ## the CPU value for stack trace data reporting is a special value (CPU_INVALID:0xfff) - ## used to indicate that it is an invalid value. - ## Default: 0 - #cpu: 0 - - ## Configure the minimum blocking event time - ## Default: 50us. Range: [0, 2^32-1)us - ## Note: - ## If set to 0, there will be no minimum value limitation. - ## Scheduler events are still high-frequency events, as their rate may exceed 1 million events - ## per second, so caution should still be exercised. - ## If overhead remains an issue, you can configure the 'minblock' tunable parameter here. - ## If the off-CPU time is less than the value configured in this item, the data will be discarded. - ## If your goal is to trace longer blocking events, increasing this parameter can filter out shorter - ## blocking events, further reducing overhead. Additionally, we will not collect events with a block - ## time exceeding 1 hour. - #minblock: 50us +```yaml +inputs: + ebpf: + profile: + on_cpu: + disabled: false + sampling_frequency: 99 + aggregate_by_cpu: false ``` -The meanings of the above configurations are as follows: +The meaning of the above configuration is as follows: +- **disabled**: Defaults to false, meaning the feature is enabled. +- **sampling_frequency**: The sampling frequency. A default value of 99 corresponds to approximately a 10ms sampling period. It is not recommended to set this to an integer multiple of 10, to avoid synchronization with program execution or scheduling clocks. +- **aggregate_by_cpu**: Defaults to false, meaning the data collected on a host is not distinguished by CPU. When set to true, data will be aggregated by CPU ID. -- **disabled**: Default is False, indicating the feature is enabled. -- **regex**: Regular expression for the process names to enable Off-CPU Profiling. -- **cpu**: Default is 0, indicating that the data collected on a host is not distinguished by CPU. When set to 1, the data will be aggregated by CPU ID. -- **minblock**: Use duration limit to collect Off-CPU events to avoid excessive collection leading to high host load. +# eBPF Off-CPU Profiling -Additionally, the following two On-CPU configuration items are also effective for Off-CPU: +eBPF Off-CPU Profiling (Enterprise Edition only) is disabled by default. It also requires modifying `inputs.proc.process_matcher` to specify the target process list. The configuration parameters supported by the Agent are as follows: -- **java-symbol-file-refresh-default-interval** -- **java-symbol-file-max-space-limit** +```yaml +inputs: + ebpf: + profile: + off_cpu: + disabled: true + aggregate_by_cpu: false + min_blocking_time: 50us +``` + +The meaning of the above configuration is as follows: + +- **disabled**: Defaults to true, meaning the feature is disabled. +- **aggregate_by_cpu**: Defaults to false, meaning the data collected on a host is not distinguished by CPU. When set to true, data will be aggregated by CPU ID. +- **min_blocking_time**: Uses the duration to limit the collected Off-CPU events, preventing excessive collection that could lead to high host load. # eBPF Memory Profiling -eBPF Memory Profiling (Enterprise Edition only) is disabled by default. You need to specify the list of processes to be enabled by modifying `static_config.ebpf.memory-profile.regex`. The configuration parameters supported by the Agent are as follows: +eBPF Memory Profiling (Enterprise Edition only) is disabled by default. It also requires modifying `inputs.proc.process_matcher` to specify the target process list. The configuration parameters supported by the Agent are as follows: ```yaml -static_config: +inputs: ebpf: - # Memory profile configuration, Enterprise Edition Only. - memory-profile: - # eBPF memory Profile Switch - # Default: true - disabled: true - - # Memory trace process name - # Default: ^java - regex: ^java -``` \ No newline at end of file + profile: + memory: + disabled: true + report_interval: 10s + allocated_addresses_lru_len: 131072 + sort_length: 16384 + sort_interval: 1500ms + queue_size: 32768 +``` + +The meaning of the above configuration is as follows: + +- **disabled**: Defaults to true, meaning the feature is disabled. +- **report_interval**: The interval at which the Agent aggregates and reports memory profiling data. +- **allocated_addresses_lru_len**: The collector uses an LRU cache to record process-allocated addresses to prevent uncontrolled memory usage. Each LRU entry occupies approximately 32B of memory. +- **sort_length**: The queue length for sorting memory profiling data by timestamp before processing. + - When configuring this option, first adjust the `sort_interval` parameter as described. Then, refer to the collector performance metrics `deepflow_agent_ebpf_memory_profiler`, specifically the `dequeued_by_length` and `dequeued_by_interval` metrics. Appropriately reduce this parameter ensuring the former is several times smaller than the latter. +- **sort_interval**: The maximum time interval for sorting memory profiling data by timestamp before processing. This parameter controls the maximum time difference between the first and last elements in the sorting array. + - When configuring this option, refer to the collector performance metric `deepflow_agent_ebpf_memory_profiler`, specifically the `time_backtracked` metric. Increase this parameter until the metric becomes 0. Note that it might be necessary to correspondingly increase the `sort_length` parameter. +- **queue_size**: The internal queue size of the memory profiling component. + - When configuring this option, refer to the collector performance metrics `deepflow_agent_ebpf_memory_profiler`, specifically the `overwritten` and `pending` metrics. Increase this configuration until the former is 0 and the latter does not exceed this configuration value. +```