From: "viets@work.de" <viets@work.de>
To: xen-devel@lists.xensource.com
Subject: RE: [PATCH] balloon: selfballooning and post memory info via xenbus,
Date: Fri, 16 May 2008 11:35:44 +0200 [thread overview]
Message-ID: <482D5570.4030701@work.de> (raw)
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@work.de
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
next reply other threads:[~2008-05-16 9:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-16 9:35 viets [this message]
2008-05-16 15:19 ` [PATCH] balloon: selfballooning and post memory info via xenbus, Dan Magenheimer
[not found] <482DACDF.3050103@work.de>
2008-05-16 16:23 ` Dan Magenheimer
2008-05-16 16:50 ` Torben Viets
2008-05-21 20:23 ` Dan Magenheimer
2008-05-21 21:52 ` Torben Viets
2008-06-30 14:25 ` viets
2008-06-30 16:04 ` Dan Magenheimer
2008-05-22 7:15 ` Chris Lalancette
2008-05-22 7:18 ` Keir Fraser
2008-05-22 17:31 ` Dan Magenheimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=482D5570.4030701@work.de \
--to=viets@work.de \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.