[libvirt] [PATCHv3 2/8] qemu: bulk stats: implement CPU stats group
Peter Krempa
pkrempa at redhat.com
Tue Sep 9 11:50:25 UTC 2014
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 <fromani at redhat.com>
> ---
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140909/e9cec205/attachment-0001.sig>
More information about the libvir-list
mailing list