
2009/12/8 Adam Litke <agl@us.ibm.com>:
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 while maximizing efficient use of host memory.
The design of such a communication channel was recently added to version 0.8.2 of the VirtIO Spec (See Appendix G): - http://ozlabs.org/~rusty/virtio-spec/virtio-spec-0.8.2.pdf
Host-side and guest-side implementations have been accepted for inclusion in their respective projects: - Guest: http://lkml.org/lkml/2009/11/30/274 - Host: http://lists.gnu.org/archive/html/qemu-devel/2009-12/msg00380.html
The following patch series implements a new libvirt interface to expose these memory statistics. Thank you for your review and comments.
[PATCH 1/6] domMemStats: Add domainMemStats method to struct _virDriver [PATCH 2/6] domMemStats: Add public symbol to libvirt API [PATCH 3/6] qemu-driver: Enable domainMemStats in the qemu driver [PATCH 4/6] remote-driver: Add domainMemStats support [PATCH 5/6] virsh: Enable virDomainMemStats as a new command [PATCH 6/6] python: Add python bindings for virDomainMemStats
Some general comments: - You should name it virDomainMemoryStats to stay in sync with the naming scheme. - The struct members are an exact copy of that what virtio provides, maybe we should see what different hypervisors can provide, discuss what the useful parts are and define a general superset. For example VMware ESX provides more/other memory statistics: http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ReferenceGuide/m... - You're missing descriptions (including context and meaning) and units for the members of the stats struct. Matthias