svn commit: r263778 - in head: bin lib lib/clang sbin share/mk usr.bin usr.sbin
Ian Lepore
ian at FreeBSD.org
Thu Mar 27 17:25:02 UTC 2014
It's also a bit odd that the way of opting in makes it appear as if
you're opting out.
-- Ian
On Thu, 2014-03-27 at 11:05 -0600, Warner Losh wrote:
> Why not have this ‘opt out’ rather than ‘opt in’ like it is now? Are there any known bad dependencies this introduces?
>
> Warner
>
> On Mar 26, 2014, at 4:30 PM, Dimitry Andric <dim at freebsd.org> wrote:
>
> > Author: dim
> > Date: Wed Mar 26 22:30:38 2014
> > New Revision: 263778
> > URL: http://svnweb.freebsd.org/changeset/base/263778
> >
> > Log:
> > Add a SUBDIR_PARALLEL option to bsd.subdir.mk, to allow make to process
> > all the SUBDIR entries in parallel, instead of serially. Apply this
> > option to a selected number of Makefiles, which can greatly speed up the
> > build on multi-core machines, when using make -j.
> >
> > This can be extended to more Makefiles later on, whenever they are
> > verified to work correctly with parallel building.
> >
> > I tested this on a 24-core machine, with make -j48 buildworld (N = 6):
> >
> > before stddev after stddev
> > ======= ====== ======= ======
> > real time 1741.1 16.5 959.8 2.7
> > user time 12468.7 16.4 14393.0 16.8
> > sys time 1825.0 54.8 2110.6 22.8
> >
> > (user+sys)/real 8.2 17.1
> >
> > E.g. the build was approximately 45% faster in real time. On machines
> > with less cores, or with lower -j settings, the speedup will not be as
> > impressive. But at least you can now almost max out a machine with
> > buildworld!
> >
> > Submitted by: jilles
> > MFC after: 2 weeks
> >
> > Modified:
> > head/bin/Makefile
> > head/lib/Makefile
> > head/lib/clang/Makefile
> > head/sbin/Makefile
> > head/share/mk/bsd.subdir.mk
> > head/usr.bin/Makefile
> > head/usr.sbin/Makefile
> >
> > Modified: head/bin/Makefile
> > ==============================================================================
> > --- head/bin/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/bin/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -60,4 +60,6 @@ SUBDIR+= tests
> >
> > SUBDIR:= ${SUBDIR:O}
> >
> > +SUBDIR_PARALLEL=
> > +
> > .include <bsd.subdir.mk>
> >
> > Modified: head/lib/Makefile
> > ==============================================================================
> > --- head/lib/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/lib/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -276,4 +276,8 @@ afterinstall:
> > ${INSTALL_SYMLINK} ../include ${DESTDIR}/usr/lib/include
> > .endif
> >
> > +.if !make(install)
> > +SUBDIR_PARALLEL=
> > +.endif
> > +
> > .include <bsd.subdir.mk>
> >
> > Modified: head/lib/clang/Makefile
> > ==============================================================================
> > --- head/lib/clang/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/lib/clang/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -147,4 +147,6 @@ SUBDIR+=liblldb \
> >
> > SUBDIR+= include
> >
> > +SUBDIR_PARALLEL=
> > +
> > .include <bsd.subdir.mk>
> >
> > Modified: head/sbin/Makefile
> > ==============================================================================
> > --- head/sbin/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/sbin/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -126,4 +126,6 @@ SUBDIR+= tests
> >
> > SUBDIR:= ${SUBDIR:O}
> >
> > +SUBDIR_PARALLEL=
> > +
> > .include <bsd.subdir.mk>
> >
> > Modified: head/share/mk/bsd.subdir.mk
> > ==============================================================================
> > --- head/share/mk/bsd.subdir.mk Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/share/mk/bsd.subdir.mk Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -71,7 +71,26 @@ ${SUBDIR}: .PHONY .MAKE
> > .for __target in all all-man checkdpadd clean cleandepend cleandir \
> > cleanilinks depend distribute lint maninstall manlint obj objlink \
> > realinstall regress tags ${SUBDIR_TARGETS}
> > +.ifdef SUBDIR_PARALLEL
> > +.for __dir in ${SUBDIR}
> > +${__target}: ${__target}_subdir_${__dir}
> > +${__target}_subdir_${__dir}: .MAKE
> > + @${_+_}set -e; \
> > + if test -d ${.CURDIR}/${__dir}.${MACHINE_ARCH}; then \
> > + ${ECHODIR} "===> ${DIRPRFX}${__dir}.${MACHINE_ARCH} (${__target:realinstall=install})"; \
> > + edir=${__dir}.${MACHINE_ARCH}; \
> > + cd ${.CURDIR}/$${edir}; \
> > + else \
> > + ${ECHODIR} "===> ${DIRPRFX}${__dir} (${__target:realinstall=install})"; \
> > + edir=${__dir}; \
> > + cd ${.CURDIR}/$${edir}; \
> > + fi; \
> > + ${MAKE} ${__target:realinstall=install} \
> > + DIRPRFX=${DIRPRFX}$$edir/
> > +.endfor
> > +.else
> > ${__target}: _SUBDIR
> > +.endif
> > .endfor
> >
> > .for __target in files includes
> >
> > Modified: head/usr.bin/Makefile
> > ==============================================================================
> > --- head/usr.bin/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/usr.bin/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -379,4 +379,6 @@ SUBDIR+= svn
> >
> > SUBDIR:= ${SUBDIR:O}
> >
> > +SUBDIR_PARALLEL=
> > +
> > .include <bsd.subdir.mk>
> >
> > Modified: head/usr.sbin/Makefile
> > ==============================================================================
> > --- head/usr.sbin/Makefile Wed Mar 26 20:43:40 2014 (r263777)
> > +++ head/usr.sbin/Makefile Wed Mar 26 22:30:38 2014 (r263778)
> > @@ -320,4 +320,6 @@ SUBDIR+= wpa
> >
> > SUBDIR:= ${SUBDIR:O}
> >
> > +SUBDIR_PARALLEL=
> > +
> > .include <bsd.subdir.mk>
> >
>
>
More information about the svn-src-all
mailing list