[Beowulf] Clustering VPS servers

Mark Hahn hahn at mcmaster.ca
Wed Mar 20 22:36:57 PDT 2013

> AFAIK it is not possible do do with virtual machines and it would kinda
> defeat the object of virtualisation which is more for splitting up a
> physical machine into many smaller machines.

virtualization serves two purposes: isolation and overcommit.
isolation just means that the host OS uses HW-accelerated emulation
to pretend that the guest is running alone on a system.  overcommit
means that the host can provide more pretend hardware to guest(s)
than it actually has.  this is easy to do with CPU, since if the 
guest is idle, it won't know if you sell cycles to other guests.

so if you get a bunch of virtual servers that are not overcommitted,
you can certainly cluster them.  one has to ask why you're using 
virtualization, though.  and it probably wouldn't be good for anyting
that wasn't serial farming (or so embarassingly parallel as to be 
equivalent to serial farming...)

> The only system I really know anything about is ScaleMP. For this you

ScaleMP uses virt and MMU hardware to make pages from one machine 
appear on another machine.  there's a _long_ history of doing this 
in various forms in the academic literature.

if you have a thread that accesses a page which is not present on the 
host where it's running, you fetch it from whatever node currently 
has that page.  so it's a software-managed, page-granularity cache.
as with any cache, it'll suck if your code is not cache-friendly,
since fetching a remote page is going to run something like 5 us.
I've never managed to find micro-level performance numbers for ScaleMP,
unfortunately, so that number is a guess based on an IB round trip and
one page transmission time.

> require an infiniband network between all the hosts and a specialised bios
> and/or infiniband firmware to make it work.

software distributed virtual memory doesn't require anything special,
though pre-IB versions didn't have that much commercial impact...

in principle, if your code is quite cache-friendly, the scheme could 
be layered on plain old ethernet.  or even, just to confuse people, MPI :)

>> Combining each servers resources into one massive server.****

you can't speed up one process this way.  if you have multiple 
processes, clustering VPS on separate hardware could certainly work
to provide greater throughput.

>> asked some users that use my the provider that I am with which is
>> linode.com

from looking at linode plans, they don't provide dedicated cpus,
so you'll be clustering nodes that effectively have variable clock rates.
that may work for you, or might behave very poorly.

>> what would be the best way to start clustering these vps's together?

it doesn't matter.  you don't need any specific framework to cluster:
you could just spawn processes using ssh and nothing more.  one might 
normally add a scheduler, shared filesystem and monitoring, but there's
no cluster-qualification police afaik...

More information about the Beowulf mailing list