From owner-FreeBSD-tech-jp@jp.freebsd.org  Sun Sep 14 09:50:12 1997
Received: by jaz.jp.freebsd.org (8.8.7+2.7Wbeta7/8.7.3) id JAA22782
	Sun, 14 Sep 1997 09:50:12 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.7+2.7Wbeta7/8.7.3) with ESMTP id JAA22777
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sun, 14 Sep 1997 09:50:10 +0900 (JST)
Received: from cubic.shisham.co.jp (tksm2DS29.tks.mesh.ad.jp [133.205.221.179]) by meshsv88.tk.mesh.ad.jp (8.8.4+2.7Wbeta4/3.5Wpl1-) with ESMTP id JAA19019 for <FreeBSD-tech-jp@jp.freebsd.org>; Sun, 14 Sep 1997 09:50:07 +0900 (JST)
Received: foo.bar.org; Sun, 14 Sep 1997 09:47:46 +0900 (JST)
Message-Id: <Lucky.199709140047.JAA09197.Lucky>
To: FreeBSD-tech-jp@jp.freebsd.org
From: Shiba <shiba@mxs.meshnet.or.jp>
In-Reply-To: Your message of "Sat, 13 Sep 1997 19:35:03 +0900"
	<199709131035.TAA12717@peace.calm.imasy.or.jp>
References: <199709131035.TAA12717@peace.calm.imasy.or.jp>
X-Mailer: Mew version 1.90 on XEmacs 20.3 (Kiev)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Sun_Sep_14_09:47:41_1997_809)--"
Content-Transfer-Encoding: 7bit
Date: Sun, 14 Sep 1997 09:47:45 +0900
X-Dispatcher: imput version 970830
Lines: 300
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=20]
X-Sequence: FreeBSD-tech-jp 604
Subject: [FreeBSD-tech-jp 604] Re: SMP and ncr
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org

----Next_Part(Sun_Sep_14_09:47:41_1997_809)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

;;; $B<1JL(B   : <199709131035.TAA12717@peace.calm.imasy.or.jp>
;;; $B=q$-?M(B : Hajimu UMEMOTO <ume@calm.imasy.or.jp> $BMM(B

$BG_MM(B>  $B$=$N8e!"(BSMP $B4X78$N%3!<%I$,BgItJQ99$K$J$j!"$A$g$C$HIT0BDj$K$J$j$^$7$?$,!"(B
$BG_MM(B>9/7 $B0J9_$OHs>o$K0BDj$7$?$b$N$K$J$C$F$$$^$9!#(B

	$B$=$&$G$9$M!#(B


$B$=$l$O!"$=$&$H(Bmake -j16 world$B$r2DG=$H$9$k%Q%C%A(B

	(original$B$O8e$m$KIU$1$F$*$-$^$9!#(B)

$B$G$9$,$$$D$N$3$m$+$i$+(Bworld$B$G(Berror$B$,$G$k$h$&$K$J$C$F$7$^$C$?$N(B
$B$G$9$,!"(Bmake -j24 world >& /dev/null$B$J$I$H$d$C$F$$$k$N$G!"(B
error$BH/@82U=j$,FCDj$G$-$F$*$j$^$;$s!#$I$J$?$+!"=$@5$7$F@5>o$K(B
make world$B$G$-$F$*$j$^$9$G$7$g$&$+(B?($BB>NOK\4j(B^^;)

$B$3$N!"%Q%C%A$rEv$F$k$H!"(BSMP$B$G$O(Bmake world$B$,(B90$BJ,DxEY$K$J$k$N$G(B
$B@'HsF0$+$7$?$$$N$G$9$,!D(B

$B0l2U=j$O(B/usr/src/include/Makefile$B$r=$@5$9$l$P$h$$$N$G$9$,!#(B


----Next_Part(Sun_Sep_14_09:47:41_1997_809)--
Content-Type: Message/Rfc822
Content-Transfer-Encoding: 7bit

From: nnd@itfs.nsk.su
To: current@FreeBSD.ORG
Subject: Re: Make and SMP - what can be done ?
Date: 17 Aug 1997 06:15:24 GMT
Message-ID: <5t64ts$7ae@news.itfs.nsk.su>
References: <199708130432.VAA06415@silvia.HIP.Berkeley.EDU>
Sender: owner-freebsd-current@FreeBSD.ORG
X-Loop: FreeBSD.org
Precedence: bulk
X-UIDL: f6a4ef71e8dc1a4983e85ab7c1acaf2b

	Here is a report of my experiments in "parallel"
world making.

	Let's start from the end ;-)

1) This was done with standard /usr/src/Makefile

# time make buildworld >& bw1.out

10842.7u 5987.9s 4:31:58.43 103.1% 360+502k 36885+26932io 2133pf+0w
		 ^^^^^^^^^^^^^^^^^

2) And this was done with my patches to /usr/src/bin/make,
/usr/src/Makefile and /usr/src/games/boggle/Makefile (see below)

# time make -dmj -j12 buildworld >& bwj.out

11880.6u 5732.4s 3:10:37.60 153.9% 454+556k 38401+44577io 2254pf+0w
		 ^^^^^^^^^^^^^^^^^

	Both makes was on the same system (FreeBSD-3.0 as of 970808,
SMP kernel on two P-133 Gateway GA-586DX m/b with 128M EDO memory
and /usr/{src,obj} both on ccd0 (two IBM DORS-32160W)).

	What have I done ?

   Current buildworld structure is not very suitable for "parallel"
making ;-( especially in "make depend" and "make all install ..."
cases. So I take an easy path to avoid "parallelism" in this steps
while using it in "make all" parts.

1) I've patched /usr/bin/make in such a way that -B flag
(compatible mode) will be propagated to "nested" make's
(see make.patch below);

2) I've change /usr/src/Makefile so that all 'depend' parts
was done in "compatible mode" and all 'all install clean cleandepend'
parts splits to 'all' (which can be made "in parallel") and
'install clean cleandepend' which again was done in "compatible mode"
(see Makefile.patch below);

3) I've patched /usr/src/games/boggle/Makefile which leads to
error in 'make -j12 all" case and is incorrect independently
of any "parallell making" (see my PR bin/4314 for this).

	If you use SMP FreeBSD and build world often
you can try to speed-up this task in ~1.49 times :-).

	After that you can speend some time on Makefile's
and mk-files studying and make FreeBSD's buildworld structure
fully "parallel"-safe ! ;-)

	N.Dudorov

make.patch=================================================

diff -ruN src/usr.bin/make/main.c src/usr.bin/make-patched/main.c
--- src/usr.bin/make/main.c	Fri Aug 15 17:59:11 1997
+++ src/usr.bin/make-patched/main.c	Fri Aug 15 18:07:14 1997
@@ -190,6 +190,7 @@
 			break;
 		case 'B':
 			compatMake = TRUE;
+			Var_Append(MAKEFLAGS, "-B", VAR_GLOBAL);
 			break;
 #ifdef REMOTE
 		case 'L':


Makefile.patch=============================================

--- src/Makefile	Sat Aug 16 20:17:41 1997
+++ src/Makefile.MY	Sat Aug 16 20:17:34 1997
@@ -216,8 +216,9 @@
 	@echo "--------------------------------------------------------------"
 	mkdir -p ${WORLDTMP}/usr/bin
 	cd ${.CURDIR}/usr.bin/make && \
-		${IBMAKE} -I${.CURDIR}/share/mk ${OBJDIR} clean cleandepend depend && \
-		${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all install clean cleandepend
+		${IBMAKE} -I${.CURDIR}/share/mk ${OBJDIR} -B clean cleandepend depend && \
+		${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} all && \
+		${IBMAKE} -I${.CURDIR}/share/mk ${MK_FLAGS} -B install clean cleandepend
 	@echo
 	@echo "--------------------------------------------------------------"
 	@echo " Making hierarchy"
@@ -251,7 +252,7 @@
 	@echo "--------------------------------------------------------------"
 	@echo " Rebuilding /usr/include"
 	@echo "--------------------------------------------------------------"
-	cd ${.CURDIR} && ${BMAKE} includes
+	cd ${.CURDIR} && ${BMAKE} -B includes
 	@echo
 	@echo "--------------------------------------------------------------"
 	@echo " Rebuilding tools needed to build the libraries"
@@ -271,7 +272,7 @@
 	@echo "--------------------------------------------------------------"
 	@echo " Rebuilding dependencies"
 	@echo "--------------------------------------------------------------"
-	cd ${.CURDIR} && ${XMAKE} depend
+	cd ${.CURDIR} && ${XMAKE} -B depend
 	@echo
 	@echo "--------------------------------------------------------------"
 	@echo " Building everything.."
@@ -413,12 +414,15 @@
 	cd ${.CURDIR}/include && find -dx . | cpio -dump ${DESTDIR}/usr/include
 	cd ${.CURDIR}/include && make symlinks
 .endif
-	cd ${.CURDIR}/usr.bin/make && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
-	cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
-	cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} -DNOLIB all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.bin/make && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.bin/xinstall && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.bin/lex && ${MAKE} bootstrap && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} -DNOLIB all && \
+		${MAKE} ${MK_FLAGS} -DNOLIB -B install ${CLEANDIR} ${OBJDIR}
 
 #
 # include-tools - generally the same as 'bootstrap', except that it's for
@@ -429,8 +433,9 @@
 # on cleaned away headers in ${WORLDTMP}.
 #
 include-tools:
-	cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} cleandepend depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.bin/rpcgen && ${MAKE} -B cleandepend depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 
 #
 # includes - possibly generate and install the include files.
@@ -499,8 +504,9 @@
 		usr.bin/nm		\
 		usr.bin/ranlib		\
 		usr.bin/uudecode
-	cd ${.CURDIR}/$d && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/$d && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endfor
 
 #
@@ -508,44 +514,54 @@
 #
 libraries:
 .if exists(lib/csu/i386)
-	cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/lib/csu/i386 && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(lib/libcompat)
-	cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/lib/libcompat && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(lib/libncurses)
-	cd ${.CURDIR}/lib/libncurses && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/lib/libncurses && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(lib/libtermcap)
-	cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/lib/libtermcap && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(gnu)
-	cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/gnu/lib && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(secure) && !defined(NOCRYPT) && !defined(NOSECURE)
-	cd ${.CURDIR}/secure/lib && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/secure/lib && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(lib)
-	cd ${.CURDIR}/lib && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/lib && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(usr.bin/lex/lib)
-	cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.bin/lex/lib && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(eBones) && !defined(NOCRYPT) && defined(MAKE_EBONES)
-	cd ${.CURDIR}/eBones/lib && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/eBones/lib && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 .if exists(usr.sbin/pcvt/keycap)
-	cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/usr.sbin/pcvt/keycap && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endif
 
 #
@@ -615,8 +631,9 @@
 		usr.sbin/chown		\
 		usr.sbin/mtree		\
 		usr.sbin/zic
-	cd ${.CURDIR}/$d && ${MAKE} depend && \
-		${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
+	cd ${.CURDIR}/$d && ${MAKE} -B depend && \
+		${MAKE} ${MK_FLAGS} all && \
+		${MAKE} ${MK_FLAGS} -B install ${CLEANDIR} ${OBJDIR}
 .endfor
 
 .include <bsd.subdir.mk>



----Next_Part(Sun_Sep_14_09:47:41_1997_809)----
