Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Possible Duplicate:
Can a single Virtual Core on a VM use more then 1 physical core?

I'm a co-owner of a Minecraft server that is getting rather large each day, but as we get bigger we're running into the limits of Minecraft and the way it's coded. The game isn't coded to use multiple cores, instead it only uses one core. So talking with a friend he suggested seeing if it was possible to have a virtual machine only have one virtual core yet use three of the four cores on the host machine. I've done some research and can't seem to find any answers. It doesn't matter if the host operating system is Windows or Linux, I'm just curious as to if it can be done.

If it can be done or is done automatically, can you provide links so that I can read upon this and learn more... I am new to virtual machines so go easy.

share|improve this question

marked as duplicate by Shane Madden, Iain, Chris S, MikeyB, Steven Monday Oct 17 '11 at 16:14

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I have a great amount of sympathy for minecraft admins, i used to be one myself... its a hard job, every update notch makes causes every mod to break, worlds to be abandoned and often ban lists get lost in the process too! – Silverfire Oct 17 '11 at 6:16
I think you should research on the basic workings of programs - namely parallelization. If it's hard for developers to do, it's impossible for programs to do automatically. – Mircea Chirea Oct 17 '11 at 13:58
up vote 9 down vote accepted

As of today all answer seem to be correct: No way to do it.

I would like to add some meat to those statements:

Wikipedia on "automatic parallelization".

Automatic parallelization would be the process to take a given serial algorithm and try to find command sequences that could be executed in parallel, then scheduling and dispatching those sequences to the available (hardware: cpu) resources, and then joining the outcome (=data) back for further processing.

The problem not only is in finding sequences that do not depend on each other and are therefore able to being worked on in parallel. But also the communication overhead may become prohibitive. Think about your particular problem where the one Minecraft world is going to be split in some way onto the different cpus: If you split the world geometrically, lets say in := 9 blocks, then at the borders the individual sub worlds need to exchange any world modifications or movements of inhabitants.

While the above is a typical "divide-and-conquer" approach, and geometrical split-up of a problem is a widespread solution to parallelization, it is normally handcoded, making use of the knowledge the problem designer - in this case - the game developer has.

Your proposed idea would involve some automation of an algorithm that is completely unknown, because the virtual "hyper" server has no way of knowing how Minecraft internally behaves. So the only angle to this problem is the executed assembly code. At this low a level it is very hard - and currently seems to be impossible - to come up with a solution that has any merit.

Google can search for scientific publications these days. And if you're really interested I'd look at the publications on related conferences. Organizations such as the IEEE and the ACM may be good starting points for that.

share|improve this answer
Thanks for explaining it, makes sense now. – graywolf336 Oct 17 '11 at 21:47

Nine women are unable to produce a baby in one month. Sorry, at least for now it's impossible to glue CPUs together in VM environment. But that's an interesting idea!

share|improve this answer
+1 great and funny analogy! – nalply Oct 17 '11 at 7:40
However, nine woman are able to produce a baby each month, pipe-lining ftw :). – Sverre Rabbelier Oct 17 '11 at 15:19
@SverreRabbelier Collectively they're still taking 81 months to produce 9 babies. It doesn't matter if they're working in parallel or serial. – Chris S Oct 17 '11 at 15:23
@Chris S: True, but they're getting that 81 months worth of work done in 18. – afrazier Oct 17 '11 at 16:14
What about multiple births? Would that be like multiprocessing? – John Gardeniers Oct 17 '11 at 20:39

No. Point. You can not magically make a super core out of physical cores. Hyper-Visors can not reqire your core.

share|improve this answer

No, there is no hypervisor (at least that I'm aware of) which can f.e. take two 2-GHz CPUs and create a virtual 4-Ghz CPU out of them.

share|improve this answer


share|improve this answer
-1 for absolutely 0 effort put into your answer. At least try to explain why – TheLQ Oct 17 '11 at 16:37
@TheLQ A low effort answer for a low effort question. – MDMarra Oct 17 '11 at 16:40
How is the question low effort? Its reasonably asked, reasonably detailed, and even asks for other documentation if possible. – TheLQ Oct 17 '11 at 16:50
@TheLQ Agree to disagree. 4 people +1'd my answer and only 1 -1'd it. Comments aren't the place to discuss it, though. I'm frequently in Server Fault Chat if you ever feel like discussing it further. – MDMarra Oct 17 '11 at 16:53
Sometimes a yes or no is all that's required. This is one of those times. – John Gardeniers Oct 17 '11 at 23:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.