From owner-freebsd-smp Wed Aug 27 21:46:18 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id VAA07155 for smp-outgoing; Wed, 27 Aug 1997 21:46:18 -0700 (PDT) Received: from spinner.dialix.com.au (spinner.dialix.com.au [192.203.228.67]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id VAA07146 for ; Wed, 27 Aug 1997 21:46:00 -0700 (PDT) Received: from spinner.dialix.com.au (localhost.dialix.com.au [127.0.0.1]) by spinner.dialix.com.au with ESMTP id MAA19432; Thu, 28 Aug 1997 12:42:22 +0800 (WST) Message-Id: <199708280442.MAA19432@spinner.dialix.com.au> X-Mailer: exmh version 2.0zeta 7/24/97 To: Simon Shapiro cc: Christopher Petrilli , smp@FreeBSD.ORG, Peter Stubbs , Kyle Mestery Subject: Re: A how does it work question. In-reply-to: Your message of "Wed, 27 Aug 1997 21:02:27 MST." Date: Thu, 28 Aug 1997 12:42:21 +0800 From: Peter Wemm Sender: owner-freebsd-smp@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk Simon Shapiro wrote: > > Hi Christopher Petrilli; On 27-Aug-97 you wrote: > > In the end, I would think that software would be the conjstriction point > > (in fact seperate memory makes it an MPP system, not an AMP/SMP system). > > This is the concept behind ccNUMA, etc... > > > > Because of the nature of the FreeBSD kernel (and I suppose the probably > > applies to Linux, but don't know), all I/O is threaded thru the #0 CPU, > > and thereby it becomes a HUGE bottleneck. > > Correct. I built a Z-80 system like that in 1980. Worked well because CPU > cycles were in short supply. Disks were amazingly similar to today`s. > > Simon Again, no, this is not correct. All cpu's share the IO, interrupt, scheduling etc load evenly. Once the FreeBSD kernel is running in SMP mode, there is no difference at all in behavior between the cpus except that only cpu#0 will do a final shutdown and reset of the system (an MPSPEC requirement). Interrupt handling is interleaved between cpus, but if a cpu is "in" the kernel when an interrupt happens, it will handle the interrupt. This is because (for the moment), when one cpu is executing code inside the giant lock, the other cpu cannot get into the kernel to service interrupts (except for fast interrupts for sio/cy). It's fully symmetric (all cpu's are equal), just not reentrant enough in general (yet). (However, I vaguely recall something about NMI only being handled on the BSP though) Cheers, -Peter