* [PATCH] kbuild,bpf: pass make jobs' value to pahole
@ 2024-11-02 10:04 Florian Schmaus
2024-11-03 12:04 ` Holger Hoffstätte
2024-11-12 4:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 6+ messages in thread
From: Florian Schmaus @ 2024-11-02 10:04 UTC (permalink / raw)
To: Masahiro Yamada, Nathan Chancellor, Nicolas Schier,
Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa
Cc: Florian Schmaus, bpf, linux-kbuild, linux-kernel
Pass the value of make's -j/--jobs argument to pahole, to avoid out of
memory errors and make pahole respect the "jobs" value of make.
On systems with little memory but many cores, invoking pahole using -j
without argument potentially creates too many pahole instances,
causing an out-of-memory situation. Instead, we should pass make's
"jobs" value as an argument to pahole's -j, which is likely configured
to be (much) lower than the actual core count on such systems.
If make was invoked without -j, either via cmdline or MAKEFLAGS, then
JOBS will be simply empty, resulting in the existing behavior, as
expected.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
scripts/Makefile.btf | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf
index b75f09f3f424..c3cbeb13de50 100644
--- a/scripts/Makefile.btf
+++ b/scripts/Makefile.btf
@@ -3,6 +3,8 @@
pahole-ver := $(CONFIG_PAHOLE_VERSION)
pahole-flags-y :=
+JOBS := $(patsubst -j%,%,$(filter -j%,$(MAKEFLAGS)))
+
ifeq ($(call test-le, $(pahole-ver), 125),y)
# pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars
@@ -12,14 +14,14 @@ endif
pahole-flags-$(call test-ge, $(pahole-ver), 121) += --btf_gen_floats
-pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j
+pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j$(JOBS)
pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsistent_proto --btf_gen_optimized
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$(JOBS) --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func,decl_tag_kfuncs
ifneq ($(KBUILD_EXTMOD),)
module-pahole-flags-$(call test-ge, $(pahole-ver), 126) += --btf_features=distilled_base
--
2.45.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] kbuild,bpf: pass make jobs' value to pahole
2024-11-02 10:04 [PATCH] kbuild,bpf: pass make jobs' value to pahole Florian Schmaus
@ 2024-11-03 12:04 ` Holger Hoffstätte
2024-11-03 13:22 ` Masahiro Yamada
2024-11-12 4:10 ` patchwork-bot+netdevbpf
1 sibling, 1 reply; 6+ messages in thread
From: Holger Hoffstätte @ 2024-11-03 12:04 UTC (permalink / raw)
To: Florian Schmaus, Masahiro Yamada, Nathan Chancellor,
Nicolas Schier, Alexei Starovoitov, Daniel Borkmann,
Andrii Nakryiko, Martin KaFai Lau, Eduard Zingerman, Song Liu,
Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
Hao Luo, Jiri Olsa
Cc: bpf, linux-kbuild, linux-kernel
On 2024-11-02 11:04, Florian Schmaus wrote:
> Pass the value of make's -j/--jobs argument to pahole, to avoid out of
> memory errors and make pahole respect the "jobs" value of make.
>
> On systems with little memory but many cores, invoking pahole using -j
> without argument potentially creates too many pahole instances,
> causing an out-of-memory situation. Instead, we should pass make's
> "jobs" value as an argument to pahole's -j, which is likely configured
> to be (much) lower than the actual core count on such systems.
>
> If make was invoked without -j, either via cmdline or MAKEFLAGS, then
> JOBS will be simply empty, resulting in the existing behavior, as
> expected.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
As discussed on IRC:
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Thanks!
Holger
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] kbuild,bpf: pass make jobs' value to pahole
2024-11-03 12:04 ` Holger Hoffstätte
@ 2024-11-03 13:22 ` Masahiro Yamada
2024-11-04 12:52 ` Florian Schmaus
0 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2024-11-03 13:22 UTC (permalink / raw)
To: Holger Hoffstätte
Cc: Florian Schmaus, Nathan Chancellor, Nicolas Schier,
Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
bpf, linux-kbuild, linux-kernel
On Sun, Nov 3, 2024 at 9:04 PM Holger Hoffstätte
<holger@applied-asynchrony.com> wrote:
>
> On 2024-11-02 11:04, Florian Schmaus wrote:
> > Pass the value of make's -j/--jobs argument to pahole, to avoid out of
> > memory errors and make pahole respect the "jobs" value of make.
> >
> > On systems with little memory but many cores, invoking pahole using -j
> > without argument potentially creates too many pahole instances,
> > causing an out-of-memory situation. Instead, we should pass make's
> > "jobs" value as an argument to pahole's -j, which is likely configured
> > to be (much) lower than the actual core count on such systems.
> >
> > If make was invoked without -j, either via cmdline or MAKEFLAGS, then
> > JOBS will be simply empty, resulting in the existing behavior, as
> > expected.
> >
> > Signed-off-by: Florian Schmaus <flo@geekplace.eu>
>
> As discussed on IRC:
Do not do this. Others do not see what was discussed.
I guess the right thing to do is to join the jobserver.
https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] kbuild,bpf: pass make jobs' value to pahole
2024-11-03 13:22 ` Masahiro Yamada
@ 2024-11-04 12:52 ` Florian Schmaus
2024-11-05 23:07 ` Alan Maguire
0 siblings, 1 reply; 6+ messages in thread
From: Florian Schmaus @ 2024-11-04 12:52 UTC (permalink / raw)
To: Masahiro Yamada, Holger Hoffstätte
Cc: Nathan Chancellor, Nicolas Schier, Alexei Starovoitov,
Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau,
Eduard Zingerman, Song Liu, Yonghong Song, John Fastabend,
KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa, bpf,
linux-kbuild, linux-kernel
On 03/11/2024 14.22, Masahiro Yamada wrote:
> On Sun, Nov 3, 2024 at 9:04 PM Holger Hoffstätte
> <holger@applied-asynchrony.com> wrote:
>>
>> On 2024-11-02 11:04, Florian Schmaus wrote:
>>> Pass the value of make's -j/--jobs argument to pahole, to avoid out of
>>> memory errors and make pahole respect the "jobs" value of make.
>>>
>>> On systems with little memory but many cores, invoking pahole using -j
>>> without argument potentially creates too many pahole instances,
>>> causing an out-of-memory situation. Instead, we should pass make's
>>> "jobs" value as an argument to pahole's -j, which is likely configured
>>> to be (much) lower than the actual core count on such systems.
>>>
>>> If make was invoked without -j, either via cmdline or MAKEFLAGS, then
>>> JOBS will be simply empty, resulting in the existing behavior, as
>>> expected.
>>>
>>> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
>>
>> As discussed on IRC:
>
> Do not do this. Others do not see what was discussed.
Sorry, you are right. However, not much was discussed. Holger just
pointed out that the memory usage of pahole was already reported as
problematic in
https://lore.kernel.org/lkml/20240820085950.200358-1-jirislaby@kernel.org/
My patch would potentially help there as well, as it allows the user to
limit the number of threads used by pahole.
> I guess the right thing to do is to join the jobserver.
>
> https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html
Yes, this would be the ideal solution. Until it is implemented, the
proposed patch is probably the next best thing.
- Florian
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] kbuild,bpf: pass make jobs' value to pahole
2024-11-04 12:52 ` Florian Schmaus
@ 2024-11-05 23:07 ` Alan Maguire
0 siblings, 0 replies; 6+ messages in thread
From: Alan Maguire @ 2024-11-05 23:07 UTC (permalink / raw)
To: Florian Schmaus, Masahiro Yamada, Holger Hoffstätte
Cc: Nathan Chancellor, Nicolas Schier, Alexei Starovoitov,
Daniel Borkmann, Andrii Nakryiko, Martin KaFai Lau,
Eduard Zingerman, Song Liu, Yonghong Song, John Fastabend,
KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa, bpf,
linux-kbuild, linux-kernel, Arnaldo Carvalho de Melo
On 04/11/2024 12:52, Florian Schmaus wrote:
> On 03/11/2024 14.22, Masahiro Yamada wrote:
>> On Sun, Nov 3, 2024 at 9:04 PM Holger Hoffstätte
>> <holger@applied-asynchrony.com> wrote:
>>>
>>> On 2024-11-02 11:04, Florian Schmaus wrote:
>>>> Pass the value of make's -j/--jobs argument to pahole, to avoid out of
>>>> memory errors and make pahole respect the "jobs" value of make.
>>>>
>>>> On systems with little memory but many cores, invoking pahole using -j
>>>> without argument potentially creates too many pahole instances,
>>>> causing an out-of-memory situation. Instead, we should pass make's
>>>> "jobs" value as an argument to pahole's -j, which is likely configured
>>>> to be (much) lower than the actual core count on such systems.
>>>>
>>>> If make was invoked without -j, either via cmdline or MAKEFLAGS, then
>>>> JOBS will be simply empty, resulting in the existing behavior, as
>>>> expected.
>>>>
>>>> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
>>>
>>> As discussed on IRC:
>>
>> Do not do this. Others do not see what was discussed.
>
> Sorry, you are right. However, not much was discussed. Holger just
> pointed out that the memory usage of pahole was already reported as
> problematic in
>
> https://lore.kernel.org/lkml/20240820085950.200358-1-jirislaby@kernel.org/
>
> My patch would potentially help there as well, as it allows the user to
> limit the number of threads used by pahole.
>
>
>> I guess the right thing to do is to join the jobserver.
>>
>> https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html
>
> Yes, this would be the ideal solution. Until it is implemented, the
> proposed patch is probably the next best thing.
>
> - Florian
>
If you haven't already, I'd suggest testing the latest pahole (building
from master branch). Significant improvements in memory utilization have
been made and more are planned post the 1.28 release.
In terms of the patch itself, respecting the "make -j" value seems right
to me. Thanks!
Alan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] kbuild,bpf: pass make jobs' value to pahole
2024-11-02 10:04 [PATCH] kbuild,bpf: pass make jobs' value to pahole Florian Schmaus
2024-11-03 12:04 ` Holger Hoffstätte
@ 2024-11-12 4:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-11-12 4:10 UTC (permalink / raw)
To: Florian Schmaus
Cc: masahiroy, nathan, nicolas, ast, daniel, andrii, martin.lau,
eddyz87, song, yonghong.song, john.fastabend, kpsingh, sdf,
haoluo, jolsa, bpf, linux-kbuild, linux-kernel
Hello:
This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:
On Sat, 2 Nov 2024 11:04:51 +0100 you wrote:
> Pass the value of make's -j/--jobs argument to pahole, to avoid out of
> memory errors and make pahole respect the "jobs" value of make.
>
> On systems with little memory but many cores, invoking pahole using -j
> without argument potentially creates too many pahole instances,
> causing an out-of-memory situation. Instead, we should pass make's
> "jobs" value as an argument to pahole's -j, which is likely configured
> to be (much) lower than the actual core count on such systems.
>
> [...]
Here is the summary with links:
- kbuild,bpf: pass make jobs' value to pahole
https://git.kernel.org/bpf/bpf-next/c/09048d22b782
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-11-12 4:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-02 10:04 [PATCH] kbuild,bpf: pass make jobs' value to pahole Florian Schmaus
2024-11-03 12:04 ` Holger Hoffstätte
2024-11-03 13:22 ` Masahiro Yamada
2024-11-04 12:52 ` Florian Schmaus
2024-11-05 23:07 ` Alan Maguire
2024-11-12 4:10 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox