On Mon, Feb 09, 2015 at 04:01:55PM +0000, Daniel P. Berrange wrote:
On Mon, Feb 09, 2015 at 03:20:28PM +0000, Serge Hallyn wrote:
> Hi,
>
> 'virsh vcpuinfo' in 1.2.12 returns an empty line for VMs using tcg. I
> assume this is due to commit b07f3d821dfb11 which explicitly sets
> nvcpupids to 0 now. Is 'virsh vcpuinfo' returning nothing just an
> unfortunate but expected side-effect, or is it a bug and it should
> return info anyway? My impression is that qemu_driver.c should be
> using vm->def->vcpus rather than priv->nvcpupids to determine the
> # of cpus to show?
The virsh vcpuinfo command calls virDomainGetVcpus() which in QEMU
ends up calling qemuDomainHelperGetVcpus. This method in turn
iterates over the vCPUs calling qemuGetProcessInfo to determine
the CPU time & CPU affinity of the vCPU vs host pCPUs. This only
works if there are threads for each vCPU in QEMU. The QEMU TCG
emulator is single threaded, so we cannot get the data for individual
vCPUs when using TCG.
The previous code would result in virDomainGetVcpus() returning
only a single vCPU record even when the guest have multiple vCPUs,
which is just incorrect.
For some reason though qemuDomainHelperGetVcpus just returns
no data at all now, when it should be returning an error
message "cpu affinity is not available". this just looks like
a logic error there.
I've found another bug in fact. It seems that when the XML parser sees
<vcpu cpuset='0-1'>4</vcpu>, it will also create a fake
<cputune>
config of
<cputune>
<vcpupin cpuset='0-1' vcpu='0'/>
<vcpupin cpuset='0-1' vcpu='1'/>
<vcpupin cpuset='0-1' vcpu='2'/>
<vcpupin cpuset='0-1' vcpu='3'/>
</cputune>
So although my intent was to prevent use of per-VCPU pining only,
it seems we've in fact prevented use of VM level pinning too :-(
I'll send a patch to try and fix that
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 :|