Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Apr 1997 23:30:32 -0600
From:      Steve Passe <smp@csn.net>
To:        Chuck Robey <chuckr@mat.net>
Cc:        FreeBSD-SMP@FreeBSD.org
Subject:   Re: SMP 
Message-ID:  <199704280530.XAA24002@Ilsa.StevesCafe.com>
In-Reply-To: Your message of "Sun, 27 Apr 1997 23:03:38 EDT." <Pine.BSF.3.91.970427230130.22821G-100000@Journey2.mat.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

> One per CPU?  One lock total?  How many copies of the kernel are running 
> at once?  How is caching handled, per cpu, or globally (forcing the two 
> cpu's to look like one?)  When a system call executes, what handles it, 
> one cpu?

We use the giant lock model at present.  This is our biggest performance 
bottleneck, and it will soon change.  More specifically there is one lock
for the entire (SMP aspect of the) system.  There is one copy of the kernel,
which both CPUs can execute.  The lock prevents more than one from running
it at the same time.  It is a spin lock, and is a counting lock, ie the 
possessor can get it mutiple times.  cacheing is done by hardware enforcing
the MESI model.  I believe a system call will be handled by the CPU on which
the calling process is running.  An interrupt could be handled by any
available CPU (simple answer, details are more complex).  Caching is almost
invisible to the software, we still have to handle TLB invalidations with
inter-CPU interrupts.

--
Steve Passe	| powered by 
smp@csn.net	|            Symmetric MultiProcessor FreeBSD





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