WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] [PATCH] balloon: selfballooning and post memory info via

To: "viets@xxxxxxx" <viets@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: RE: [Xen-devel] [PATCH] balloon: selfballooning and post memory info via xenbus,
From: "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx>
Date: Fri, 16 May 2008 09:19:31 -0600
Cc: "dan.magenheimer@xxxxxxxxxx" <dan.magenheimer@xxxxxxxxxx>
Delivery-date: Fri, 16 May 2008 08:20:15 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <482D5570.4030701@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Oracle Corporation
Reply-to: "dan.magenheimer@xxxxxxxxxx" <dan.magenheimer@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Aci3aDu0qWt5o6PITJWv75IId0jUCA==
> thanks for the patch, I was waiting for this feature.

Thanks very much for the testing and feedback!  Could you
comment on what you plan to use it for?  (Keir hasn't accepted
it yet, so I am looking for user support ;-)

First question: Do you have a swap (virtual) disk configured and,
if so, how big is it?  (Use "swapon -s" and the size shows in KB.)
Selfballooning shouldn't be run in a domain with no swap disk.
Also, how big is your "memory=" in your vm.cfg file?

I'm not able to reproduce your dd failure at all, even with
bs=2047M (dd doesn't permit larger values for bs).
Your program (I called it "mallocmem") does eventually fail for
me but not until i==88.  However, I have a 2GB swap disk configured.

I think both tests are really measuring the total virtual memory
space configured, e.g. the sum of physical memory (minus kernel
overhead) and configured swap space.  I think you will find that
both will fail similarly with ballooning off and even on a physical
system, just at different points in virtual memory usage.
Indeed, by adding additional output to mallocmem, I can see that
it fails exactly when it attempts to malloc memory larger than
the CommitLimit value in /proc/meminfo.  I expect the same is
true for the dd test.

Note that CommitLimit DOES go down when memory is ballooned-out
from a guest.  So your test does point out to me that I should
include a warning in the documentation not only that a swap disk
should be configured, but also that the swap disk should be
configured larger for a guest if selfballooning will be turned on.

Thanks,
Dan

> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx]On Behalf Of 
> viets@xxxxxxx
> Sent: Friday, May 16, 2008 3:36 AM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: RE: [Xen-devel] [PATCH] balloon: selfballooning and 
> post memory
> info via xenbus,
> 
> 
> Hello,
> 
> thanks for the patch, I was waiting for this feature.
> 
> I've tried this patch and I've seen that if I malloc a great 
> size of memory in time, this fails, but if I malloc a small 
> size first and then resize it slowly, it works.
> 
> this highly suffisticated (:p) program I use to test the ballooning:
> 
> #include <stdio.h>
> #include <unistd.h>
> 
> int main () {
>   void *v;
>   int i;
>   for(i=40; i < 50; ++i) {
>     v = malloc((i*32*1024*1024));
>     printf("%i\n", i);
>     if ( v != NULL) {
>       system("cat /proc/xen/balloon");
>       sleep(1);
>       free(v);
>     }
>   }
> }
> 
> same effect I've got if I change the blocksize in a dd:
> 
> works: dd if=zero of=/test.img count=1 bs=32M
> doesn't work: dd if=zero of=/test.img count=1 bs=256M
> 
> Don't know whether this is the right test for this...
> 
> greetings
> Torben Viets
> 
> 
> Dan Magenheimer wrote
> > OK, here's the promised patch.  The overall objective of the
> > patch is to enable limited memory load-balancing capabilities
> > as a step toward allowing limited memory overcommit.  With
> > this and some other minor hackery, I was able to run as
> > many as 15 lightly loaded 512MB domains on a 2GB system
> > (yes, veerrrryyy slooowwwlly).
> >
> > Review/comments appreciated.
> >
> > With this patch, balloon.c communicates (limited) useful
> > memory usage information via xenbus.  It also implements
> > "selfballooning" which applies the memory information
> > locally to immediately adjust the balloon, giving up memory
> > when it is not needed and asking for it back when it is needed,
> > implementing a first-come-first-served system-wide ballooning
> > "policy".  When a domain asks for memory but none is available,
> > it must use its own configured swap disk, resulting in
> > (potentially severe) performance degradation.  Naturally,
> > it is not recommended to turn on selfballooning in a domain
> > that has no swap disk or if performance is more important
> > than increasing the number of VMs runnable on a physical machine.
> >
> > A key assumption is that the Linux variable vm_committed_space
> > is a reasonable first approximation of memory needed by a domain.
> > This approximation will probably improve over time, but is
> > a good start for now.  The variable is bound on the lower end
> > by the recently submitted minimum_target() algorithm patch;
> > thus O-O-M conditions should not occur.
> >
> > The code is a bit complicated in a couple of places because of
> > race conditions involving xenstored startup relative to
> > turning on selfballooning locally.  Because the key variable
> > (vm_committed_space) is not exported by Linux, I implemented
> > a horrible hack which still allows the code to work in a
> > module, however I fully expect that this part of the patch
> > will not be accepted (which will limit the functionality to
> > pvm domains only... probably OK for now).
> >
> > Existing balloon functionality which is unchanged:
> > - Set target for VM from domain0
> > - Set target inside VM by writing to /proc/xen/balloon
> > Existing balloon info on xenbus which is unchanged:
> > - /local/domain/X/memory/target
> > To turn on selfballooning:
> > - Inside a VM: "echo 1 > /proc/xen/balloon"
> > - From domain0: "xenstore-write 
> /local/domain/X/memory/selfballoon 1"
> > To turn off selfballooning:
> > - Inside a VM: "echo 0 > /proc/xen/balloon"
> > - From domain0: "xenstore-write 
> /local/domain/X/memory/selfballoon 0"
> > New balloon info now on xenbus:
> > - /local/domain/X/memory/selfballoon [0 or 1]
> > - /local/domain/X/memory/actual [kB] *
> > - /local/domain/X/memory/minimum [kB] *
> > - /local/domain/X/memory/selftarget [kB] * (only valid if
> >   selfballoon==1)
> >  * writeable only by balloon driver in X when either
> >    selfballooning is first enabled, or target is changed
> >    by domain0
> >
> > Thanks,
> > Dan
> >
> > ===================================
> > Thanks... for the memory
> > I really could use more / My throughput's on the floor
> > The balloon is flat / My swap disk's fat / I've OOM's in store
> > Overcommitted so much
> > (with apologies to the late great Bob Hope)
> 
> --
> Torben Viets                              w               
> Viets@xxxxxxx
> n@work Internet Informationssysteme GmbH  o      
> http://support.work.de
> Wandalenweg 5                             r   Tel.: +49 40 23 
> 88 09 - 0
> D-20097 Hamburg                           k   Fax:  +49 40 23 
> 88 09 -29
> HR B 61 668  - Amtsgericht Hamburg                  Gf Jan Diegelmann
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>