From owner-freebsd-arch@FreeBSD.ORG Mon Feb 2 22:24:25 2009 Return-Path: Delivered-To: arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D458106566B for ; Mon, 2 Feb 2009 22:24:25 +0000 (UTC) (envelope-from obrien@NUXI.org) Received: from dragon.nuxi.org (trang.nuxi.org [74.95.12.85]) by mx1.freebsd.org (Postfix) with ESMTP id 301B78FC2D for ; Mon, 2 Feb 2009 22:24:24 +0000 (UTC) (envelope-from obrien@NUXI.org) Received: from dragon.nuxi.org (obrien@localhost [127.0.0.1]) by dragon.nuxi.org (8.14.2/8.14.2) with ESMTP id n12M6TfH077532; Mon, 2 Feb 2009 14:06:29 -0800 (PST) (envelope-from obrien@dragon.nuxi.org) Received: (from obrien@localhost) by dragon.nuxi.org (8.14.2/8.14.2/Submit) id n12M6TS2077531; Mon, 2 Feb 2009 14:06:29 -0800 (PST) (envelope-from obrien) Date: Mon, 2 Feb 2009 14:06:29 -0800 From: "David O'Brien" To: "M. Warner Losh" Message-ID: <20090202220628.GA76833@dragon.NUXI.org> Mail-Followup-To: obrien@freebsd.org, "M. Warner Losh" , arch@FreeBSD.org References: <200901130653.n0D6rrNX092719@svn.freebsd.org> <20090130015518.GA20404@hades.panopticon> <20090130.085130.-4349483.imp@bsdimp.com> <20090130.093052.-2022808221.imp@bsdimp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090130.093052.-2022808221.imp@bsdimp.com> X-Operating-System: FreeBSD 8.0-CURRENT User-Agent: Mutt/1.5.16 (2007-06-09) Cc: arch@FreeBSD.org Subject: Re: svn commit: r187132 - head/usr.bin/make X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: obrien@FreeBSD.org List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Feb 2009 22:24:25 -0000 On Fri, Jan 30, 2009 at 09:30:52AM -0700, M. Warner Losh wrote: > OMG! There's too much make output now, and the recent changes broke > useful make features. All but one were eventually fixed. I just > fixed the -s breakage. I fail to see where 'make -Q -s' is not suitable to achieve the goals you mentioned for 'make -s'. I did make sure you could quiet things. I've tried to measure the "~10% performance improvement" in using 'make -s' that was the technical justification for r187921. I have been unable to achieve ~10%. The summary is: 'make -j16 -Q -s' saves 2.54% over 'make -j16' on local disk. 'make -s' saves 0.96% over 'make' on local disk. results on NFS are insignificant [ delta < 0.5% ]. I ran benchmarks on ref8-amd64 (a machine others have access to and can audit my results). I checked out svn+ssh://svn.freebsd.org/base/head@187920 and built make from that. Using that make I then ran buildworld's. The abbreviated results for local disk are: MAKE=make@r187921 /usr/bin/time -h $MAKE -j16 -Q buildworld >outfile 2>&1 25m38.07s real 1h30m6.59s user 45m37.27s sys 25m15.23s real 1h30m1.67s user 45m28.50s sys 25m22.65s real 1h30m8.85s user 45m32.10s sys (1538.07 + 1515.23 + 1522.65)/3 = 1525.32 sec ave [10% improvement would reduce build by 2m33s] MAKE=make@r187921 /usr/bin/time -h $MAKE -j16 -Q -s buildworld >outfile 2>&1 24m36.12s real 1h27m27.18s user 44m26.88s sys 24m34.77s real 1h27m27.82s user 44m24.56s sys 24m29.01s real 1h27m22.16s user 44m28.23s sys (1476.12 + 1474.77 + 1469.01)/3 = 1473.30 sec ave => 1473.30 / 1525.32 * 100 - 100 = -3.41% change in build time [compared with below] => 1473.30 / 1511.70 * 100 - 100 = -2.54% change in build time MAKE=make@r187921 /usr/bin/time -h $MAKE -j16 buildworld >outfile 2>&1 25m3.95s real 1h27m40.02s user 45m19.12s sys 24m57.35s real 1h27m33.31s user 45m6.81s sys 25m33.81s real 1h27m39.68s user 44m50.02s sys (1503.95 + 1497.35 + 1533.81)/3 = 1511.70 sec ave => 1511.70 / 1525.32 * 100 - 100 = -.89% change in build time MAKE=make@r187921 /usr/bin/time -h $MAKE buildworld >outfile 2>&1 1h48m7.30s real 1h28m22.07s user 22m28.01s sys 1h48m0.94s real 1h28m35.60s user 22m7.59s sys 1h48m4.20s real 1h28m39.28s user 21m58.27s sys (6487.30 + 6480.94 + 6484.20)/3 = 6484.15 sec ave [10% improvement would reduce build by 10m48s] MAKE=make@r187921 /usr/bin/time -h $MAKE -s buildworld >outfile 2>&1 1h47m56.48s real 1h28m35.91s user 22m0.57s sys 1h47m55.65s real 1h28m40.66s user 21m56.70s sys 1h51m5.05s real 1h28m48.22s user 22m21.96s sys (6476.48 + 6475.65 + 6665.05)/3 = 6539.06 sec ave => 6539.06 / 6484.15 * 100 - 100 = .85% change in build time If we toss out the high value and use 6476.48 twice, ave = 6476.20 => 6476.20 / 6539.06 * 100 - 100 = -.96% change in build time The NFS results are: MAKE=make@r187921 /usr/bin/time -h $MAKE -j16 buildworld >outfile 2>&1 35m33.59s real 1h33m20.08s user 52m1.04s sys 31m9.58s real 1h33m43.16s user 52m41.46s sys 31m18.94s real 1h33m40.45s user 52m41.58s sys (2133.59 + 1869.58 + 1878.94)/3 = 1960.70 sec ave MAKE=make@r187921 /usr/bin/time -h $MAKE -j16 -Q -s buildworld >outfile 2>&1 31m42.62s real 1h33m28.64s user 52m4.32s sys 31m14.54s real 1h33m21.25s user 52m8.88s sys 31m17.26s real 1h33m22.48s user 52m10.93s sys (1902.62 + 1874.54 + 1877.26)/3 = 1884.81 sec ave => 1884.81 / 1960.70 * 100 - 100 = -3.87% change in build time To be fair as in the local disk case, redoing the above: (1878.94 + 1869.58 + 1878.94)/3 = 1875.82 sec ave (adjusted) => 1884.81 / 1875.82 * 100 - 100 = .48% change in build time MAKE=make@r187921 /usr/bin/time -h $MAKE buildworld >outfile 2>&1 2h21m30.74s real 1h30m28.41s user 29m8.64s sys 2h21m2.15s real 1h30m25.54s user 29m2.99s sys 2h21m0.24s real 1h30m25.93s user 29m3.85s sys (8490.74 + 8462.15 + 8460.24)/3 = 8471.04 sec ave MAKE=make@r187921 /usr/bin/time -h $MAKE -s buildworld >outfile 2>&1 2h20m48.71s real 1h30m26.02s user 29m7.66s sys 2h21m5.95s real 1h30m21.87s user 29m10.28s sys 2h21m7.70s real 1h30m29.85s user 29m4.29s sys (8448.71 + 8465.95 + 8467.7)/3 = 8460.79 sec ave => 8460.79 /8471.04 * 100 - 100 = -.12% change in build time Thus I think there isn't any real time savings with "-Q -s"/"-s". Granted I was not in full control of the machine to ensure there was no completing usage, but from what I can other users didn't adversely affect my results. Also, three samples is rather small; but I was working from very little data from the "~10% performance improvement". I also "benchmarked" log size to see how much an issue that is: /usr/bin/time -h make@r187921 -j16 buildworld 30692989 , 30076086 , 30039499 (29M) /usr/bin/time -h $MAKE -j16 -Q buildworld 27734095, 27169263, 27169297 (26M) /usr/bin/time -h $MAKE -j16 -s buildworld 1168471 , 1168346 , 1165518 (1.1M) /usr/bin/time -h make@r187921 -j16 -Q -s buildworld 925073 , 925072 , 925103 (903K) /usr/bin/time -h make@r187921 buildworld 27168710 , 27168709 , 27168710 (26M) /usr/bin/time -h make@r187921 -s buildworld 924919 , 924920 , 924919 (903K) I do not consider the 3M of additional output of 'make -j16' vs. 'make -j16 -Q' to be significant with today's disk sizes. -- -- David