Date: Wed, 24 Dec 1997 07:24:55 -0500 From: "Postmaster" <Postmaster@mail.rih.org> To: undisclosed-recipients:; Subject: Non-Delivery Report Message-ID: <199712241223.EAA04646@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Could not deliver message (ID=14944).
Local account 'peterh' is unknown.
The first portion of the original message text follows:
-------------------------------------------------------
Received: from sarip.sol.net by mail.rih.org (AppleShare IP Mail Server 5.0.1) id 14944 via TCP with SMTP; Wed, 24 Dec 1997 07:24:55 -0500
Received: from hub.freebsd.org (hub.FreeBSD.ORG [204.216.27.18])
by sarip.sol.net (8.8.8/8.8.8/SNNS-1.02) with ESMTP id GAA17697;
Wed, 24 Dec 1997 06:07:07 -0600 (CST)
Received: from localhost (daemon@localhost)
by hub.freebsd.org (8.8.7/8.8.7) with SMTP id DAA01127;
Wed, 24 Dec 1997 03:20:56 -0800 (PST)
(envelope-from owner-freebsd-current)
Received: (from root@localhost)
by hub.freebsd.org (8.8.7/8.8.7) id DAA01099
for current-outgoing; Wed, 24 Dec 1997 03:20:45 -0800 (PST)
(envelope-from owner-freebsd-current)
Received: from silvia.HIP.Berkeley.EDU (ala-ca34-23.ix.netcom.com [207.93.143.151])
by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id DAA01078;
Wed, 24 Dec 1997 03:20:35 -0800 (PST)
(envelope-from asami@vader.cs.berkeley.edu)
Received: (from asami@localhost) by silvia.HIP.Berkeley.EDU (8.8.8/8.6.9) id DAA27011; Wed, 24 Dec 1997 03:20:33 -0800 (PST)
Date: Wed, 24 Dec 1997 03:20:33 -0800 (PST)
Message-Id: <199712241120.DAA27011@silvia.HIP.Berkeley.EDU>
To: current@FreeBSD.ORG, stable@FreeBSD.ORG
Reply-to: current@FreeBSD.ORG
Subject: p-make
From: asami@cs.berkeley.edu (Satoshi Asami)
Sender: owner-freebsd-current@FreeBSD.ORG
X-Loop: FreeBSD.org
Precedence: bulk
Well, here is a new set of patches. My previous one didn't work
because it ran out of processes -- the build was spawning N processes
at each level -- so, at the 4th level, there were N^4 processes. Some
makes got "no more processes" errors, but continued anyway (why?) and
the build died much later.
So, I made it so that the forking only happens at one level. When
bsd.subdir.mk parallelizes a make, it will append -B to the flags so
it won't be forked again.
First, the numbers from individual directories. The four numbers are
"make -j4 all" async/sync for /usr/{src,obj} and with parent dir
pmake/leaf node pmake. The machines are both P6-200, /usr/{src,obj}
are on 8-disk CCDs of IBM 9GB 7,200RPM drives (the first machine has
larger partition though...the total size is 8GB for 2.2-stable and 3GB
for 3.0-current). 3.0-current has NOTCL defined.
2.2-stable:
===
bin
72.73 real 62.09 user 9.62 sys <- async, parent
83.56 real 62.28 user 10.08 sys <- async, leaf
73.00 real 62.24 user 9.77 sys <- sync, parent
84.80 real 62.14 user 10.49 sys <- sync, leaf
sbin
95.27 real 80.57 user 13.18 sys
113.60 real 80.20 user 13.05 sys
95.29 real 80.72 user 12.98 sys
115.11 real 80.13 user 13.40 sys
lib
843.87 real 599.77 user 223.81 sys
708.49 real 462.48 user 178.23 sys
906.87 real 602.89 user 222.62 sys
759.95 real 466.66 user 177.76 sys
libexec
55.12 real 46.02 user 8.26 sys
65.73 real 46.00 user 8.34 sys
55.43 real 45.80 user 8.55 sys
67.20 real 46.25 user 8.26 sys
share
111.31 real 88.32 user 19.70 sys
139.89 real 87.36 user 18.77 sys
109.44 real 87.19 user 19.94 sys
144.42 real 87.45 user 19.10 sys
usr.bin
446.97 real 379.21 user 62.02 sys
520.46 real 380.81 user 60.70 sys
447.28 real 378.71 user 62.14 sys
526.67 real 380.85 user 62.48 sys
usr.sbin
402.24 real 342.53 user 54.49 sys
461.16 real 342.22 user 52.96 sys
401.83 real 342.56 user 53.78 sys
467.48 real 343.44 user 53.25 sys
gnu/lib
537.30 real 445.09 user 84.75 sys
562.43 real 447.25 user 87.67 sys
546.56 real 447.99 user 85.05 sys
583.22 real 447.74 user 87.56 sys
gnu/usr.bin
1094.20 real 942.52 user 93.68 sys
1089.30 real 938.02 user 93.64 sys
1114.73 real 950.29 user 93.84 sys
1114.97 real 950.11 user 94.73 sys
===
3.0-current:
===
bin
69.65 real 60.11 user 8.17 sys
79.47 real 60.17 user 8.26 sys
69.79 real 60.38 user 7.99 sys
79.92 real 60.06 user 8.52 sys
sbin
96.35 real 81.64 user 12.71 sys
115.08 real 81.60 user 11.90 sys
96.39 real 81.63 user 12.64 sys
117.10 real 81.64 user 12.12 sys
lib
1259.10 real 918.46 user 251.52 sys
1499.31 real 924.88 user 276.02 sys
1344.95 real 922.70 user 248.34 sys
1625.90 real 927.65 user 281.68 sys
libexec
53.42 real 45.15 user 6.94 sys
62.50 real 45.06 user 6.74 sys
53.52 real 45.25 user 6.96 sys
64.59 real 45.20 user 6.72 sys
share
107.32 real 85.39 user 15.29 sys
139.84 real 85.76 user 14.84 sys
108.04 real 84.96 user 15.76 sys
144.18 real 85.79 user 14.94 sys
usr.bin
463.92 real 395.59 user 57.83 sys
534.99 real 394.94 user 56.71 sys
463.25 real 396.46 user 56.61 sys
540.16 real 396.20 user 56.53 sys
usr.sbin
402.00 real 344.13 user 49.20 sys
461.87 real 343.06 user 47.52 sys
401.31 real 344.71 user 48.22 sys
467.61 real 343.75 user 47.95 sys
gnu/lib
510.97 real 424.14 user 72.09 sys
543.21 real 423.12 user 76.13 sys
518.31 real 426.08 user 72.46 sys
569.64 real 424.54 user 76.14 sys
gnu/usr.bin
1003.39 real 905.61 user 81.43 sys
1055.77 real 907.60 user 81.05 sys
1010.71 real 906.07 user 81.50 sys
1063.74 real 907.70 user 80.91 sys
===
As you can see, it speeds up places like bin and usr.bin quite a bit.
The tradeoff is if you have one or two very large directories
(compared to the others), that one will be running a single-process
make (because of -B) long after others are done. I actually had to
move sh much earlier in the SUBDIR list in bin/Makefile so it doesn't
happen. I observed this by looking at the make output; we may need to
do similar things in usr.sbin (xntpd is pretty large and is near the
end of the list).
On the other hand, it doesn't help much in places like lib (it
actually hurts in 2.2-stable). It's because there is one directory
(libc) that basically dwarfs the rest. My guess on the reason why
3.0-current behaves better is because it also builds libc_r, which is
about as big so there's at least a two-way parellism going on even
after everything else is done.
For lib, I'm actually not sure why it helps at all. For gnu/usr.bin,
I assume it's spending most of the time inside cc.
Now, for the whole buildworld. The numbers are measured by doing a
"rm -rf /usr/obj/usr/src" and doing the actual build with -DNOCLEAN.
-j4 async parent
-j4 async leaf
-j4 sync parent
-j4 sync leaf
-j2 async parent
-j2 async leaf
-j2 sync parent
-j2 sync leaf
2.2-stable:
===
5517.40 real 3785.70 user 927.84 sys
5726.68 real 3766.08 user 960.40 sys
5900.12 real 3787.60 user 945.85 sys
6090.51 real 3768.67 user 970.15 sys
5408.57 real 3816.63 user 860.06 sys
5650.55 real 3749.16 user 851.64 sys
5613.19 real 3776.83 user 843.19 sys
6016.20 real 3756.14 user 852.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712241223.EAA04646>
