From: Eduard Zingerman <eddyz87@gmail.com>
To: Ihor Solodrai <ihor.solodrai@pm.me>,
bpf@vger.kernel.org, andrii@kernel.org
Cc: ast@kernel.org, daniel@iogearbox.net, mykolal@fb.com
Subject: Re: [PATCH bpf-next 2/2] selftests/bpf: do not update vmlinux.h unnecessarily
Date: Wed, 28 Aug 2024 15:02:11 -0700 [thread overview]
Message-ID: <b48f348c76dd5b724384aef7c7c067877b28ee5b.camel@gmail.com> (raw)
In-Reply-To: <20240828174608.377204-2-ihor.solodrai@pm.me>
On Wed, 2024-08-28 at 17:46 +0000, Ihor Solodrai wrote:
> %.bpf.o objects depend on vmlinux.h, which makes them transitively
> dependent on unnecessary libbpf headers. However vmlinux.h doesn't
> actually change as often.
>
> When generating vmlinux.h, compare it to a previous version and update
> it only if there are changes.
>
> Example of build time improvement (after first clean build):
> $ touch ../../../lib/bpf/bpf.h
> $ time make -j8
> Before: real 1m37.592s
> After: real 0m27.310s
>
> Notice that %.bpf.o gen step is skipped if vmlinux.h hasn't changed.
>
> Link: https://lore.kernel.org/bpf/CAEf4BzY1z5cC7BKye8=A8aTVxpsCzD=p1jdTfKC7i0XVuYoHUQ@mail.gmail.com
>
> Signed-off-by: Ihor Solodrai <ihor.solodrai@pm.me>
> ---
Unfortunately, I think that this is a half-measure.
E.g. the following command forces tests rebuild for me:
touch ../../../../kernel/bpf/verifier.c; \
make -j22 -C ../../../../; \
time make test_progs
To workaround this we need to enable reproducible_build option:
diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf
index b75f09f3f424..8cd648f3e32b 100644
--- a/scripts/Makefile.btf
+++ b/scripts/Makefile.btf
@@ -19,7 +19,7 @@ pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsis
else
# Switch to using --btf_features for v1.26 and later.
-pahole-flags-$(call test-ge, $(pahole-ver), 126) = -j --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func,decl_tag_kfuncs
+pahole-flags-$(call test-ge, $(pahole-ver), 126) = -j --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func,decl_tag_kfuncs,reproducible_build
ifneq ($(KBUILD_EXTMOD),)
module-pahole-flags-$(call test-ge, $(pahole-ver), 126) += --btf_features=distilled_base
Question to the mailing list: do we want this?
[...]
next prev parent reply other threads:[~2024-08-28 22:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-28 17:46 [PATCH bpf-next 1/2] selftests/bpf: specify libbpf headers required for %.bpf.o progs Ihor Solodrai
2024-08-28 17:46 ` [PATCH bpf-next 2/2] selftests/bpf: do not update vmlinux.h unnecessarily Ihor Solodrai
2024-08-28 22:02 ` Eduard Zingerman [this message]
2024-08-28 23:25 ` Alexei Starovoitov
2024-08-30 20:34 ` Andrii Nakryiko
2024-08-30 21:03 ` Alan Maguire
2024-08-30 23:42 ` Arnaldo Carvalho de Melo
2024-08-30 21:23 ` Mykyta Yatsenko
2024-08-30 22:18 ` Andrii Nakryiko
2024-08-31 18:18 ` Ihor Solodrai
2024-09-03 16:58 ` Andrii Nakryiko
2024-08-28 21:20 ` [PATCH bpf-next 1/2] selftests/bpf: specify libbpf headers required for %.bpf.o progs Eduard Zingerman
2024-08-30 20:40 ` patchwork-bot+netdevbpf
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=b48f348c76dd5b724384aef7c7c067877b28ee5b.camel@gmail.com \
--to=eddyz87@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=ihor.solodrai@pm.me \
--cc=mykolal@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