mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
bpf: cpumap memory usage
A new helper is introduced to calculate cpumap memory usage. The size of
cpu_entries can be dynamically changed when we update or delete a cpumap
element, but this patch doesn't include the memory size of cpu_entry
yet. We can dynamically calculate the memory usage when we alloc or free
a cpu_entry, but it will take extra runtime overhead, so let just put it
aside currently. Note that the size of different cpu_entry may be
different as well.
The result as follows,
- before
48: cpumap name count_map flags 0x4
key 4B value 4B max_entries 64 memlock 4096B
- after
48: cpumap name count_map flags 0x4
key 4B value 4B max_entries 64 memlock 832B
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Link: https://lore.kernel.org/r/20230305124615.12358-10-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
71a49abe73
commit
835f1fca95
|
|
@ -673,6 +673,15 @@ static int cpu_map_redirect(struct bpf_map *map, u64 index, u64 flags)
|
|||
__cpu_map_lookup_elem);
|
||||
}
|
||||
|
||||
static u64 cpu_map_mem_usage(const struct bpf_map *map)
|
||||
{
|
||||
u64 usage = sizeof(struct bpf_cpu_map);
|
||||
|
||||
/* Currently the dynamically allocated elements are not counted */
|
||||
usage += (u64)map->max_entries * sizeof(struct bpf_cpu_map_entry *);
|
||||
return usage;
|
||||
}
|
||||
|
||||
BTF_ID_LIST_SINGLE(cpu_map_btf_ids, struct, bpf_cpu_map)
|
||||
const struct bpf_map_ops cpu_map_ops = {
|
||||
.map_meta_equal = bpf_map_meta_equal,
|
||||
|
|
@ -683,6 +692,7 @@ const struct bpf_map_ops cpu_map_ops = {
|
|||
.map_lookup_elem = cpu_map_lookup_elem,
|
||||
.map_get_next_key = cpu_map_get_next_key,
|
||||
.map_check_btf = map_check_no_btf,
|
||||
.map_mem_usage = cpu_map_mem_usage,
|
||||
.map_btf_id = &cpu_map_btf_ids[0],
|
||||
.map_redirect = cpu_map_redirect,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user