[PATCH 0/9] VMware balloon: Large page ballooning and VMCI support

Philip P. Moltmann
2015-04-14T17:29:59Z

The VMware balloon driver optimizes the memory reclamation when Linux
runs in a VM of a VMware hypervisor (such as ESXi, VMware Workstation,
or VMware Fusion). The hypervisor signals the balloon driver how much
memory to reclaim. The balloon driver allocates this amount of memory
via regular Linux allocation mechanisms. As the memory appears to be
used by the driver linux does not touch it and the hypervisor can unmap
it and give the memory to a different VM. This is not different from
any other balloon driver.

This series of patches improves the balloon drivers performance,
latency, and reduces the overhead to reclaim memory. All of this is done
while staying backwards compatible with all ever shipping versions of
VMware's hypervisors.

There are three main improvements:
- The balloon driver and hypervisor communicate about the capabilities
of each other during balloon load.
- Instead of inflating the memory a single 4 KB page at a time, the
balloon allocates a whole list of pages and hands it off to the
hypervisor at once.
- We can now allocate 2 MB and 4 KB pages which further reduces the
overhead and increases the performance
- If there is an demand to reclaim memory the hypervisor signals the
balloon driver via VMCI that there is something to do. Before the
balloon driver polled ever second.