BPF List
 help / color / mirror / Atom feed
From: Yafang Shao <laoar.shao@gmail.com>
To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
	kafai@fb.com, songliubraving@fb.com, yhs@fb.com,
	john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com,
	haoluo@google.com, jolsa@kernel.org, horenc@vt.edu,
	xiyou.wangcong@gmail.com
Cc: bpf@vger.kernel.org, Yafang Shao <laoar.shao@gmail.com>
Subject: [PATCH bpf-next v2 05/18] bpf: stackmap memory usage
Date: Wed, 22 Feb 2023 01:45:40 +0000	[thread overview]
Message-ID: <20230222014553.47744-6-laoar.shao@gmail.com> (raw)
In-Reply-To: <20230222014553.47744-1-laoar.shao@gmail.com>

A new helper is introduced to get stackmap memory usage. Some small
memory allocations are ignored as their memory size is quite small
compared to the totol usage.

The result as follows,
- before
16: stack_trace  name count_map  flags 0x0
        key 4B  value 8B  max_entries 65536  memlock 1048576B

- after
16: stack_trace  name count_map  flags 0x0
        key 4B  value 8B  max_entries 65536  memlock 2097472B

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 kernel/bpf/stackmap.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c
index aecea74..0f1d8dc 100644
--- a/kernel/bpf/stackmap.c
+++ b/kernel/bpf/stackmap.c
@@ -654,6 +654,19 @@ static void stack_map_free(struct bpf_map *map)
 	put_callchain_buffers();
 }
 
+static u64 stack_map_mem_usage(const struct bpf_map *map)
+{
+	struct bpf_stack_map *smap = container_of(map, struct bpf_stack_map, map);
+	u64 value_size = map->value_size;
+	u64 n_buckets = smap->n_buckets;
+	u64 enties = map->max_entries;
+	u64 usage = sizeof(*smap);
+
+	usage += n_buckets * sizeof(struct stack_map_bucket *);
+	usage += enties * (sizeof(struct stack_map_bucket) + value_size);
+	return usage;
+}
+
 BTF_ID_LIST_SINGLE(stack_trace_map_btf_ids, struct, bpf_stack_map)
 const struct bpf_map_ops stack_trace_map_ops = {
 	.map_meta_equal = bpf_map_meta_equal,
@@ -664,5 +677,6 @@ static void stack_map_free(struct bpf_map *map)
 	.map_update_elem = stack_map_update_elem,
 	.map_delete_elem = stack_map_delete_elem,
 	.map_check_btf = map_check_no_btf,
+	.map_mem_usage = stack_map_mem_usage,
 	.map_btf_id = &stack_trace_map_btf_ids[0],
 };
-- 
1.8.3.1


  parent reply	other threads:[~2023-02-22  1:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-22  1:45 [PATCH bpf-next v2 00/18] bpf: bpf memory usage Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 01/18] bpf: add new map ops ->map_mem_usage Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 02/18] bpf: lpm_trie memory usage Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 03/18] bpf: hashtab " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 04/18] bpf: arraymap " Yafang Shao
2023-02-22  1:45 ` Yafang Shao [this message]
2023-02-22  1:45 ` [PATCH bpf-next v2 06/18] bpf: reuseport_array " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 07/18] bpf: ringbuf " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 08/18] bpf: bloom_filter " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 09/18] bpf: cpumap " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 10/18] bpf: devmap " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 11/18] bpf: queue_stack_maps " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 12/18] bpf: bpf_struct_ops " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 13/18] bpf: local_storage " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 14/18] bpf, net: bpf_local_storage " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 15/18] bpf, net: sock_map " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 16/18] bpf, net: xskmap " Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 17/18] bpf: offload map " Yafang Shao
2023-02-22 11:01   ` kernel test robot
2023-02-23 14:17     ` Yafang Shao
2023-02-22  1:45 ` [PATCH bpf-next v2 18/18] bpf: enforce all maps having memory usage callback Yafang Shao
2023-02-22 19:20   ` Alexei Starovoitov
2023-02-23 14:15     ` Yafang Shao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230222014553.47744-6-laoar.shao@gmail.com \
    --to=laoar.shao@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=haoluo@google.com \
    --cc=horenc@vt.edu \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=kafai@fb.com \
    --cc=kpsingh@kernel.org \
    --cc=sdf@google.com \
    --cc=songliubraving@fb.com \
    --cc=xiyou.wangcong@gmail.com \
    --cc=yhs@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox