virtio: Add memory statistics reporting to the balloon driver (V4)
authorAdam Litke <agl@us.ibm.com>
Mon, 30 Nov 2009 16:14:15 +0000 (10:14 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 24 Feb 2010 03:52:08 +0000 (14:22 +1030)
commit9564e138b1f6eb137f7149772438d3f3fb3277dd
tree2e53562c2b7ab7051d448b8f81766dc61ad524b5
parent1f08b833ddbdb1c8e81c4b1053c2ebb7b89cb437
virtio: Add memory statistics reporting to the balloon driver (V4)

Changes since V3:
 - Do not do endian conversions as they will be done in the host
 - Report stats that reference a quantity of memory in bytes
 - Minor coding style updates

Changes since V2:
 - Increase stat field size to 64 bits
 - Report all sizes in kb (not pages)
 - Drop anon_pages stat and fix endianness conversion

Changes since V1:
 - Use a virtqueue instead of the device config space

When using ballooning to manage overcommitted memory on a host, a system for
guests to communicate their memory usage to the host can provide information
that will minimize the impact of ballooning on the guests.  The current method
employs a daemon running in each guest that communicates memory statistics to a
host daemon at a specified time interval.  The host daemon aggregates this
information and inflates and/or deflates balloons according to the level of
host memory pressure.  This approach is effective but overly complex since a
daemon must be installed inside each guest and coordinated to communicate with
the host.  A simpler approach is to collect memory statistics in the virtio
balloon driver and communicate them directly to the hypervisor.

This patch enables the guest-side support by adding stats collection and
reporting to the virtio balloon driver.

Signed-off-by: Adam Litke <agl@us.ibm.com>
Cc: Anthony Liguori <anthony@codemonkey.ws>
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (minor fixes)
drivers/virtio/virtio_balloon.c
include/linux/virtio_balloon.h