On 09/08/14 15:05, Francesco Romani wrote: > This patch implements the VIR_DOMAIN_STATS_CPU_TOTAL > group of statistics. > > Signed-off-by: Francesco Romani <[email protected]> > --- > include/libvirt/libvirt.h.in | 1 + > src/libvirt.c | 9 ++++++++ > src/qemu/qemu_driver.c | 51 > ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 61 insertions(+) > > diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in > index aced31c..e6ed803 100644 > --- a/include/libvirt/libvirt.h.in > +++ b/include/libvirt/libvirt.h.in > @@ -2511,6 +2511,7 @@ struct _virDomainStatsRecord { > > typedef enum { > VIR_DOMAIN_STATS_STATE = (1 << 0), /* return domain state */ > + VIR_DOMAIN_STATS_CPU_TOTAL = (1 << 1), /* return domain CPU info */ > } virDomainStatsTypes; > > typedef enum { > diff --git a/src/libvirt.c b/src/libvirt.c > index 4806535..4d504ff 100644 > --- a/src/libvirt.c > +++ b/src/libvirt.c > @@ -21554,6 +21554,15 @@ virConnectGetDomainCapabilities(virConnectPtr conn, > * "state.reason" - reason for entering given state, returned as int from > * virDomain*Reason enum corresponding to given state. > * > + * VIR_DOMAIN_STATS_CPU_TOTAL: Return CPU statistics and usage information. > + * The typed parameter keys are in this format: > + * "cpu.count" - number as unsigned int of physical cpus available to > + * this domain.
This is not really a VM property rather than a host property. I don't
think we should report this as it will be the same for all VMs on the host.
> + * "cpu.time" - total cpu time spent for this domain as unsigned long long.
> + * "cpu.user" - user cpu time spent as unsigned long long.
> + * "cpu.system" - system cpu time spent as unsigned long long.
> + *
> + *
> * Using 0 for @stats returns all stats groups supported by the given
> * hypervisor.
> *
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2950a4b..cfc5941 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -96,6 +96,7 @@
> #include "storage/storage_driver.h"
> #include "virhostdev.h"
> #include "domain_capabilities.h"
> +#include "vircgroup.h"
>
> #define VIR_FROM_THIS VIR_FROM_QEMU
>
> @@ -17338,6 +17339,55 @@ qemuDomainGetStatsState(virConnectPtr conn
> ATTRIBUTE_UNUSED,
> }
>
>
> +static int
> +qemuDomainGetStatsCpu(virConnectPtr conn ATTRIBUTE_UNUSED,
> + virDomainObjPtr dom,
> + virDomainStatsRecordPtr record,
> + int *maxparams,
> + unsigned int privflags ATTRIBUTE_UNUSED)
> +{
> + qemuDomainObjPrivatePtr priv = dom->privateData;
> + unsigned long long cpu_time = 0;
> + unsigned long long user_time = 0;
> + unsigned long long sys_time = 0;
> + int ncpus = 0;
> + int err;
> +
> + ncpus = nodeGetCPUCount();
As said, this is a host-wide value.
> + if (ncpus > 0 &&
> + virTypedParamsAddUInt(&record->params,
> + &record->nparams,
> + maxparams,
> + "cpu.count",
> + (unsigned int)ncpus) < 0)
> + return -1;
Otherwise looks reasonable.
Peter
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
