From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Dmitry Torokhov <dtor@vmware.com>,
linux-kernel@vger.kernel.org, pv-drivers@vmware.com,
Avi Kivity <avi@redhat.com>,
Dan Magenheimer <dan.magenheimer@oracle.com>
Subject: Re: [PATCH] VMware Balloon driver
Date: Mon, 05 Apr 2010 15:03:08 -0700 [thread overview]
Message-ID: <4BBA5E1C.10706@goop.org> (raw)
In-Reply-To: <20100405142419.2c9bea3d.akpm@linux-foundation.org>
On 04/05/2010 02:24 PM, Andrew Morton wrote:
> I think I've forgotten what balloon drivers do. Are they as nasty a
> hack as I remember believing them to be?
>
(I haven't looked at Dmitry's patch yet, so this is from the Xen
perspective.)
In the simplest form, they just look like a driver which allocates a
pile of pages, and the underlying memory gets returned to the
hypervisor. When you want the memory back, it reattaches memory to the
pageframes and releases the memory back to the kernel. This allows a
virtual machine to shrink with respect to its original size.
Going the other way - expanding beyond the memory allocation - is a bit
trickier because you need to get some new page structures from
somewhere. We don't do this in Xen yet, but I've done some experiments
with hotplug memory to implement this. Or a simpler approach is to fake
up some reserved E820 ranges to grow into.
> A summary of what this code sets out to do, and how it does it would be
> useful.
>
> Also please explain the applicability of this driver. Will xen use it?
> kvm? Out-of-tree code?
>
The basic idea of the driver is to allow a guest system to give up
memory it isn't using so it can be reused by other virtual machines (or
the host itself).
Xen and KVM already have equivalents in the kernel. Now that I've had a
quick look at Dmitry's patch, it's certainly along the same lines as the
Xen code, but it isn't clear to me how much code they could end up
sharing. There's a couple of similar-looking loops, but the bulk of the
code appears to be VMware specific.
One area that would be very useful as common code would be some kind of
policy engine to drive the balloon driver. That is, something that can
look at the VM's state and say "we really have a couple hundred MB of
excess memory we could happily give back to the host". And - very
important - "don't go below X MB, because then we'll die in a flaming
swap storm".
At the moment this is driven by vendor-specific tools with heuristics of
varying degrees of sophistication (which could be as simple as
absolutely manual control). The problem has two sides because there's
the decision made by guests on how much memory they can afford to give
up, and also on the host side who knows what the system-wide memory
pressures are. And it can be affected by hypervisor-specific features,
such as whether pages can be transparently shared between domains,
demand-faulted from swap, etc.
And Dan Magenheimer is playing with a more fine-grained mechanism where
a guest kernel can draw on spare host memory without actually committing
that memory to the guest, which allows memory to be reallocated on the
fly with more fluidity.
> The code implements a user-visible API (in /proc, at least). Please
> fully describe the proposed interface(s) in the changelog so we can
> review and understand that proposal.
>
It seems to me that sysfs would be a better match. It would be nice to
try and avoid gratuitous differences.
>> ...
>>
>> +static bool vmballoon_send_start(struct vmballoon *b)
>> +{
>> + unsigned long status, dummy;
>> +
>> + STATS_INC(b->stats.start);
>> +
>> + status = VMWARE_BALLOON_CMD(START, VMW_BALLOON_PROTOCOL_VERSION, dummy);
>> + if (status == VMW_BALLOON_SUCCESS)
>> + return true;
>> +
>> + pr_debug("%s - failed, hv returns %ld\n", __func__, status);
>>
> The code refers to something called "hv". I suspect that's stale?
>
hv = hypervisor
J
next prev parent reply other threads:[~2010-04-05 22:03 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-04 21:52 [PATCH] VMware Balloon driver Dmitry Torokhov
2010-04-05 21:24 ` Andrew Morton
2010-04-05 22:03 ` Jeremy Fitzhardinge [this message]
2010-04-05 22:17 ` Andrew Morton
2010-04-05 22:26 ` Avi Kivity
2010-04-05 22:40 ` Andrew Morton
2010-04-05 23:01 ` Dmitry Torokhov
2010-04-05 23:03 ` Dan Magenheimer
2010-04-05 23:11 ` Andrew Morton
2010-04-05 23:28 ` Dmitry Torokhov
2010-04-06 16:28 ` Avi Kivity
2010-04-05 23:28 ` Jeremy Fitzhardinge
2010-04-05 23:34 ` Andrew Morton
2010-04-06 0:26 ` Dan Magenheimer
2010-04-06 16:30 ` Avi Kivity
2010-04-06 17:27 ` Dan Magenheimer
2010-04-06 23:20 ` Dave Hansen
2010-04-05 22:58 ` Dmitry Torokhov
2010-04-06 16:32 ` Avi Kivity
2010-04-06 17:06 ` Dmitry Torokhov
2010-04-06 17:42 ` Avi Kivity
2010-04-06 18:25 ` Jeremy Fitzhardinge
2010-04-06 18:36 ` Avi Kivity
2010-04-06 19:18 ` Jeremy Fitzhardinge
2010-04-08 5:30 ` Pavel Machek
2010-04-08 7:18 ` Avi Kivity
2010-04-08 17:01 ` Jeremy Fitzhardinge
2010-04-15 21:00 ` [PATCH v2] " Dmitry Torokhov
2010-04-21 19:59 ` Dmitry Torokhov
2010-04-21 20:18 ` Andrew Morton
2010-04-21 20:52 ` Dmitry Torokhov
2010-04-21 21:13 ` Andrew Morton
2010-04-22 0:09 ` Dmitry Torokhov
2010-04-21 23:54 ` Andrew Morton
2010-04-22 0:00 ` Dmitry Torokhov
2010-04-22 1:02 ` [Pv-drivers] " Dmitry Torokhov
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=4BBA5E1C.10706@goop.org \
--to=jeremy@goop.org \
--cc=akpm@linux-foundation.org \
--cc=avi@redhat.com \
--cc=dan.magenheimer@oracle.com \
--cc=dtor@vmware.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pv-drivers@vmware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox