Re: [PATCH 16/19] src: add constants for domain stats 'memory.' parameters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 04, 2025 at 14:04:11 +0000, Daniel P. Berrangé wrote:
> Contrary to most APIs returning typed parameters, there are no constants
> defined for the domain stats data keys. This is was because many of the
> keys needs to be dynamically constructed using one or more array index
> values.
> 
> It is possible to define constants while still supporting dynamic
> array indexes by simply defining the prefixes and suffixes as constants.
> The consuming code can then combine the constants with array index
> value.
> 
> With this approach, it is practical to add constants for the domain stats
> API keys.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
> ---
>  include/libvirt/libvirt-domain.h | 92 ++++++++++++++++++++++++++++++++
>  src/libvirt-domain.c             | 19 +------
>  src/qemu/qemu_driver.c           | 37 +++++++++----
>  3 files changed, 120 insertions(+), 28 deletions(-)

[...]

> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 76e121144d..d48e79d5c6 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -16722,32 +16722,47 @@ qemuDomainGetStatsMemoryBandwidth(virQEMUDriver *driver,

[...]

>          for (j = 0; j < resdata[i]->nstats; j++) {
> -            virTypedParamListAddUInt(params, resdata[i]->stats[j]->id,
> -                                     "memory.bandwidth.monitor.%zu.node.%zu.id", i, j);
> -
> +            virTypedParamListAddUInt(
> +                params, resdata[i]->stats[j]->id,
> +                VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_PREFIX "%zu"
> +                VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_PREFIX "%zu"
> +                VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_ID, i, j);

formatting

>  
>              features = resdata[i]->stats[j]->features;
>              for (k = 0; features[k]; k++) {
>                  if (STREQ(features[k], "mbm_local_bytes")) {
>                      /* The accumulative data passing through local memory
>                       * controller is recorded with 64 bit counter. */
> -                    virTypedParamListAddULLong(params, resdata[i]->stats[j]->vals[k],
> -                                               "memory.bandwidth.monitor.%zu.node.%zu.bytes.local", i, j);
> +                    virTypedParamListAddULLong(
> +                        params, resdata[i]->stats[j]->vals[k],
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_PREFIX "%zu"
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_PREFIX "%zu"
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_BYTES_LOCAL, i, j);


...

>                  }
>  
>                  if (STREQ(features[k], "mbm_total_bytes")) {
>                      /* The accumulative data passing through local and remote
>                       * memory controller is recorded with 64 bit counter. */
> -                    virTypedParamListAddULLong(params, resdata[i]->stats[j]->vals[k],
> -                                               "memory.bandwidth.monitor.%zu.node.%zu.bytes.total", i, j);
> +                    virTypedParamListAddULLong(
> +                        params, resdata[i]->stats[j]->vals[k],
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_PREFIX "%zu"
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_PREFIX "%zu"
> +                        VIR_DOMAIN_STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_BYTES_TOTAL, i, j);

...


Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux