Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Is there any VM host software that supports a host-cluster, where it sums all (physical) RAMs to one big (virtual) RAM, and maps the many host-CPUs (in many PCs) to some (virtual) multi-core setup?

Example:

  • Hardware:
    • 5 PCs of 2gHz 512MB (connected via fast (GBit?) Ethernet switch)
  • Software:
    • that host system I'm asking about
  • Virtual Hardware:
    • 1 VM-hardware with 5 CPU-cores (each 2gHz) and 2.5GB (would be less because of overhead)
  • Virtual Machines eg.:
    • Ubuntu Karmic for desktop use (2gHz dual-core 1.5GB)
    • Ubuntu Server minimal for eg rendering or game server (2gHz triple-core 1GB)

As you see, one should be able to split the virtual hardware (sum of all hosts) onto one (or more) VM guests.

Then all hardware available on the nodes should be usable by the VMs, so eg 2 of these PCs have terminals (screen, keyboard, mouse, joystick, opengl-card,...), then they could log into one VM each, or if one PC has eg an USB stick, it could be attached do a VM.

Do you think this is possible? does it exist yet? if not, is it possible for a one-person-team to build it?

Best would be if there's a live disk, which does have only that system, and some control interface, and i boot it, then boot all the nodes via PXE, and it can be used to configure the VM's on the available hardware (maybe save setup and data on harddisk for later use)

share|improve this question

migrated from stackoverflow.com Feb 7 '10 at 21:20

This question came from our site for professional and enthusiast programmers.

    
it is related to computational models -- which is more appropriate to a computer scientist. What would a network administrator know about this ? –  Hassan Syed Feb 7 '10 at 15:42
    
Should also have searched ServerFault: serverfault.com/questions/106580/… –  Tobu Feb 7 '10 at 15:53
    
@pascal I agree that all the mention of hardware -- pxe and such indicate server management. However aggregating "CPU and RAM" in distributed programming is a job of a programmer. Also the words "build" have been used. The building work will be more of software than of physically putting together a cluster. –  Hassan Syed Feb 7 '10 at 16:54
    
@tobu the link on SF is entirely restricted to server management, and this post isn't. –  Hassan Syed Feb 7 '10 at 16:56
add comment

5 Answers 5

Short answer: No.

Long Answer: This probably won't ever become possible in the manner you're imagining. The problem, at its core, is that modern computers are fast because of high-speed data transfer between components in close proximity. Once those components start spreading out over great distances (compare the distance between a CPU and RAM chips with the distance between a CPU in one server and RAM chips in a server in the next room), everything slows down to a crawl.

So the dream scenario - Where you can have a VM running across multiple hosts which contribute to an aggregate resource pool - is very unlikely to ever occur. While long-distance data transfer speeds will improve over time, close-proximity data transfer will also improving and will (probably) always stay ahead.

That said, here's the closest things that are available, today, to your idea:

  • Distributed Computing & Beowulf Clusters: http://en.wikipedia.org/wiki/Distributed_Computing . These can spread a single software application across multiple servers. The down-side is the application must be specifically written for this architecture, and only certain kinds of application are really suitable.

  • VMWare Fault Tolerance: http://www.vmware.com/products/fault-tolerance/ . This allows a virtual machine to be run simultaneously on multiple host servers, in lockstep. While this doesn't double the available resources, it does mean that the loss of one of the hosts will not interrupt the operation of the server.

share|improve this answer
    
Chris - Good answer but you are confusing VMware High Availability with VMware Fault Tolerance. HA restarts VM's by rebooting them on an alternate host in a cluster if the original host running the VM has failed. FT runs multiple instances of a VM in lockstep on different hosts and seemlessly fails over to a secondary instance if the primary fails. HA is a pre-requisite for FT but they are not the same. –  Helvick Feb 8 '10 at 9:29
    
Argh thanks. Can you tell I'm no vcp? ;) –  Chris Thorpe Feb 8 '10 at 18:52
add comment

These things exist but it's not "magic" -- what you are suggesting will probably never be feasible.You can turn multiple machines into single a logical computer for a specific task in this case you would be building a cluster. This mostly involves task partitioning for your domain -- there are automatic process migration technologies -- but again this is not magic.

In the general case, you may way to start by looking into beowulf clusters for computation. Or Nosql clusters exist for clustered data storage.

There are "NUMA" style supercomputer architectures but these still aren't magic. The physical hardware and the cpus are aware that they exist on a single machine logically. these machines aren't built up of heterogeneous computers.

Just to indicate some of the requirements (this is just so you can begin Googleing):

  1. A memory adress space that spans the network.
  2. A lock co-ordinator that spans the network.
  3. Virtual HCI device emulators that span the network.
  4. A Virtual bus for all the CPU's to use as a FSB (or some numa variation)
  5. A network based cache-coherency protocol.

What is the biggest problem you might ask ? A standard network is orders upon orders slower than the buses between cpu's and cpu-memory.

share|improve this answer
add comment

It's not really feasible. The memory being pooled in that manner means that the kernel will be stored on another machine, which means that there will be constant network traffic just for the context switches, which means that no user traffic will ever be able to get through. Better to treat each machine separately and share only data where absolutely required.

share|improve this answer
add comment

Well it's possible and actually really easy to do and you can do much more but you will have to pay for it since now there is no open alternative to RHEV platform. But I believe that in future RH will decide to drop the windows management platform and will opensource the new project for another more open. Also I believe it's possible to build such solution but not in one person.

share|improve this answer
    
RHEV or VMWare - this is NOT possible without a computational cluster. RHEV is a good virtualization platform, but it cannot aggregate host resources, in fact no virtualization solution can –  dyasny Feb 8 '10 at 14:45
    
Reading that made my brain hurt –  Sam Feb 8 '10 at 15:59
    
@dyasny Can you elaborate what cannot be aggregated?.You just install hypervisor on your 'slow hosts' and if you want you can make all of their resources appear as one in your pool and make one machine. And not talking about just CPU, RAM but thanks to spice protocol you can also use your opengl, sound, usb etc. –  fuo Feb 9 '10 at 0:04
    
You can allocate resources to the VMs according to what the hosts are capable of, plus the possible overcommits. That means that if you have two hosts with 16 CPU cores each, it is OK to set up a VM with 16 cores, but definitely a bad idea to set up a VM with 32 cores. <br> In short - you cannot summarize the hosts' properties when allocating resources, you have to go host by host, and count accordingly –  dyasny Feb 9 '10 at 9:35
add comment

have you look into Real Application Cluster (RAC). An Oracle product can do it on database servers for twenty years. VMware is trying to do it with Microsoft Cluster Services but more like high availability solution not CPU/Memory aggregation. This type cluster needs intensive inter-host communication to share memory and lock/unlock shared resources so even we can use existing cluserware/ services from Oracle your application will fail to share memory cross physical servers. No application environments/developers are good enough to write such apps. One of Turing award winner at UK developed a language for it 20+ years ago but its implementation never succeed in industry.

share|improve this answer
    
Application-specific solutions like these are far easier to create than doing it with an actual operating-system. And it is OS that the original questioner was asking about 4 years ago. –  sysadmin1138 May 5 at 18:37
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.