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(a)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.
> 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.
--
Mit freundlichen Grüßen/Kind Regards
Viktor Mihajlovski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294