[uClinux-dev] parallel compiles

David McCullough David_Mccullough at securecomputing.com
Thu Feb 7 06:45:56 EST 2008


Jivin Mike Frysinger lays it down ...
> On Wednesday 06 February 2008, David McCullough wrote:
> > > is there a reason for forcing -j1 in sub-packages ?  we've dropped the
> > > -j1 in {lib,user}/Makefile for the DIRS target and generally had great
> > > success.  you can really feel the difference on an 8 or 16 proc system. 
> > > i also replaced the -j1 for the _only targets with -j$(HOST_NCPU).
> >
> > Interesting result,  do you have an measured build times with and
> > without the change ?  It would be nice to know,  and if the gains
> > justify the fixing of any potentially broken sub dirs :-)
> 
> just doing a simple `time make AnalogDevices/BF537-STAMP_default` here ...
>  - with NON_SMP_BUILD set: ~8min
>  - without NON_SMP_BUILD set (and the -j1 pieces removed): ~1.5min
> pretty consistent here ... +/-10seconds

I was hoping for the "with -j1" and "without -j1" numbers,
comparing against NON_SMP_BUILD=1 is not really fair ;-)

> > If you have a patch,  send it in and I'll try it here and see how bad it
> > is for our builds,  if it's relatively isolated I am happy to fix up
> > some bits and include it,  anything that speeds builds is good,
> 
> i'm pushing this for our next-next release (so current development tree).  
> only noticed net-tools failing so far (but i posted a patch for that)

Patch is small enough,  I try it if you don't get time to compare the
before an after.

Cheers,
Davidm

> ---
> Do not force -j1 in subdirs and use -j$(HOST_NCPU) for _only targets.
> 
> Signed-off-by: Mike Frysinger <vapier at gentoo.org>
> ---
> diff --git a/lib/Makefile b/lib/Makefile
> index 0de9193..e9e9372 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -136,16 +136,16 @@ all:
>  # the actual dir target
>  .PHONY: $(DIRS_y)
>  $(DIRS_y):
> -	[ ! -d "$@" ] || ( touch $@/.sgbuilt_lib && $(MAKE) -j1 -C $@ ) || exit $$?
> +	[ ! -d "$@" ] || ( touch $@/.sgbuilt_lib && $(MAKE) -C $@ ) || exit $$?
>  
>  %_only:
> -	touch $(@:_only=)/.sgbuilt_lib && $(MAKE) -j1 -C $(@:_only=)
> +	touch $(@:_only=)/.sgbuilt_lib && $(MAKE) -j$(HOST_NCPU) -C $(@:_only=)
>  
>  %_clean:
>  	$(MAKE) -j1 -C $(@:_clean=) clean; rm -f $(@:_clean=)/.sgbuilt_lib; true
>  
>  %_romfs:
> -	$(MAKE) -j1 -C $(@:_romfs=) romfs
> +	$(MAKE) -C $(@:_romfs=) romfs
>  
>  
> ##############################################################################
>  
> diff --git a/user/Makefile b/user/Makefile
> index d452260..18b8f00 100644
> --- a/user/Makefile
> +++ b/user/Makefile
> @@ -440,16 +440,16 @@ asterisk-addons: mysql asterisk
>  miniupnpd : iptables
>  
>  $(sort $(dir_y) $(dir_p)):  config
> -	[ ! -d "$@" ] || ( touch $@/.sgbuilt_user && $(MAKE) -j1 -C $@ ) || exit $$?
> +	[ ! -d "$@" ] || ( touch $@/.sgbuilt_user && $(MAKE) -C $@ ) || exit $$?
>  
>  %_only:
> -	touch $(@:_only=)/.sgbuilt_user && $(MAKE) -j1 -C $(@:_only=)
> +	touch $(@:_only=)/.sgbuilt_user && $(MAKE) -j$(HOST_NCPU) -C $(@:_only=)
>  
>  %_clean:
>  	$(MAKE) -j1 -C $(@:_clean=) clean; rm -f $(@:_clean=)/.sgbuilt_user; true
>  
>  %_romfs:
> -	$(MAKE) -j1 -C $(@:_romfs=) romfs
> +	$(MAKE) -C $(@:_romfs=) romfs
>  
>  romfs:
>  	for i in $(sort $(dir_y)) $(dir_p) ; do \
> 

-- 
David McCullough,  david_mccullough at securecomputing.com,   Ph:+61 734352815
Secure Computing - SnapGear  http://www.uCdot.org http://www.cyberguard.com


More information about the uClinux-dev mailing list