[libvirt] [PATCH 1/6] domMemStats: Add domainMemoryStats method to struct _virDriver
Matthias Bolte
matthias.bolte at googlemail.com
Wed Dec 16 23:39:35 UTC 2009
2009/12/11 Adam Litke <agl at us.ibm.com>:
> Set up the types for the domainMemoryStats function and insert it into the
> virDriver structure definition. Because of static initializers, update every
> driver and set the new field to NULL.
>
> Note: The changes in python/* are to fix compiler errors. The actual python
> binding is implemented in a later patch.
>
> Signed-off-by: Adam Litke <agl at us.ibm.com>
> To: libvirt list <libvir-list at redhat.com>
> ---
> include/libvirt/libvirt.h.in | 52 ++++++++++++++++++++++++++++++++++++++++++
> python/generator.py | 4 ++-
> src/driver.h | 7 +++++
> src/esx/esx_driver.c | 1 +
> src/lxc/lxc_driver.c | 1 +
> src/opennebula/one_driver.c | 1 +
> src/openvz/openvz_driver.c | 1 +
> src/phyp/phyp_driver.c | 1 +
> src/qemu/qemu_driver.c | 1 +
> src/remote/remote_driver.c | 1 +
> src/test/test_driver.c | 1 +
> src/uml/uml_driver.c | 1 +
> src/vbox/vbox_tmpl.c | 1 +
> src/xen/xen_driver.c | 1 +
> 14 files changed, 73 insertions(+), 1 deletions(-)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index f51a565..3416ed4 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -333,6 +333,55 @@ struct _virDomainInterfaceStats {
> */
> typedef virDomainInterfaceStatsStruct *virDomainInterfaceStatsPtr;
>
> +/**
> + * Memory Statistics Tags:
> + */
> +typedef enum {
> + /* The total amount of data read from swap space (in bytes). */
> + VIR_MEMSTAT_SWAP_IN = 0,
> + /* The total amount of memory written out to swap space (in bytes). */
> + VIR_MEMSTAT_SWAP_OUT = 1,
> +
> + /*
> + * Page faults occur when a process makes a valid access to virtual memory
> + * that is not available. When servicing the page fault, if disk IO is
> + * required, it is considered a major fault. If not, it is a minor fault.
> + * These are expressed as the number of faults that have occurred.
> + */
> + VIR_MEMSTAT_MAJOR_FAULT = 2,
> + VIR_MEMSTAT_MINOR_FAULT = 3,
> +
> + /*
> + * The amount of memory left completely unused by the system. Memory that
> + * is available but used for reclaimable caches should NOT be reported as
> + * free. This value is expressed in bytes.
> + */
> + VIR_MEMSTAT_MEM_FREE = 4,
> +
> + /*
> + * The total amount of usable memory as seen by the domain. This value
> + * may be less than the amount of memory assigned to the domain if a
> + * balloon driver is in use or if the guest OS does not initialize all
> + * assigned pages. This value is expressed in bytes.
> + */
> + VIR_MEMSTAT_MEM_TOTAL = 5,
> +
> + /*
> + * The number of statistics supported by this version of the interface.
> + * To add new statistics, add them to the enum and increase this value.
> + */
> + VIR_MEMSTAT_NR_TAGS = 6,
> +} virDomainMemoryStatTags;
IMHO the enum member names should follow the general naming scheme
(see src/conf/domain_conf.h for example)
VIR_DOMAIN_MEMORY_STAT_* instead of VIR_MEMSTAT_*
Maybe I'm nitpicking here, but I would rename
VIR_MEMSTAT_MEM_FREE to VIR_DOMAIN_MEMORY_STAT_UNUSED as in "unused by
the guest"
and
VIR_MEMSTAT_MEM_TOTAL to VIR_DOMAIN_MEMORY_STAT_AVAILABLE as in
"available to the guest"
IMHO 'available' is a better term here, because it reflects the fact
that it excludes the memory claimed by the balloon driver better.
> +typedef struct _virDomainMemoryStat virDomainMemoryStatStruct;
> +
> +struct _virDomainMemoryStat {
> + virDomainMemoryStatTags tag;
> + unsigned long long val;
> +};
> +
> +typedef virDomainMemoryStatStruct *virDomainMemoryStatPtr;
> +
>
> /* Domain migration flags. */
> typedef enum {
> @@ -633,6 +682,9 @@ int virDomainInterfaceStats (virDomainPtr dom,
> const char *path,
> virDomainInterfaceStatsPtr stats,
> size_t size);
> +int virDomainMemoryStats (virDomainPtr dom,
> + virDomainMemoryStatPtr stats,
> + unsigned int nr_stats);
Maybe an 'unsigned int flags' parameter should be added, even if its
unused now it may come in handy for future extensions.
Matthias
More information about the libvir-list
mailing list