On Monday, April 04, 2011 3:02:19 PM Jeff Anderson wrote:
> Hello,
> 
> This question is frequently posed by those new to Linux: "Where has all
> my ram gone?!"
> 
> The answer is disk caching!
> 
> I'd like to do some testing where I'll be firing up about 7 virtual
> machines on my workstation. I'm using qemu+kvm, which does a good job
> about not grabbing ram until it is used. That way, I can fire up 7 VMs,
> each allowed to use up to 512 MB of ram. I'm still below my actual
> physical ram capacity of 4GB, but I'd like to still have use of any ram
> that I can on the host. As long as my VMs don't allocate any memory, I
> should be fine. The disk caching feature of Linux will guarantee that
> over time, with use, each VM will eventually make full use of the 512MB
> of ram.

The idea of virtualization is to give your VMs as much memory as you would 
like them to have. If your virtual server only needs about 100mb to run, 
then you give the VM 128 MB of ram, not 512. Otherwise, as you have 
mentioned, your host OS is going to eat up 512 MB one way or another.

> If I'm overlooking another feature of qemu-kvm that'd make my life
> easier, I'd love to know about it. I do believe that since each VM is
> running the same version of Linux, that kvm can do some shared memory
> magic, but I don't know if I have to explicitly request that feature.

The proper solution to your problem is the Memory Balloon driver. It is a 
fake driver that sits in your VM which, under memory crunch from the host, 
will begin to consume memory in your VM to give it back to the host. This 
sounds kind of weird, but it does exactly what you want. Let's say your VM 
has 512 MB of memory, but only using 100 MB for applications. The balloon 
driver, when signaled by the host, will begin to use up memory. Let's say it 
grows to 380 MB. In your VM, your memory usage will be 100 MB for system and 
apps, 380 MB for the balloon, with the remaining 32 MB for cache (ignore 
swap for now). But, what your hosts sees is a VM with 132 MB of memory being 
used. Tada!

The "shared memory magic" is called KSM which will merge similar pages 
together when using the same version of the OS for more than one VM. Let's 
say, in theory, you have two VMs that were created from the same template. 
Everything is the same, except for the configuration. Let's say each VM uses 
100MB at startup. KSM will begin to look for identical pages and merge them 
so that instead of using 200 MB for 2 VMs, you only use 120 MB for both: 80 
MB in common plus 20 MB of unique pages in each VM (80 + 2 * 20). If you 
fire up another VM just like the other two, your memory usage may only go up 
to 140 MB (80 + 3 * 20). This is all in theory of course, and your mileage 
will vary. (The same with the balloon driver).

I hope this helps.

-- 
Alberto Treviño
BYU Testing Center
Brigham Young University
[email protected]
--------------------
BYU Unix Users Group 
http://uug.byu.edu/ 

The opinions expressed in this message are the responsibility of their
author.  They are not endorsed by BYU, the BYU CS Department or BYU-UUG. 
___________________________________________________________________
List Info (unsubscribe here): http://uug.byu.edu/mailman/listinfo/uug-list

Reply via email to