summaryrefslogtreecommitdiffstats
path: root/collectors/ebpf.plugin/ebpf_dcstat.c
diff options
context:
space:
mode:
authorthiagoftsm <thiagoftsm@gmail.com>2021-06-18 13:35:05 +0000
committerGitHub <noreply@github.com>2021-06-18 13:35:05 +0000
commit2478279dbbca10457412db3b1d9c396f481cc675 (patch)
tree12b89c48f97f3afdd1784fd4a299dc4e2668d843 /collectors/ebpf.plugin/ebpf_dcstat.c
parentfde0e41cccdff7b529a84927fc44d153cf8b7ad4 (diff)
Ebpf apps memory usage (#11256)
Diffstat (limited to 'collectors/ebpf.plugin/ebpf_dcstat.c')
-rw-r--r--collectors/ebpf.plugin/ebpf_dcstat.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/collectors/ebpf.plugin/ebpf_dcstat.c b/collectors/ebpf.plugin/ebpf_dcstat.c
index 1f58d11337..35bf5e428f 100644
--- a/collectors/ebpf.plugin/ebpf_dcstat.c
+++ b/collectors/ebpf.plugin/ebpf_dcstat.c
@@ -15,7 +15,6 @@ netdata_publish_dcstat_t **dcstat_pid = NULL;
static struct bpf_link **probe_links = NULL;
static struct bpf_object *objects = NULL;
-static int *map_fd = NULL;
static netdata_idx_t dcstat_hash_values[NETDATA_DCSTAT_IDX_END];
static netdata_idx_t *dcstat_values = NULL;
@@ -31,9 +30,20 @@ struct netdata_static_thread dcstat_threads = {"DCSTAT KERNEL",
NULL, NULL, 1, NULL,
NULL, NULL};
-static ebpf_local_maps_t dcstat_maps[] = {{.name = "dcstat_pid", .internal_input = ND_EBPF_DEFAULT_PID_SIZE,
- .user_input = 0},
- {.name = NULL, .internal_input = 0, .user_input = 0}};
+static ebpf_local_maps_t dcstat_maps[] = {{.name = "dcstat_global", .internal_input = NETDATA_DIRECTORY_CACHE_END,
+ .user_input = 0, .type = NETDATA_EBPF_MAP_STATIC,
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED},
+ {.name = "dcstat_pid", .internal_input = ND_EBPF_DEFAULT_PID_SIZE,
+ .user_input = 0,
+ .type = NETDATA_EBPF_MAP_RESIZABLE | NETDATA_EBPF_MAP_PID,
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED},
+ {.name = "dcstat_ctrl", .internal_input = NETDATA_CONTROLLER_END,
+ .user_input = 0,
+ .type = NETDATA_EBPF_MAP_CONTROLLER,
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED},
+ {.name = NULL, .internal_input = 0, .user_input = 0,
+ .type = NETDATA_EBPF_MAP_CONTROLLER,
+ .map_fd = ND_EBPF_MAP_FD_NOT_INITIALIZED}};
static ebpf_specify_name_t dc_optional_name[] = { {.program_name = "netdata_lookup_fast",
.function_to_attach = "lookup_fast",
@@ -256,7 +266,7 @@ static void read_apps_table()
netdata_dcstat_pid_t *cv = dcstat_vector;
uint32_t key;
struct pid_stat *pids = root_of_pids;
- int fd = map_fd[NETDATA_DCSTAT_PID_STATS];
+ int fd = dcstat_maps[NETDATA_DCSTAT_PID_STATS].map_fd;
size_t length = sizeof(netdata_dcstat_pid_t)*ebpf_nprocs;
while (pids) {
key = pids->pid;
@@ -287,7 +297,7 @@ static void read_global_table()
uint32_t idx;
netdata_idx_t *val = dcstat_hash_values;
netdata_idx_t *stored = dcstat_values;
- int fd = map_fd[NETDATA_DCSTAT_GLOBAL_STATS];
+ int fd = dcstat_maps[NETDATA_DCSTAT_GLOBAL_STATS].map_fd;
for (idx = NETDATA_KEY_DC_REFERENCE; idx < NETDATA_DIRECTORY_CACHE_END; idx++) {
if (!bpf_map_lookup_elem(fd, &idx, stored)) {
@@ -474,8 +484,6 @@ static void dcstat_collector(ebpf_module_t *em)
dcstat_threads.thread = mallocz(sizeof(netdata_thread_t));
dcstat_threads.start_routine = ebpf_dcstat_read_hash;
- map_fd = dcstat_data.map_fd;
-
netdata_thread_create(dcstat_threads.thread, dcstat_threads.name, NETDATA_THREAD_OPTION_JOINABLE,
ebpf_dcstat_read_hash, em);
@@ -576,7 +584,7 @@ void *ebpf_dcstat_thread(void *ptr)
em->maps = dcstat_maps;
fill_ebpf_data(&dcstat_data);
- ebpf_update_pid_table(&dcstat_maps[0], em);
+ ebpf_update_pid_table(&dcstat_maps[NETDATA_DCSTAT_PID_STATS], em);
ebpf_update_names(dc_optional_name, em);