On 04/30/2014 12:03 PM, Daniel P. Berrange wrote:
On Tue, Apr 29, 2014 at 08:54:26PM +0400, Roman Bogorodskiy wrote:
>
> Looks like FreeBSD does not support such kind of per-cpu reporting for
> host cpus. Just to make sure I didn't miss something, I asked that
> question of the FreeBSD virtualization maillist and looks like I'm right
> about that [1].
>
> Would it better to abandon this feature for now and wait when it'd be
> supported (I'm not sure if/when it's going to happen), or just leave the
> code that reports only the stats for all cpus?
I think it is better to leave it unsupported, so apps can see the
VIR_ERR_NO_SUPPORT error and not mistakenly interpret incorrect data.
The apps should check how many stat parameters are supported for a given pCPU
by calling virDomainGetCPUStats with nparams=0 and/or check the actual number
of stats returned.
Could we return valid results for total CPU stats (start_cpu = -1) and just
not return any for all other start_cpu values?
From the API documentation [1]:
* Typical use sequence is below.
*
* getting total stats: set start_cpu as -1, ncpus 1
* virDomainGetCPUStats(dom, NULL, 0, -1, 1, 0) => nparams
* params = calloc(nparams, sizeof(virTypedParameter))
* virDomainGetCPUStats(dom, params, nparams, -1, 1, 0) => total stats.
*
* getting per-cpu stats:
* virDomainGetCPUStats(dom, NULL, 0, 0, 0, 0) => ncpus
* virDomainGetCPUStats(dom, NULL, 0, 0, 1, 0) => nparams
* params = calloc(ncpus * nparams, sizeof(virTypedParameter))
* virDomainGetCPUStats(dom, params, nparams, 0, ncpus, 0) => per-cpu stats
Jan
[1]
http://libvirt.org/html/libvirt-libvirt.html#virDomainGetCPUStats