From: Yonghong Song <yonghong.song@linux.dev>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
kernel-team@fb.com, Martin KaFai Lau <martin.lau@kernel.org>
Subject: Re: [PATCH bpf-next v4 3/7] bpf: Allow per unit prefill for non-fix-size percpu memory allocator
Date: Wed, 20 Dec 2023 09:57:16 -0800 [thread overview]
Message-ID: <28866cd7-8042-4a76-ac8d-698230eff08d@linux.dev> (raw)
In-Reply-To: <vwypdrjhtrvqcgocemp5ptkqqbbmtrw5q4mlkc5i2k7ipbhvm5@bixqyhggoihm>
On 12/19/23 8:37 PM, Alexei Starovoitov wrote:
> On Sun, Dec 17, 2023 at 10:30:47PM -0800, Yonghong Song wrote:
>> @@ -2963,7 +2963,9 @@ static int __init bpf_global_ma_init(void)
>>
>> ret = bpf_mem_alloc_init(&bpf_global_ma, 0, false);
>> bpf_global_ma_set = !ret;
>> - return ret;
>> + ret = bpf_mem_alloc_percpu_init(&bpf_global_percpu_ma);
>> + bpf_global_percpu_ma_set = !ret;
>> + return !bpf_global_ma_set || !bpf_global_percpu_ma_set;
> ...
>> - if (meta.func_id == special_kfunc_list[KF_bpf_percpu_obj_new_impl]) {
>> - if (!bpf_global_percpu_ma_set) {
>> - mutex_lock(&bpf_percpu_ma_lock);
>> - if (!bpf_global_percpu_ma_set) {
>> - err = bpf_mem_alloc_init(&bpf_global_percpu_ma, 0, true);
>> - if (!err)
>> - bpf_global_percpu_ma_set = true;
>> - }
>> - mutex_unlock(&bpf_percpu_ma_lock);
>> - if (err)
>> - return err;
>> - }
>> - }
>> -
>> if (((u64)(u32)meta.arg_constant.value) != meta.arg_constant.value) {
>> verbose(env, "local type ID argument must be in range [0, U32_MAX]\n");
>> return -EINVAL;
>> @@ -12096,6 +12079,17 @@ static int check_kfunc_call(struct bpf_verifier_env *env, struct bpf_insn *insn,
>> return -EINVAL;
>> }
>>
>> + if (meta.func_id == special_kfunc_list[KF_bpf_percpu_obj_new_impl]) {
>> + if (!bpf_global_percpu_ma_set)
>> + return -ENOMEM;
> The patch set looks great except I don't understand this part of the patch
> that goes back to allocating bpf_global_percpu_ma by default.
> Why allocate even small amount if no bpf prog will use it?
> It seems delaying allocation until the verifier sees the need is better.
> The rest of the series makes sense.
Thanks for suggestion. Will move early bpf_global_percpu_ma initialization
from __init stage to verifier then. This way, we have zero memory consumption
if bpf_global_percpu_ma is not used.
next prev parent reply other threads:[~2023-12-20 17:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-18 6:30 [PATCH bpf-next v4 0/7] bpf: Reduce memory usage for bpf_global_percpu_ma Yonghong Song
2023-12-18 6:30 ` [PATCH bpf-next v4 1/7] bpf: Avoid unnecessary extra percpu memory allocation Yonghong Song
2023-12-18 6:30 ` [PATCH bpf-next v4 2/7] bpf: Add objcg to bpf_mem_alloc Yonghong Song
2023-12-19 3:03 ` Hou Tao
2023-12-18 6:30 ` [PATCH bpf-next v4 3/7] bpf: Allow per unit prefill for non-fix-size percpu memory allocator Yonghong Song
2023-12-19 3:04 ` Hou Tao
2023-12-20 4:37 ` Alexei Starovoitov
2023-12-20 17:57 ` Yonghong Song [this message]
2023-12-18 6:30 ` [PATCH bpf-next v4 4/7] bpf: Refill only one percpu element in memalloc Yonghong Song
2023-12-19 11:31 ` Hou Tao
2023-12-20 19:55 ` Yonghong Song
2023-12-18 6:30 ` [PATCH bpf-next v4 5/7] bpf: Limit up to 512 bytes for bpf_global_percpu_ma allocation Yonghong Song
2023-12-18 6:31 ` [PATCH bpf-next v4 6/7] selftests/bpf: Cope with 512 bytes limit with bpf_global_percpu_ma Yonghong Song
2023-12-18 6:31 ` [PATCH bpf-next v4 7/7] selftests/bpf: Add a selftest with > 512-byte percpu allocation size Yonghong Song
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=28866cd7-8042-4a76-ac8d-698230eff08d@linux.dev \
--to=yonghong.song@linux.dev \
--cc=alexei.starovoitov@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=martin.lau@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.