[libvirt] libvirt to report cpuWait of a guest.
Daniel P. Berrange
berrange at redhat.com
Thu Dec 3 11:01:16 UTC 2015
On Thu, Dec 03, 2015 at 11:24:08AM +0200, Avi Weit wrote:
> Hi,
>
> We are working on fixing CPU utilization calculation of guests (VMs) in
> Ceilometer metering service of OpenStack.
>
> Per that fix, we retrieve, at the host level, se.statistics.wait_sum (or
> se.wait_sum in old versions) Linux kernel schedstat counter of the
> KVM/QEMU threads ? that represent the VM. That counter denotes the time in
> milliseconds the thread 'wants' to run (but not actually running because
> of a contention).
>
> However, as Daniel Berrange mentioned in the fix review, it would be
> better to retrieve that information from libvirt instead and he asked me
> to raise this in this mailing list.
>
> I could not notice that libvirt exposes such a counter.
>
> It would be very good if virDomainInfo (
> https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainInfo) can be
> added with cpuWait in addition to cpuTime it currently has so that cpuWait
> will denote the total *time* the VM *wants* to run.
>
> Adding cpuWait to any other location of domain is fine as well.
We can't modify the virDomainInfo struct becase that would be an ABI
incompatible change. Fortunately we have a better API that is extensible
that we can use - virDomainListGetStats() with the flag
VIR_DOMAIN_STATS_VCPU currently returns per-VCPU information - the
state (running or not) and the CPU time:
# virsh domstats --vcpu demo
Domain: 'demo'
vcpu.current=3
vcpu.maximum=3
vcpu.0.state=1
vcpu.0.time=107130000000
vcpu.1.state=1
vcpu.1.time=0
vcpu.2.state=1
vcpu.2.time=0
We could easily extend this to add vcpu.NNN.wait=XXXXX data of the kind
you request
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list