[libvirt] [PATCH] qemu: report vcpu state in virDomainGetVcpus
Peter Krempa
pkrempa at redhat.com
Fri Jul 8 14:38:32 UTC 2016
On Fri, Jul 08, 2016 at 16:33:59 +0200, Viktor Mihajlovski wrote:
> On 08.07.2016 15:54, Peter Krempa wrote:
> > On Fri, Jul 08, 2016 at 15:39:00 +0200, Boris Fiuczynski wrote:
> >> From: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
> >>
> >> Currently, the virVcpuInfo returned by virDomainGetVcpus() will always
> >> report a state of VIR_VCPU_RUNNING for each defined domain vcpu even if
> >> the vcpu is currently in the halted state.
> >>
> >> As the monitor interface is in fact reporting the accurate state, it is
> >> rather easy to transport this information with the existing API.
> >
> > Could you please elaborat how you expect to use this info?
> Dpending on the architecture, the halted state is an indication that the
> virtual CPU is not in use. On s390x for example the halted state is only
> reported if the CPU is stopped or in disabled wait, both indicating that
> the virtual CPUs are not enabled for the operating system.
> This information can be used by a libvirt client application for
> hotplugging decisions, and this is in fact the intention.
Okay that sounds reasonable.
> >> This is done by
> >> - adding a new state of VIR_VCPU_HALTED
> >> - extending the monitor to pass back the halted state for the vcpus
> >> - adding a new array to the private domain object reflecting the halted
> >> state for the vcpus and update it along with the vcpu pids array
> >> - modifying the driver code to report the vcpu state based on the halted
> >> indicator
> >> - extending virsh vcpuinfo to also display the halted state
> >> - modifying the monitor_json testcase
> >>
> >> The vcpu state is however not recorded in the internal XML format, since
> >> the state can change asynchronously (without notification).
> >
> > virDomainGetVcpus does not call qemuDomainDetectVcpuPids nor does not
> > update the info in any way. qemuDomainDetectVcpuPids is called just at
> > startup of the qemu process. As of such this is reporting old data at
> > any time and thus doesn't really make much sense in the current state.
> Well, it's also called in the course of CPU hotplugging to update the
> CPU pids, but you are right in that the info is getting stale quickly.
> >
> > Please note that calling qemuDomainDetectVcpuPids is not desired in
> > virDomainGetVcpus. You would need to update just the vcpu states.
> >
> Right, I can add another API to retrieve only the states, still using
> the same monitor interface. I didn't want to break policy (in fact I
> wasn't aware of that particular one), apologies.
Well, there isn't much of a policy at this point. Just that updating of
the thread IDs when not necessary isn't a good approach.
Also please try to base the patch on the series I've posted so I don't
have to rework it completely.
More information about the libvir-list
mailing list