From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: dwarves@vger.kernel.org
Cc: "Jiri Olsa" <jolsa@kernel.org>,
"Clark Williams" <williams@redhat.com>,
"Kate Carcia" <kcarcia@redhat.com>,
bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" <acme@kernel.org>,
"Alan Maguire" <alan.maguire@oracle.com>,
"Kui-Feng Lee" <kuifeng@fb.com>,
"Thomas Weißschuh" <linux@weissschuh.net>
Subject: [RFC/PATCHES 00/12] pahole: Reproducible parallel DWARF loading/serial BTF encoding
Date: Tue, 2 Apr 2024 16:39:33 -0300 [thread overview]
Message-ID: <20240402193945.17327-1-acme@kernel.org> (raw)
Hi,
This allows us to have reproducible builds while keeping the
DWARF loading phase in parallel, achieving a noticeable speedup as
showed in the commit log messages:
On a:
model name : Intel(R) Core(TM) i7-14700K
8 performance cores (16 threads), 12 efficiency cores.
Serial encoding:
$ perf stat -e cycles -r5 pahole --btf_encode_detached=vmlinux.btf.serial vmlinux
5.18276 +- 0.00952 seconds time elapsed ( +- 0.18% )
Parallel, but non-reproducible:
$ perf stat -e cycles -r5 pahole -j --btf_encode_detached=vmlinux.btf.parallel vmlinux
1.8529 +- 0.0159 seconds time elapsed ( +- 0.86% )
reproducible build done using parallel DWARF loading + CUs-ordered-as-in-vmlinux serial BTF encoding:
$ perf stat -e cycles -r5 pahole -j --reproducible_build --btf_encode_detached=vmlinux.btf.parallel.reproducible_build vmlinux
2.3632 +- 0.0164 seconds time elapsed ( +- 0.69% )
Please take a look, its in the 'next' branch at:
https://git.kernel.org/pub/scm/devel/pahole/pahole.git
https://git.kernel.org/pub/scm/devel/pahole/pahole.git/log/?h=next
There is a new tool to do regression testing on this feature:
https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?h=next&id=c751214c19bf8591bf8e4abdc677cbadee08f630
And here a more detailed set of tests using it:
https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?h=next&id=4451467ca16a6e31834f6f98661c63587ce556f7
Working on libbpf to allow for parallel reproducible BTF encoding is the
next step.
Thanks a lot,
- Arnaldo
Arnaldo Carvalho de Melo (12):
core: Allow asking for a reproducible build
pahole: Disable BTF multithreaded encoded when doing reproducible builds
dwarf_loader: Separate creating the cu/dcu pair from processing it
dwarf_loader: Introduce dwarf_cus__process_cu()
dwarf_loader: Create the cu/dcu pair in dwarf_cus__nextcu()
dwarf_loader: Remove unused 'thr_data' arg from dwarf_cus__create_and_process_cu()
core: Add unlocked cus__add() variant
core: Add cus__remove(), counterpart of cus__add()
dwarf_loader: Add the cu to the cus list early, remove on LSK_DELETE
core/dwarf_loader: Add functions to set state of CU processing
pahole: Encode BTF serially in a reproducible build
tests: Add a BTF reproducible generation test
dwarf_loader.c | 73 +++++++++++++++++++++++---------
dwarves.c | 58 ++++++++++++++++++++++++-
dwarves.h | 17 ++++++++
pahole.c | 84 +++++++++++++++++++++++++++++++++++--
tests/reproducible_build.sh | 56 +++++++++++++++++++++++++
5 files changed, 264 insertions(+), 24 deletions(-)
create mode 100755 tests/reproducible_build.sh
--
2.44.0
next reply other threads:[~2024-04-02 19:39 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-02 19:39 Arnaldo Carvalho de Melo [this message]
2024-04-02 19:39 ` [PATCH 01/12] core: Allow asking for a reproducible build Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 02/12] pahole: Disable BTF multithreaded encoded when doing reproducible builds Arnaldo Carvalho de Melo
2024-04-03 18:19 ` Andrii Nakryiko
2024-04-03 21:38 ` Arnaldo Carvalho de Melo
2024-04-03 21:43 ` Andrii Nakryiko
2024-04-04 9:42 ` Jiri Olsa
2024-04-02 19:39 ` [PATCH 03/12] dwarf_loader: Separate creating the cu/dcu pair from processing it Arnaldo Carvalho de Melo
2024-04-04 9:42 ` Jiri Olsa
2024-04-02 19:39 ` [PATCH 04/12] dwarf_loader: Introduce dwarf_cus__process_cu() Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 05/12] dwarf_loader: Create the cu/dcu pair in dwarf_cus__nextcu() Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 06/12] dwarf_loader: Remove unused 'thr_data' arg from dwarf_cus__create_and_process_cu() Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 07/12] core: Add unlocked cus__add() variant Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 08/12] core: Add cus__remove(), counterpart of cus__add() Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 09/12] dwarf_loader: Add the cu to the cus list early, remove on LSK_DELETE Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 10/12] core/dwarf_loader: Add functions to set state of CU processing Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 11/12] pahole: Encode BTF serially in a reproducible build Arnaldo Carvalho de Melo
2024-04-02 19:39 ` [PATCH 12/12] tests: Add a BTF reproducible generation test Arnaldo Carvalho de Melo
2024-04-04 0:08 ` [RFC/PATCHES 00/12] pahole: Reproducible parallel DWARF loading/serial BTF encoding Eduard Zingerman
2024-04-04 8:05 ` Alan Maguire
2024-04-09 14:34 ` Eduard Zingerman
2024-04-09 14:56 ` Alexei Starovoitov
2024-04-09 15:01 ` Eduard Zingerman
2024-04-09 18:45 ` Arnaldo Carvalho de Melo
2024-04-09 19:29 ` Eduard Zingerman
2024-04-09 19:34 ` Alexei Starovoitov
2024-04-09 19:57 ` Arnaldo Carvalho de Melo
2024-04-12 20:37 ` Arnaldo Carvalho de Melo
2024-04-12 20:40 ` Eduard Zingerman
2024-04-12 21:09 ` Arnaldo Carvalho de Melo
2024-04-12 21:10 ` Eduard Zingerman
2024-04-04 8:58 ` Alan Maguire
2024-04-08 12:00 ` Alan Maguire
2024-04-08 14:39 ` Arnaldo Carvalho de Melo
2024-04-12 20:36 ` Arnaldo Carvalho de Melo
2024-04-04 9:42 ` Jiri Olsa
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=20240402193945.17327-1-acme@kernel.org \
--to=acme@kernel.org \
--cc=alan.maguire@oracle.com \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=jolsa@kernel.org \
--cc=kcarcia@redhat.com \
--cc=kuifeng@fb.com \
--cc=linux@weissschuh.net \
--cc=williams@redhat.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 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.