Hi,
Thank you, it sounds good. Can you please
let me know how Openstack Ceilometer will access that wait counter (vcpu.NNN.wait)?
To my understanding Openstack uses libvirt python library to access domain
data.
Regards,
- Avi Weit
"Daniel P. Berrange" <berrange@redhat.com>
wrote on 03/12/2015 01:01:16 PM:
> From: "Daniel P. Berrange" <berrange@redhat.com>
> To: Avi Weit/Haifa/IBM@IBMIL
> Cc: libvir-list@redhat.com, gord@live.ca
> Date: 03/12/2015 01:01 PM
> Subject: Re: [libvirt] libvirt to report cpuWait
of a guest.
>
> 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:|
>