On 14/10/14 13:10, Michael S. Tsirkin wrote:
On Tue, Oct 14, 2014 at 10:14:05AM +1030, Rusty Russell wrote:
"Michael S. Tsirkin" <m...@redhat.com> writes:

On Mon, Oct 13, 2014 at 04:02:52PM +1030, Rusty Russell wrote:
"Denis V. Lunev" <d...@parallels.com> writes:
From: Raushaniya Maksudova <rmaksud...@parallels.com>

Excessive virtio_balloon inflation can cause invocation of OOM-killer,
when Linux is under severe memory pressure. Various mechanisms are
responsible for correct virtio_balloon memory management. Nevertheless
it is often the case that these control tools does not have enough time
to react on fast changing memory load. As a result OS runs out of memory
and invokes OOM-killer. The balancing of memory by use of the virtio
balloon should not cause the termination of processes while there are
pages in the balloon. Now there is no way for virtio balloon driver to
free some memory at the last moment before some process will be get
killed by OOM-killer.

This makes some amount of sense.

This reminds me of the balloon fs that Google once proposed.
This really needs to be controlled from host though.
At the moment host does not expect guest to deflate before
So as a minimum, add a feature bit for this.  what if you want a mix of
mandatory and optional balooning? I guess we can use multiple balloons,
is that the idea?

Trying to claw back some pages on OOM is almost certainly correct,
even if the host doesn't expect it.  It's roughly equivalent to not
giving up pages in the first place.

Well the difference is that there are management tools that
poll balloon in host until they see balloon size reaches
the expected value.

They don't expect balloon to shrink below num_pages and will respond in various
unexpected ways like e.g. killing the VM if it does.
Killing a userspace process within the guest might be better
for VM health.

Besides the fact that we always did it like this, these tools seem to have
basis in the spec.
Specifically, this is based on this text from the spec:
        the device asks for a certain amount of memory, and the driver
        supplies it (or withdraws it, if the device has more than it asks for).
        This allows the guest to adapt to changes in allowance of underlying
        physical memory.


        The device is driven by the receipt of a configuration change interrupt.

PS.  Yes, a real guest-driven balloon is preferable, but that's a much
      larger task.

Any objection to making the feature depend on a feature flag?

OK. I got the point. This sounds good for me. We will prepare patch for
kernel and proper bits (command line option) for QEMU.
Virtualization mailing list

Reply via email to