Re: kbuild 2.5 is ready for inclusion in the 2.5 kernel

Urban Widmark
2002-05-05T17:23:33Z

On Thu, 2 May 2002, Keith Owens wrote:

> Linus, kbuild 2.5 is ready for inclusion in the main 2.5 kernel tree.
> It is faster, better documented, easier to write build rules in, has
> better install facilities, allows separate source and object trees, can
> do concurrent builds from the same source tree and is significantly
> more accurate than the existing kernel build system.

Faster ... ?

The time I care about is the module rebuild time. From various posts I had
the impression that it was significantly improved. I don't find that to be
the case unless I'm being "foolhardy" and specify various flags or
otherwise bypass the system.

The time to rebuild everything isn't that interesting to me as it's too
long anyway to sit around and wait for it to complete. Maybe that is where
the improvements are.

Here is how I work. First I configure and build a complete kernel for the
.config I use. Something like:

cp ../.config-2.5 .config
make -f Makefile-2.5 oldconfig
make -f Makefile-2.5 installable

Then I will do a number of rebuild modules & install cycles, where the
environment does not change (.config, tools, etc) except for the module I
am working on. The times I get for various things are:

A - Time to rebuild smbfs.o with proc.c changed:
time make -f Makefile-2.5 fs/smbfs/smbfs.o
51.910u 2.760s 0:54.95 99.4% 0+0k 0+0io 102368pf+0w

B - Same, with NO_MAKEFILE_GEN=1, 1st run:
time make -f Makefile-2.5 NO_MAKEFILE_GEN=1 fs/smbfs/smbfs.o
28.280u 0.600s 0:28.91 99.8% 0+0k 0+0io 27014pf+0w

C - Same, with NO_MAKEFILE_GEN=1, 2nd run:
time make -f Makefile-2.5 NO_MAKEFILE_GEN=1 fs/smbfs/smbfs.o
0.910u 0.420s 0:01.33 100.0% 0+0k 0+0io 21928pf+0w

D - Installing as root:
time make -f Makefile-2.5 install
1.110u 0.960s 0:02.63 78.7% 0+0k 0+0io 34905pf+0w

E - proc.c changed, module rebuild+install with the 2.4 build system
(separate tree from above):
time make modules modules_install
21.160u 2.020s 0:23.12 100.2% 0+0k 0+0io 50927pf+0w

(Built on 2.5.8, 2xPIII 500, 512M, kbuild core-11, 2.5.13 tree)

A + D > 2 * E, and this is the way it's supposed to be used, no?
B + D > E
C + D < E, but C becomes a B after installing as the install wants to be
run with NO_MAKEFILE_GEN not set.

The difference between B and C is that pp_makefile4 is run.

I have seen you claim that it is faster, and others have repeated that. I
just wonder at doing what?

A full build it was slightly faster 12:00.47 vs 12:20.55, but here the
kbuild-2.5 build was run twice since I missed that it otherwise uses kgcc
(which makes it ~3 minutes faster) and the "2.4" build did an install
also. So that's about equal.

make oldconfig is also slower 0:21.06 vs, 0:04.55 since it runs phase1
first, and that was done outside the timed command.

Shadow trees sounds interesting. I'm sure others see great benefit from
being able to build over NFS or having stricter integrity checks. I just
don't get the faster bit, but maybe that's just me.

/Urban