Re: [MAYBE REGRESSION] kbuild time of kernel compiling

From: Masahiro Yamada
Date: Mon Jan 22 2024 - 07:24:56 EST


On Mon, Jan 22, 2024 at 5:32 PM Jingbo Xu <jefflexu@xxxxxxxxxxxxxxxxx> wrote:
>
> Hi,
>
> I noticed a regression of kbuild time in v6.7, especially when running
> `make` command when all images have already been compiled. In v6.6 it
> takes ~3s, while in v6.7 it takes ~18s.
>
> I'm not sure if it's a known issue, or an extra action configurable with
> a "CONFIG_XX" option.
>
>
> Following is the kbuild time in v6.6 versus v7.7, with
> arch/x86/configs/x86_64_defconfig used here:
>
>
> v6.6
> ```
> make clean
> make olddefconfig
>
> # first full compiling
> $time make bzImage -j128 -s
>
> real 1m9.896s
> user 36m56.153s
> sys 4m21.748s
>
> # second time with image already compiled
> $time make bzImage -j128 -s
>
> real 0m2.776s
> user 0m13.823s
> sys 0m3.936s
> ```
>
>
> v6.7
> ```
> make clean
> make olddefconfig
>
> # first full compiling
> $time make bzImage -j128 -s
>
> real 1m22.865s
> user 37m25.977s
> sys 4m22.094s
>
> # second time with image already compiled
> $time make bzImage -j128 -s
>
> real 0m18.209s
> user 0m29.243s
> sys 0m4.330s
> ```
>
>
> I tried to bisect, while commit d4e175f2c460 ("Merge tag 'vfs-6.7.super'
> of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs") is identified
> as the first bad commit, which is obviously wrong. As I'm not familiar
> with the structure of the merge commit, the further investigation has
> not been made yet.




If you use olddefconfig, git-bisect will not produce the correct result.

'make olddefconfig' updates the existing .config.
The resulting .config depends on what you had
before running 'make olddefconfig'.

You need to use a deterministic target (e.g. defconfig)
during the git-bisect.





>
>
> Besides, it seems that it will take most of the time before "CALL
> scripts/checksyscalls.sh" is printed (with "INSTALL libsubcmd_headers"
> has already printed).
>
> $time make bzImage -j128
> DESCEND objtool
> INSTALL libsubcmd_headers
>
> CALL scripts/checksyscalls.sh
> BUILD arch/x86/boot/bzImage
> Kernel: arch/x86/boot/bzImage is ready (#437)
>
> --
> Thanks,
> Jingbo
>


--
Best Regards
Masahiro Yamada