Skip site navigation (1)Skip section navigation (2)
Date:      05 Nov 1999 22:15:12 -0500
From:      Kevin Street <street@iname.com>
To:        Mike Smith <mike@smith.net.au>
Cc:        freebsd-smp@FreeBSD.ORG
Subject:   Re: Dual Celeron + FreeBSD?
Message-ID:  <87vh7gux8f.fsf@mired.eh.local>
In-Reply-To: Mike Smith's message of "Fri, 05 Nov 1999 16:30:59 -0800"
References:  <199911060030.QAA00895@dingo.cdrom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike Smith <mike@smith.net.au> writes:

> > > Under 40 minutes is very hard on a current intel architecture box; the 
> > > 4-way Xeon 400/256 that we have here will do about 39 even on -current 
> > > as of a couple of weeks ago, with everything except $DESTDIR on an MFS.
> > > 
> > > To go much faster will require more memory bandwidth, or possibly 
> > > faster CPUs with more cache (not so sure about that part).
> >  ...
> >      2384.21 real      2809.03 user      1337.21 sys
> > elapsed 0:39:42  busy 86.95% 
> > 
> > Ok, so I cheated with -DNOPROFILE and I have a somewhat modified
> > bsd.subdir.mk that parallelizes some subdir builds in the "building
> > everything" phase of the make.  This is with a dual 466 Celeron, 128M
> > 66Mhz FSB, no overclocking, Abit BP6.  I'm using -pipe in
> > /etc/make.conf and /usr/src, /usr/obj and /tmp are all on a striped
> > vinum volume that resides on 2 IBM 9G 7200RPM SCSI drives with
> > softupdates. 
> 
> So stop cheating.  I can get it down to a few hundredths of a second 
> if I rewrite make thus:
> 
> void main(void) { return(0); }

heh, I thought you'd get grumpy when I posted that :)
Ok, without the -DNOPROFILE it's 44:03 

I really had 2 points:
1) Dual Celeron's do work pretty well given a good workload

2) Your assertion that we need more memory bandwidth to go much faster
on the buildworld - I disagree, or at least I think we have not wrung
all the SMP performance out of build world that we should.  One big
problem with make -j N is that it does ok at parallelizing the compile
of large subdirectories with lots of C modules since it starts many
compiles at once.  The link step seriallizes however, which means
that the 2nd (& 3rd and 4th) cpus sit mostly idle.  The same thing
happens when building small subdirs with only one, or a few, c modules.
And when the build moves between subdirs it seriallizes while it
interprets the make file and sets up the parallel compiles etc.

The net result on my system is that the build runs at about 70% cpu
utilization overall, ie I get a max of 140% of the single cpu.
Actually less because of the SMP overhead.  By some relatively simple
tweaking of the build rules, starting multiple subdir makes in
parallel, we can get much better parallelization since while one subdir
is seriallizing, the others can be running on the other cpus.  With my
experimental version I'm getting the average cpu up to about 87% ie
getting about 178% of the single cpu.  Actually the last half of the
buildworld runs at about 100% utilization.  The first half (building
the tools and some libs) is still seriallized quite a bit since I have
not tinkered with that part yet. 
-- 
Kevin Street
street@iname.com


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87vh7gux8f.fsf>