[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Hi Viets --

I'm cleaning up a scripts-only version (no balloon driver changes)
this week for submission to xen-devel before the 3.3 functionality
freeze.

For more info, see:

http://www.xen.org/files/xensummitboston08/MemoryOvercommit-XenSummit2008.pdf

http://wiki.xensource.com/xenwiki/Open_Topics_For_Discussion?action=AttachFile&do=get&target=Memory+Overcommit.pdf

Thanks,
Dan

> -----Original Message-----
> From: viets@xxxxxxx [mailto:viets@xxxxxxx]
> Sent: Monday, June 30, 2008 8:25 AM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx; dan.magenheimer@xxxxxxxxxx
> Subject: Re: [Xen-devel] [PATCH] balloon: selfballooning and 
> post memory
> info via xenbus,
> 
> 
> Hello,
> 
> are there any plans to bring this feature in the xen kernel?
> 
> Possible as an expermental marked feature?
> 
> I use it about 1 month without any trouble on live systems.
> 
> greetings
> Viets
> 
> Viets wrote:
> > hey,
> >
> > thanks for the tip, I've already memory hotplug activated. 
> Now it works
> > fine with 7 domains, but no one uses more than 256MB... I'd 
> like to test
> > the ballooning with more than 2GB memory but at the moment 
> I'ven't  a
> > live machine which  needs so much memory...
> >
> > but with maxmen and hotplug, this defines the maximum or?
> >
> > greetings
> > Torben Viets
> >
> > Dan Magenheimer wrote:
> >>>> memory = 256
> >>>> maxmem = 8192
> >>>>
> >>
> >> By the way, I'm not sure if you knew this, but the above two
> >> lines don't work as you might want.  The maxmem is ignored.
> >> The domain is launched (in this example) with 256MB of
> >> memory and (at least without hot-plug memory support in the
> >> guest) memory can only be decreased from there, not increased.
> >>
> >> So to run a guest which adjusts between 256MB and 8192MB
> >> of memory, you must launch it with 8192MB and balloon it
> >> down to 256MB.  If Xen does not have 8192MB free at
> >> launch, launching the domain will fail.
> >>
> >> Dan
> >>
> >>
> >>> -----Original Message-----
> >>> From: Torben Viets [mailto:viets@xxxxxxx]
> >>> Sent: Friday, May 16, 2008 10:51 AM
> >>> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> >>> Cc: dan.magenheimer@xxxxxxxxxx
> >>> Subject: Re: [Xen-devel] [PATCH] balloon: selfballooning 
> and post memory
> >>> info via xenbus,
> >>>
> >>>
> >>> Dan Magenheimer wrote:
> >>>
> >>>> (Your reply came to me but not to the list... not sure why.
> >>>> So I've attached your full reply below.)
> >>>>
> >>>>
> >>> thanks, hope this time it works....
> >>>
> >>>>> ah ok, that is my failure, I need a bigger swapdisk ;)
> >>>>>
> >>>>>
> >>>> Yes, definitely.  If you are creating the swapdisk on an ext3
> >>>> filesystem, you might try using sparse files.  They won't
> >>>> take up much disk space unless/until they get swapped-to.
> >>>> There might be some performance ramifications though.
> >>>> (My testing has been with swap disk as a logical volume
> >>>> so I can't try sparse.)
> >>>>
> >>>>
> >>>>
> >>>>> Ok, our plan is to have a high availbilty xen farm. Now we're
> >>>>> beginning
> >>>>> with 2 Suns X2200, each has 16GB RAM. The idea, why we 
> like to use
> >>>>> selfballooning, because of peak traffic on a server,
> >>> normal a server
> >>>
> >>>>> needs about 256MB, but when it needs more, it shouldn't be a
> >>>>> problem to
> >>>>> give it 4GB. The idea is not to overbook the memory, 
> but have the
> >>>>> ability to get rid of memory failures because of peaks.
> >>>>>
> >>>>>
> >>>> Exactly what it is intended for!
> >>>>
> >>>> I'd be interested in how it works for guests with memory=4096
> >>>> and higher.  All of my testing so far has been on a machine with
> >>>> only 2GB of physical memory so I can test lots of guests but
> >>>> no large guests.
> >>>>
> >>>>
> >>> I'll test it on monday, now I'm going into my weekend ;) 
> but I think,
> >>> that I wasn't able to get more than 2GB RAM allocated, 
> but I will test
> >>> it on monday again.
> >>>
> >>> PS: In my first mail I've attached my whole signatur, I remove it
> >>> because I get enough spam ;)
> >>>
> >>> Thanks
> >>> Torben Viets
> >>>
> >>>> Thanks,
> >>>> Dan
> >>>>
> >>>>
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: viets@xxxxxxx [mailto:viets@xxxxxxx]
> >>>>> Sent: Friday, May 16, 2008 9:49 AM
> >>>>> To: dan.magenheimer@xxxxxxxxxx;
> >>> xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> >>>
> >>>>> Subject: Re: [Xen-devel] [PATCH] balloon: selfballooning and
> >>>>> post memory
> >>>>> info via xenbus,
> >>>>>
> >>>>>
> >>>>> Dan Magenheimer wrote:
> >>>>>
> >>>>>
> >>>>>>> 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 ;-)
> >>>>>>
> >>>>>>
> >>>>> Ok, our plan is to have a high availbilty xen farm. Now we're
> >>>>> beginning
> >>>>> with 2 Suns X2200, each has 16GB RAM. The idea, why we 
> like to use
> >>>>> selfballooning, because of peak traffic on a server,
> >>> normal a server
> >>>
> >>>>> needs about 256MB, but when it needs more, it shouldn't be a
> >>>>> problem to
> >>>>> give it 4GB. The idea is not to overbook the memory, 
> but have the
> >>>>> ability to get rid of memory failures because of peaks.
> >>>>>
> >>>>>
> >>>>>
> >>>>>> 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?
> >>>>>>
> >>>>>>
> >>>>> #kernel = "/boot/xen-3.2.0/vmlinuz-2.6.18.8-xenU"
> >>>>> #kernel = "/boot/vmlinuz-2.6.18.8-xenU"
> >>>>> kernel = "/boot/vmlinuz-selfballooning"
> >>>>> memory = 256
> >>>>> maxmem = 8192
> >>>>> vcpu = 4
> >>>>> name = "test.work.de"
> >>>>> vif = [ 'bridge=xenvlan323' ]
> >>>>> disk = [ 'phy:/dev/sda,hda,w', 'file:/var/swap.img,hdb,w' ]
> >>>>> root = "/dev/hda ro"
> >>>>> extra = 'xencons=tty'
> >>>>>
> >>>>>
> >>>>>
> >>>>> swap_size = 256M
> >>>>>
> >>>>>
> >>>>>
> >>>>>> 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.
> >>>
> >>>>> ah ok, that is my failure, I need a bigger swapdisk ;)
> >>>>>
> >>>>>
> >>>>>> 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)
> >>>>>>>>
> >>>>>>>>
> >>>>>>> --
> >>>>>>>
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> 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
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >> _______________________________________________
> >> 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
> >
>


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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.