[PATCH for 8.9.0] Document caveats of 'VIR_DOMAIN_STATS_VM' group of statistics

Jiri Denemark jdenemar at redhat.com
Tue Nov 1 10:50:32 UTC 2022


On Tue, Nov 01, 2022 at 11:28:11 +0100, Peter Krempa wrote:
> The original patches adding the functionality neglected to add any form
> of documentation for the stats fields returned for this group.
> 
> The stats are directly converted from qemu's 'query-stats(-schema)' QMP
> command without any further interpretation. The 'query-stats-schema' has
> the following disclaimer:
> 
>  Note: runtime-collected statistics and their names fall outside QEMU's usual
>        deprecation policies.  QEMU will try to keep the set of available data
>        stable, together with their names, but will not guarantee stability
>        at all costs; the same is true of providers that source statistics
>        externally, e.g. from Linux.  For example, if the same value is being
>        tracked with different names on different architectures or by different
>        providers, one of them might be renamed.  A statistic might go away if
>        an algorithm is changed or some code is removed; changing a default
>        might cause previously useful statistics to always report 0.  Such
>        changes, however, are expected to be rare.
> 
> Since libvirt is not doing any form of conversion of the stats we can't
> meaningfully document any of the returned fields. At the same time we
> can't even meaningfully provide any form of API stability for the filed
> names.
> 
> Modify the documentation for the 'VIR_DOMAIN_STATS_VM' group both in the
> API docs and in the virsh man page to reflect that and disclaim any form
> of stability guarantees we provide normally.
> 
> Fixes: 8c9e3dae142
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>  docs/manpages/virsh.rst      | 36 ++++++++++++++++++++++++++++++++++--
>  src/libvirt-domain.c         | 26 +++++++++++++++++++++++++-
>  tools/virsh-domain-monitor.c |  2 +-
>  3 files changed, 60 insertions(+), 4 deletions(-)
> 
> diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
> index 61fcb2e9ca..cb2dbaec18 100644
> --- a/docs/manpages/virsh.rst
> +++ b/docs/manpages/virsh.rst
> @@ -2297,7 +2297,7 @@ domstats
> 
>     domstats [--raw] [--enforce] [--backing] [--nowait] [--state]
>        [--cpu-total] [--balloon] [--vcpu] [--interface]
> -      [--block] [--perf] [--iothread] [--memory] [--dirtyrate]
> +      [--block] [--perf] [--iothread] [--memory] [--dirtyrate] [--vm]
>        [[--list-active] [--list-inactive]
>         [--list-persistent] [--list-transient] [--list-running]y
>         [--list-paused] [--list-shutoff] [--list-other]] | [domain ...]
> @@ -2317,7 +2317,7 @@ The individual statistics groups are selectable via specific flags. By
>  default all supported statistics groups are returned. Supported
>  statistics groups flags are: *--state*, *--cpu-total*, *--balloon*,
>  *--vcpu*, *--interface*, *--block*, *--perf*, *--iothread*, *--memory*,
> -*--dirtyrate*.
> +*--dirtyrate*, *--vm*.
> 
>  Note that - depending on the hypervisor type and version or the domain state
>  - not all of the following statistics may be returned.
> @@ -2533,6 +2533,38 @@ not available for statistical purposes.
>  * ``dirtyrate.vcpu.<num>.megabytes_per_second`` - the calculated memory dirty
>    rate for a virtual cpu in MiB/s
> 
> +*--vm* returns:
> +
> +The *--vm* option enables reporting of hypervisor-specific statistics. Naming
> +and meaning of the fields is entirely hypervisor dependant.

s/dependant/dependent/ :-) twice, as the second copy in libvirt_domain.c
contains the same typo

> +
> +The statistics in this group have following naming scheme:

s/following/the following/ (twice)

> +
> + ``vm.$NAME.$TYPE``
> +
> + ``$NAME``
> +   name of the statistics field provided by the hypervisor
> +
> + ``$TYPE``
> +   Type of the value. Following types are returned:

s/Following/The following/ (twice)

> +
> +   ``cur``
> +     current instant value
> +   ``sum``
> +     aggregate value
> +   ``max``
> +     peak value
> +
> + The returned value may be either an unsigned long long or a boolean.
> +
> + **WARNING**: The stats reported in this group are runtime-collected and
> + hypervisor originated, thus fall outside of the usual stable API
> + policies of libvirt.
> +
> + Libvirt can't guarantee that the statistics reported from the outside
> + source will be present in further versions of the hypervisor, or that
> + naming or meaning will stay consistent. Changes to existing fields,
> + however, are expected to be rare.
> 
>  Selecting a specific statistics groups doesn't guarantee that the
>  daemon supports the selected group of stats. Flag *--enforce*
> diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> index 52fa136186..4728ddd6ff 100644
> --- a/src/libvirt-domain.c
> +++ b/src/libvirt-domain.c

The three corrections mentioned above need to be applied here as well.

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>


More information about the libvir-list mailing list