From: Yafang Shao <laoar.shao@gmail.com>
To: Cong Wang <xiyou.wangcong@gmail.com>
Cc: 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, tj@kernel.org,
dennis@kernel.org, cl@linux.com, akpm@linux-foundation.org,
penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com,
roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, vbabka@suse.cz,
urezki@gmail.com, linux-mm@kvack.org, bpf@vger.kernel.org
Subject: Re: [PATCH bpf-next 7/7] bpf: hashtab memory usage
Date: Mon, 6 Feb 2023 19:52:45 +0800 [thread overview]
Message-ID: <CALOAHbAT46+joi2Px2c9ACmtkZ6OPjf64uBpCB9ABF7CPzW19g@mail.gmail.com> (raw)
In-Reply-To: <Y+AqPJSBnAN830p3@pop-os.localdomain>
On Mon, Feb 6, 2023 at 6:14 AM Cong Wang <xiyou.wangcong@gmail.com> wrote:
>
> On Thu, Feb 02, 2023 at 01:41:58AM +0000, Yafang Shao wrote:
> > Get htab memory usage from the htab pointers we have allocated. Some
> > small pointers are ignored as their size are quite small compared with
> > the total size.
> >
> > The result as follows,
> > - before this change
> > 1: hash name count_map flags 0x0 <<<< prealloc
> > key 16B value 24B max_entries 1048576 memlock 41943040B
> > 2: hash name count_map flags 0x1 <<<< non prealloc, fully set
> > key 16B value 24B max_entries 1048576 memlock 41943040B
> > 3: hash name count_map flags 0x1 <<<< non prealloc, non set
> > key 16B value 24B max_entries 1048576 memlock 41943040B
> >
> > The memlock is always a fixed number whatever it is preallocated or
> > not, and whatever the allocated elements number is.
> >
> > - after this change
> > 1: hash name count_map flags 0x0 <<<< prealloc
> > key 16B value 24B max_entries 1048576 memlock 109064464B
> > 2: hash name count_map flags 0x1 <<<< non prealloc, fully set
> > key 16B value 24B max_entries 1048576 memlock 117464320B
> > 3: hash name count_map flags 0x1 <<<< non prealloc, non set
> > key 16B value 24B max_entries 1048576 memlock 16797952B
> >
> > The memlock now is hashtab actually allocated.
> >
> > At worst, the difference can be 10x, for example,
> > - before this change
> > 4: hash name count_map flags 0x0
> > key 4B value 4B max_entries 1048576 memlock 8388608B
> >
> > - after this change
> > 4: hash name count_map flags 0x0
> > key 4B value 4B max_entries 1048576 memlock 83898640B
> >
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > ---
> > kernel/bpf/hashtab.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>
> What about other maps like regular array map?
>
I haven't finished the work to support all bpf maps.
Most of the maps have fixed entries, so we can get the usage directly
from an map pointer or get the element size and then calculate it, for
example,
- arraymap usage
size = kvsize(array);
- percpu arraymap usage
size = kvsize(array);
size += percpu_size(array->pptrs[0]) * array->map.max_entries;
But there's special case like cgroup_storage, the max_entries of which
is 0, for example,
122: cgroup_storage flags 0x0
key 16B value 8B max_entries 0 memlock 0B
For this case, we should calculate the count of entries first.
--
Regards
Yafang
next prev parent reply other threads:[~2023-02-06 11:53 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-02 1:41 [PATCH bpf-next 0/7] bpf, mm: bpf memory usage Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 1/7] mm: percpu: fix incorrect size in pcpu_obj_full_size() Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 2/7] mm: percpu: introduce percpu_size() Yafang Shao
2023-02-02 14:32 ` Christoph Lameter
2023-02-02 15:01 ` Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 3/7] mm: vmalloc: introduce vsize() Yafang Shao
2023-02-02 10:23 ` Christoph Hellwig
2023-02-02 14:10 ` Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 4/7] mm: util: introduce kvsize() Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 5/7] bpf: add new map ops ->map_mem_usage Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 6/7] bpf: introduce bpf_mem_alloc_size() Yafang Shao
2023-02-02 4:53 ` kernel test robot
2023-02-02 14:11 ` Yafang Shao
2023-02-02 1:41 ` [PATCH bpf-next 7/7] bpf: hashtab memory usage Yafang Shao
2023-02-04 2:01 ` John Fastabend
2023-02-05 3:55 ` Yafang Shao
2023-02-08 1:56 ` Alexei Starovoitov
2023-02-08 3:33 ` Yafang Shao
2023-02-08 4:29 ` Alexei Starovoitov
2023-02-08 14:22 ` Yafang Shao
2023-02-05 22:14 ` Cong Wang
2023-02-06 11:52 ` Yafang Shao [this message]
2023-02-04 2:15 ` [PATCH bpf-next 0/7] bpf, mm: bpf " John Fastabend
2023-02-05 4:03 ` Yafang Shao
2023-02-07 0:53 ` Ho-Ren Chuang
[not found] ` <CAOfppAUgB1qtFQfSb7WnGTJ+0fP2NL_T9EJYHgwQyW0mx4vnXA@mail.gmail.com>
2023-02-07 7:02 ` 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=CALOAHbAT46+joi2Px2c9ACmtkZ6OPjf64uBpCB9ABF7CPzW19g@mail.gmail.com \
--to=laoar.shao@gmail.com \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=cl@linux.com \
--cc=daniel@iogearbox.net \
--cc=dennis@kernel.org \
--cc=haoluo@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=sdf@google.com \
--cc=songliubraving@fb.com \
--cc=tj@kernel.org \
--cc=urezki@gmail.com \
--cc=vbabka@suse.cz \
--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;
as well as URLs for NNTP newsgroup(s).