mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* RE: SMP/cc Cluster description
@ 2001-12-07 19:14 Dana Lacoste
  2001-12-07 19:28 ` Larry McVoy
  0 siblings, 1 reply; 75+ messages in thread
From: Dana Lacoste @ 2001-12-07 19:14 UTC (permalink / raw)
  To: 'Larry McVoy', Martin J. Bligh; +Cc: linux-kernel

Man you guys are NUTS.

But this is a fun conversation so I'm going to join in.

> Did you even consider that this is virtually identical to the problem
> that a network of workstations or servers has?  Did it occur 
> to you that
> people have solved this problem in many different ways?  Or 
> did you just
> want to piss into the wind and enjoy the spray?

I may be a total tool here, but this question is really bugging me :

What, if any, advantages does your proposal have over (say) a Beowulf
cluster?  Why does having the cluster in one box seem a better solution
than having a Beowulf type cluster with a shared Network filesystem?

You've declared everything to be separate, so that I can't see
what's not separate any more :)

Is it just an issue of shared memory?  You want to be able to share
memory between processes on separate systems at high speed?  Why
not Myrinet then?  Yeah, it's slower, but the order of magnitude
reduction in cost compared to a 64 way SMP box makes this a trivial
decision in my books....

Or am I missing something really obvious here????

Dana Lacoste
Embedded Linux Developer (The OPPOSITE side of the scale)
Ottawa, Canada

^ permalink raw reply	[flat|nested] 75+ messages in thread
* RE: SMP/cc Cluster description
@ 2001-12-10 15:59 cardente, john
  0 siblings, 0 replies; 75+ messages in thread
From: cardente, john @ 2001-12-10 15:59 UTC (permalink / raw)
  To: 'Jeff V. Merkey '
  Cc: 'David S. Miller ', 'lm@bitmover.com ',
	'davidel@xmailserver.org ',
	'rusty@rustcorp.com.au ',
	'Martin.Bligh@us.ibm.com ',
	'riel@conectiva.com.br ', 'lars.spam@nocrew.org ',
	'alan@lxorguk.ukuu.org.uk ', 'hps@intermeta.de ',
	'linux-kernel@vger.kernel.org ',
	'jmerkey@timpanogas.org '

 

>I know what the PCI cards do.  I was the person who pushed
>marty Albert, the Chairman of the Dolphin Board at the time in 
>1995 to pursue design work on them.  I also worked with Justin 
>Rattner (I saw one of your early prototype boxes in 1996 in his labs).  

Ahh, sometimes it's hard to gauge "understanding" on this list  ;-)
Good idea BTW. For a while we looked into using those cards
to implement a non-cc NUMA cluster system. That was a while
ago, however, and I've managed to forget most of the details. Also,
with the assimilation of DG into EMC I've tossed most of my dolphin
specs.


>Those stubs were aweful short for the lost slot in your 
>system, and I am surprised you did not get signal skew.  Those
>stubs had to be 1.5 inches long :-).

Yes, I spent many hours in the lab hunting for signal integrity
issues. As you may guess it was not always easy being a third
party agent on an intel bus...


>Wrong.  There is a small window where you can copy into a 
>remote nodes memory.

As I said above I tossed by P2B spec so I cant refresh my memory
on this. Did this work like reflective memory or do you scribble
on a piece of memory and then poke the card to send to another node?
Its my guess that the former prohibits the memory being cacheable
while the latter relies on compliant SW and therefore doesnt afford
transparent cross node memory references. Are either of these right?


>It's OK.  We love DG and your support of SCI.  Keep up the good 
>work.

Wish that I was but sadly I'm not. DG was my first job after grad school
and cutting my teeth on the ccNUMA stuff was simply an outstanding
experience.
Those were good days....

Thanks for the reply...
john

ps. I got two of the older PCI cards sitting in my desk drawer.
Now you've got me considering pulling those guys out and having
some fun!!!

^ permalink raw reply	[flat|nested] 75+ messages in thread
* RE: SMP/cc Cluster description
@ 2001-12-06 22:20 cardente, john
  2001-12-06 23:00 ` Jeff V. Merkey
  0 siblings, 1 reply; 75+ messages in thread
From: cardente, john @ 2001-12-06 22:20 UTC (permalink / raw)
  To: 'Jeff V. Merkey', David S. Miller
  Cc: lm, davidel, rusty, Martin.Bligh, riel, lars.spam, alan, hps,
	linux-kernel, jmerkey

Hi Jeff,

I was one of the primary SCI guys at DG for all of
their Intel based ccNUMA machines. I worked with
Dolphin closely on a variety of things for those
systems including micro-coding a modified/optimized
version of their SCI implementation as well as 
architecting and implementing changes to their SCI
coherency ASIC for the third (last) DG ccNUMA system.
Beyond that I was the primary coherency protocol 
person for the project and was responsible for making
sure we played nice with Intel's coherency protocol.

Getting to the point I saw your post below and I thought
there might be some confusion between what the DG boxes
did and what those PCI cards do. In the DG system we
implemented ASIC's that sat on the processor bus which
examined every memory reference to maintain system wide
coherency. These evaluations were done for every bus
transaction at a cache line granularity. These chips
acted as bridges that enforced coherency between the SMP local
snoopy bus protocol and the SCI protocol used system
wide. The essential point here is that only by being
apart of the coherency protocol on the processor bus 
were those chips able to implement ccNUMA at a cacheline 
level coherency.


The Dolphin PCI cards, however, cannot perform the same
function due to the fact that the PCI bus is outside of the
Intel coherency domain. Therefore it lacks the visiblity
and control to enforce coherency. Instead, those cards 
only allowed for the explicit sending of messages across 
SCI for use with clustering libraries like MPI. One could
use this kind of messaging protocol to implement explicit
coherency (as you noted) but the sharing granularity of
such a system is at the page level, not cache line. There
have been many efforts to implement this kind of system
and (if I recall correctly) they usually go under the
name of Shared Virtual Memory systems.


Anyway, there were two reasons for the post. First, if I've
been following the thread correctly most of the discussion
up to this point has involed issues at the cacheline level
and dont apply to a system built from Dolphin PCi cards.
Nor can one build such a system from those cards and
I felt compelled to clear up any potential confusion. My
second, prideful, reason was to justify the cost of those
DG machines!!! (and NUMA-Q's as they were very similar in
architecture).

take care, and please disregard if I misunderstood your
post or the thread...

john


-----Original Message-----
From: Jeff V. Merkey [mailto:jmerkey@vger.timpanogas.org]
Sent: Thursday, December 06, 2001 1:38 PM
To: David S. Miller
Cc: lm@bitmover.com; davidel@xmailserver.org; rusty@rustcorp.com.au;
Martin.Bligh@us.ibm.com; riel@conectiva.com.br; lars.spam@nocrew.org;
alan@lxorguk.ukuu.org.uk; hps@intermeta.de;
linux-kernel@vger.kernel.org; jmerkey@timpanogas.org
Subject: Re: SMP/cc Cluster description


On Thu, Dec 06, 2001 at 11:27:31AM -0700, Jeff V. Merkey wrote:

And also, if you download the SCI drivers in my area, and order
some SCI adapters from Dolphin in Albquerque, NM, you can set up 
a ccNUMA system with standard PCs.  Dolphin has 66Mhz versions (and
a 133Mhz coming in the future) that run at almost a gigabyte per 
second node-2-node over a parallel fabric.  The cross-sectional
SCI fabric bandwidth scales at (O)(2N) as you add nodes.  

If you want to play around with ccNUMA with Standard PCs, these 
cards are relatively inepxensive, and allow you to setup some 
powerful cc/SMP systems with explicit coherence.  The full 
ccNUMA boxes from DG are expensive, however.  That way, instead
of everyone talking about it, you guys could get some cool 
hardware and experiment with some of your rather forward 
looking and interesting ideas.

:-)

Jeff



> 
> 
> Guys,
> 
> I am the maintaner of SCI, the ccNUMA technology standard.  I know
> alot about this stuff, and have been involved with SCI since 
> 1994.  I work with it every day and the Dolphin guys on some huge 
> supercomputer accounts, like Los Alamos and Sandia Labs in NM.  
> I will tell you this from what I know.
> 
> A shared everything approach is a programmers dream come true,
> but you can forget getting reasonable fault tolerance with it.  The 
> shared memory zealots want everyone to believe ccNUMA is better 
> than sex, but it does not scale when compared to Shared-Nothing
> programming models.  There's also a lot of tough issues for dealing 
> with failed nodes, and how you recover when peoples memory is 
> all over the place across a nuch of machines.  
> 
> SCI scales better in ccNUMA and all NUMA technoogies scale very 
> well when they are used with "Explicit Coherence" instead of 
> "Implicit Coherence" which is what you get with SMP systems.  
> Years of research by Dr. Justin Rattner at Intel's High 
> performance labs demonstrated that shared nothing models scaled
> into the thousands of nodes, while all these shared everything
> "Super SMP" approaches hit the wall at 64 processors generally.
> 
> SCI is the fastest shared nothing interface out there, and it also
> can do ccNUMA.  Sequent, Sun, DG and a host of other NUMA providers
> use Dolphin's SCI technology and have for years.   ccNUMA is useful 
> for applications that still assume a shared nothing approach but that
> use the ccNUMA and NUMA capabilities for better optimization.
> 
> Forget trying to recreate the COMA architecture of Kendall-Square.  
> The name was truly descriptive of what happened in this architecture
> when a node fails -- goes into a "COMA".  This whole discussion I have
> lived through before and you will find that ccNUMA is virtually 
> unimplementable on most general purpose OSs.  And yes, there are 
> a lot of products and software out there, but when you look under 
> the cover (like ServerNet) you discover their coherence models 
> for the most part relay on push/pull explicit coherence models.
> 
> My 2 cents.
> 
> Jeff 
> 
> 
> 
> On Thu, Dec 06, 2001 at 12:09:32AM -0800, David S. Miller wrote:
> >    From: Larry McVoy <lm@bitmover.com>
> >    Date: Thu, 6 Dec 2001 00:02:16 -0800
> >    
> >    Err, Dave, that's *exactly* the point of the ccCluster stuff.  You
get
> >    all that seperation for every data structure for free.  Think about
> >    it a bit.  Aren't you going to feel a little bit stupid if you do all
> >    this work, one object at a time, and someone can come along and do
the
> >    whole OS in one swoop?  Yeah, I'm spouting crap, it isn't that easy,
> >    but it is much easier than the route you are taking.  
> > 
> > How does ccClusters avoid the file system namespace locking issues?
> > How do all the OS nodes see a consistent FS tree?
> > 
> > All the talk is about the "magic filesystem, thread it as much as you
> > want" and I'm telling you that is the fundamental problem, the
> > filesystem name space locking.
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel"
in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 75+ messages in thread
* SMP/cc Cluster description [was Linux/Pro]
  2001-12-04 23:37   ` Martin J. Bligh
@ 2001-12-05  0:36 Larry McVoy
  2001-12-04 23:31 ` Linux/Pro [was Re: Coding style - a non-issue] Rik van Riel
  1 sibling, 1 reply; 75+ messages in thread
From: Larry McVoy @ 2001-12-05  0:36 UTC (permalink / raw)
  To: Martin J. Bligh
  Cc: Rik van Riel, Lars Brinkhoff, Alan Cox, Larry McVoy, hps, linux-kernel

On Tue, Dec 04, 2001 at 03:37:37PM -0800, Martin J. Bligh wrote:
> >> > Premise 3: it is far easier to take a bunch of operating system images
> >> >    and make them share the parts they need to share (i.e., the page
> >> >    cache), than to take a single image and pry it apart so that it
> >> >    runs well on N processors.
> >> 
> >> Of course it's easier. But it seems like you're left with much more
> >> work to reiterate in each application you write to run on this thing.
> >> Do you want to do the work once in the kernel, or repeatedly in each
> >> application?
> > 
> > There seems to be a little misunderstanding here; from what
> > I gathered when talking to Larry, the idea behind ccClusters
> > is that they provide a single system image in a NUMA box, but
> > with separated operating system kernels.

Right except NUMA is orthogonal, ccClusters work fine on a regular SMP 
box.

> OK, then I've partially misunderstood this ... can people provide some 
> more reference material? Please email to me, and I'll collate the results
> back to the list (should save some traffic).

I'll try and type in a small explanation, I apologize in advance for the
bervity, I'm under a lot of pressure on the BK front these days...

The most recent set of slides are here:

    http://www.bitmover.com/ml/slide01.html

A couple of useful papers are at

    http://www.bitmover.com/llnl/smp.pdf
    http://www.bitmover.com/llnl/labs.pdf

The first explains why I think fine grained multi threading is a mistake
and the second is a paper I wrote to try and get LLNL to push for what
I called SMP clusters (which are not a cluster of SMPs, they are a 
cluster of operating system instances on a single SMP).

The basic idea is this: if you consider the usefulness of an SMP versus a
cluster, the main thing in favor of the SMP is

    all processes/processors can share the same memory at memory speeds.
    I typically describe this as "all processes can mmap the same data".
    A cluster loses here, even if it provides DSM over a high speed
    link, it isn't going to have 200 ns caches misses, it's orders of
    magnitude slower.  For a lot of MPI apps that doesn't matter, but
    there are apps for which high performance shared memory is required.

There are other issues like having a big fast bus, load balancing, etc.,
but the main thing is that you can share data quickly and coherently.
If you don't need that performance/coherency and you can afford to 
replicate the data, a traditional cluster is a *much* cheaper and 
easier answer.  Many problems, such as web server farms, are better
done on Beowulf style clusters than an SMP, they will actually scale
better.

OK, so suppose we focus on the SMP problem space.  It's a requirement
that all the processes on all the processors need to be able to access
memory coherently.  DSM and/or MPI isn't an answer for this problem 
space.

The traditional way to use an SMP is to take a single OS image and 
"thread" it such that all the CPUs can be in the OS at the same time.
Pretty much all the data structures need to get a lock and each CPU
takes the lock before it uses the data structure.  The limit of the
ratio of locks to cache lines is 1:1, i.e., each cache line will need
a lock in order to get 100% of the scaling on the system (yes, I know
this isn't quite true but it is close and you get the idea).

Go read the "smp.pdf" paper for my reasons on why this is a bad approach,
I'll assume for now you are willing to agree that it is for the purposes
of discussion.

If we want to get the most use out of big SMP boxes but we also want to
do the least amount of "damage" in the form of threading complexity in
the source base.  This is a "have your cake and eat it too" goal, one
that I think is eminently reachable.

So how I propose we do this is by booting multiple Linux images on
a single box.  Each OS image owns part of the machine, 1-4 CPUs, 0 or
more devices such as disk, ethernet, etc., part of memory.  In addition,
all OS images share, as a page cache, part of main memory, typically
the bulk of main memory.

The first thing to understand that the *only* way to share data is in
memory, in the globally shared page cache.  You do not share devices,
devices are proxied.  So if I want data from your disk or file system,
I ask you to put it in memory and then I mmap it.  In fact, you really
only share files and you only share them via mmap (yeah, read and write
as well but that's the uninteresting case).

This sharing gets complex because now we have more than one OS image
which is managing the same set of pages.  One could argue that the 
code complexity is just as bad as a fine grained multi threaded OS
image but that's simply incorrect.  I would hide almost 100% of this
code in a file system, with some generic changes (as few as possible)
in the VM system.  There are some changes in the process layer as well,
but we'll talk about them later.

If you're sitting here thinking about all the complexity involved in
sharing pages, it is really helpful to think about this in the following
way (note you would not actually implement it like this in the long
run but you could start this way):

Imagine that for any given file system there is one server OS image and N
client os images.  Imagine that for each client, there is a proxy process
running on behalf of the client on the server.  Sort of like NFS biods.
Each time the client OS wants to do an mmap() it asks the proxy to do
the mmap().  There are some corner cases but if you think about it, by
having the proxies do the mmaps, we *know* that all the server OS data
structures are correct.  As far as the server is concerned, the remote
OS clients are no different than the local proxy process.  This is from
the correctness point of view, not the performance point of view.

OK, so we've handled setting up the page tables, but we haven't handled
page faults or pageouts.  Let's punt on pageouts for the time being,
we can come back to that.  Let's figure out a pagefault path that will
give correct, albeit slow, behaviour.  Suppose that when the client faults
on a page, the client side file system sends a pagefault message to the
proxy, the proxy faults in the page, calls a new vtop() system call to
get the physical page, and passes that page descriptor back to the client
side.  The client side loads up the TLB & page tables and away we go.
Whoops, no we don't, because the remote OS could page out the page and
the client OS will get the wrong data (think about a TLB shootdown that
_didn't_ happen when it should have; bad bad bad).  Again, thinking 
just from the correctness point of view, suppose the proxy mlock()ed
the page into memory.  Now we know it is OK to load it up and use it.
This is why I said skip pageout for now, we're not going to do them 
to start with anyway.

OK, so start throwing stones at this.  Once we have a memory model that
works, I'll go through the process model.
-- 
---
Larry McVoy            	 lm at bitmover.com           http://www.bitmover.com/lm 

^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2001-12-10 16:00 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-07 19:14 SMP/cc Cluster description Dana Lacoste
2001-12-07 19:28 ` Larry McVoy
  -- strict thread matches above, loose matches on Subject: below --
2001-12-10 15:59 cardente, john
2001-12-06 22:20 cardente, john
2001-12-06 23:00 ` Jeff V. Merkey
2001-12-05  0:36 SMP/cc Cluster description [was Linux/Pro] Larry McVoy
2001-12-04 23:31 ` Linux/Pro [was Re: Coding style - a non-issue] Rik van Riel
2001-12-04 23:37   ` Martin J. Bligh
2001-12-05  2:36     ` SMP/cc Cluster description David S. Miller
2001-12-05  3:23       ` Larry McVoy
2001-12-05  8:12         ` Momchil Velikov
2001-12-06  2:52         ` Rusty Russell
2001-12-06  3:19           ` Davide Libenzi
2001-12-06 14:24             ` Rik van Riel
2001-12-06 17:28               ` Davide Libenzi
2001-12-06 17:52                 ` Rik van Riel
2001-12-06 18:10                   ` Davide Libenzi
2001-12-06  7:56           ` David S. Miller
2001-12-06  8:02             ` Larry McVoy
2001-12-06 19:42               ` Daniel Phillips
2001-12-06 19:53                 ` Larry McVoy
2001-12-06 20:10                   ` Daniel Phillips
2001-12-06 20:10                     ` Larry McVoy
2001-12-06 22:38                       ` Alan Cox
2001-12-06 22:32                         ` Larry McVoy
2001-12-06 22:48                           ` Alexander Viro
2001-12-06 22:55                           ` Alan Cox
2001-12-06 23:15                             ` Larry McVoy
2001-12-06 23:19                             ` David S. Miller
2001-12-06 23:32                               ` Larry McVoy
2001-12-06 23:47                               ` David S. Miller
2001-12-07  0:17                                 ` Larry McVoy
2001-12-07  2:37                                 ` David S. Miller
2001-12-07  2:43                                   ` Larry McVoy
2001-12-07  3:17                                     ` Martin J. Bligh
2001-12-07  2:59                                   ` David S. Miller
2001-12-06 20:15                     ` David S. Miller
2001-12-06 20:21                       ` Larry McVoy
2001-12-06 21:30                         ` Daniel Phillips
2001-12-06 22:37                         ` Alan Cox
2001-12-06 22:35                           ` Larry McVoy
2001-12-06 22:54                             ` Alan Cox
2001-12-07  2:34                               ` Larry McVoy
2001-12-07  2:50                               ` David S. Miller
2001-12-07  8:54                         ` Henning Schmiedehausen
2001-12-07 16:06                           ` Larry McVoy
2001-12-07 16:44                             ` Martin J. Bligh
2001-12-07 17:23                               ` Larry McVoy
2001-12-07 18:04                                 ` Martin J. Bligh
2001-12-07 18:23                                   ` Larry McVoy
2001-12-07 18:42                                     ` Martin J. Bligh
2001-12-07 18:48                                       ` Larry McVoy
2001-12-07 19:06                                         ` Martin J. Bligh
2001-12-07 19:00                                 ` Daniel Bergman
2001-12-07 19:07                                   ` Larry McVoy
2001-12-09  9:24                                   ` Pavel Machek
2001-12-06 21:02                       ` David S. Miller
2001-12-06 22:27                         ` Benjamin LaHaise
2001-12-06 22:59                           ` Alan Cox
2001-12-06 23:08                         ` David S. Miller
2001-12-06 23:26                           ` Larry McVoy
2001-12-07  2:49                             ` Adam Keys
2001-12-07  4:40                               ` Jeff Dike
2001-12-06  8:09             ` David S. Miller
2001-12-06 18:27               ` Jeff V. Merkey
2001-12-06 18:37                 ` Jeff V. Merkey
2001-12-06 18:36                   ` Martin J. Bligh
2001-12-06 18:45                     ` Jeff V. Merkey
2001-12-06 19:11                 ` Davide Libenzi
2001-12-06 19:34                   ` Jeff V. Merkey
2001-12-06 23:16                     ` David Lang
2001-12-07  2:56                       ` Jeff V. Merkey
2001-12-07  4:23                         ` David Lang
2001-12-07  5:45                           ` Jeff V. Merkey
2001-12-05  3:25       ` Davide Libenzi
2001-12-05  6:05       ` David S. Miller
2001-12-05  6:51         ` Jeff Merkey
2001-12-05  3:17     ` Stephen Satchell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome