My Photo

Become a Fan

DailyMile

Google Ad Skyscraper

« Lock free data structures, good and bad | Main | Why you shouldn't overcommit memory on virtualized servers running Java »

August 12, 2009

Comments

Ryan de Laplante

Excellent post. I was thinking the same thing about Solaris Zones.

Jacques Talbot

This is the age-old argument whether an OS or an hypervisor (e.g.VM vs MVS)is the appropriate container to run multiple applications.
Actually, for Java, this makes little difference since you need multiple JVMs in both cases, because the multi-tasking JVM never really happened. The overcommiting issue is the same in both cases.
So I can't see how your memory argument makes a significant difference. Even with a decent multiapplications OS with the appropriate WLM algorithms (say AIX), you end-up with one JVM per application, and even per process.
So the pro-VMware argument seems to be: since anyway you need one JVM per app, at least, let's take a simple Linux and run one app/JVM per Linux per VM, instead of several app/JVM per AIX per VM.
The only memory overhead is the OS footprint which can end up being actually smaller that the JVM footprint.

What do you think?

John

"Thats a lot of memory and memory isn't cheap."

Interesting. So 15 boxes with 4GB of RAM each is cheaper than 2 boxes with 32GB of RAM each?

Good thing you don't work on my system admin team!

bnewport

Jacques,
given the os would be hosting the jvm, I can't see how it would take less memory than a native jvm or just a normal process running the jvm on a wpar etc. This is why I think best case scenario is that it matches the memory footprint of a conventional os running the jvms.

bnewport

John,
which system can I run more applications on from a memory point of view. The wpar/zone based system can because there is only one os footprint on it. A full hypervisor has advantages over a single os instance. Multiple os versions, virtual image isolation and so on. But if it is possible to just consolidate the applications rather than the full os and application, you will save more money.

Cameron Bromley

Solaris zones can and do share memory, though each zone doesn't know it, the root zone sees all the processes running on the box and does the normal solaris memory sharing. On top of that if all the zones are using a shared jvm (say from /usr/jdk/latest in the root zone) not only will the kernel memory for the jvm itself be shared across zones but also, I believe, the memory consumed by the java.lang classes (anything in rt.jar) using Class Data Sharing. So that's a huge saving and explains why it's not uncommon for a mid-range Solaris box to be running a hundred zones.

green tea

I know about Java. But I don't know about VMware. What is it ? Is it any kind of software or platform or framework ? If more information, post here.

The comments to this entry are closed.