Subject: Re: Multiprocessor with NetBSD ?
To: Erik E. Fair <fair@clock.org>
From: David Brownlee <abs@netbsd.org>
List: current-users
Date: 06/04/2001 10:00:49
(Picking back..)
I'm not aware of any system that will give "a factor of N
speed up, for each Nth processor". I do not believe it
possible for inherent reasons of memory and i/o contention
alone.
So... if percentage speed up is not a valid metric for SMP,
how ahout "re-entrant on all processors with fine-grain
locking". How re-entrant and fine-grain do you need to be
to qualify. NetBSD is trivially re-entrant for one syscall
- getpid(), but should it be all syscalls? - all i/o?
locking on every structure access?
You could draw a line somewhere and say "these are the
characteristics that define SMP". Unless you draw it so
high that virtually no existing system can qualify, then
someone could come up with a system that just fails on one
criteria, but exceeds the others by such a degree that it
should be called SMP.
--
David/absolute -- www.netbsd.org: No hype required --
On Sun, 3 Jun 2001, Erik E. Fair wrote:
> The whole point of having a multi-CPU hardware configuration is to
> get a factor of N speed up, for each Nth processor (e.g. a factor of
> two for two processors), in system throughput (N.B. I do not suggest
> that an SMP will speed up individual applications - that depends on
> whether they have been specially coded to take advantage of
> additional CPUs, when present).
>
> Given this goal, the OS kernel must be fully symmetric and re-entrant
> on all processors with fine-grain locking. Otherwise, a system-call
> bound process on one processor (or lots of I/O interrupts) will cause
> the kernel to be the performance bottleneck if only one processor can
> field interrupts, or handle system calls. Even one processor, at a
> time. Unless the job mix is totally dominated by user CPU, you would
> end up with a queue of processes waiting for kernel time, and idled
> CPUs.
>
> In order for a parallel system to provide maximum throughput,
> contention for common resources must be minimized, and that means the
> kernel has to be parallelized enough that N processes on N CPUs can
> make N different system calls, and no one waits for any other.
>
> Now, I'm not saying that you won't have contention; if every process
> wants to read the same I/O device, someone has to wait. However, so
> long as the processes are asking for different resources at the same
> time, we should try to make it possible for each the processors to
> handle those requests in parallel, so everyone can be running
> flat-out.
>
> Anything less is not SMP. It's MP. Whether this is a really big deal
> or not depends on your job mix, and/or your marketing message.
>
> We're lucky in one sense: UNIX is process-happy - want to get
> something done? Start a new process! Given that, adding processors to
> a UNIX system generally does help things significantly (provided
> you've also got memory subsystem and bus bandwidth, etc).
>
> pick, pick, pick...
>
> Erik <fair@clock.org>
>