[libvirt-users] using more than 1 core by a virtual machine

Osier Yang jyang at redhat.com
Mon Mar 21 15:10:44 UTC 2011


于 2011年03月21日 16:49, Zvi Dubitzky 写道:
> Zvi Dubitzky
> Email:dubi at il.ibm.com
> IBM Haifa Research Laboratory    Phone: +972-4-8296182
> Haifa, 31905, ISRAEL
> 
> 
> 
> Osier Yang<jyang at redhat.com>  wrote on 21/03/2011 10:27:07:
> 
>> From: Osier Yang<jyang at redhat.com>
>> To: Zvi Dubitzky/Haifa/IBM at IBMIL
>> Cc: libvirt-users at redhat.com
>> Date: 21/03/2011 10:27
>> Subject: Re: [libvirt-users] using more than 1  core by a virtual
> machine
>>
>> 于 2011年03月17日 02:04, Zvi Dubitzky 写道:
>>> My virtual machine xml file has<vcpu>2</vcpu>    clause  while the host
> has
>>> 2 physical cpus (cores).
>>> Is this enough to cause a VM  running 2 endless loop threads  to use
> the 2
>>>    cores ?
>>> In my case the VM running reports (cat /roc/cpuinfo) that it has 2
> vcpus
>>> but it uses only 1 core (at a time)  because
>>> the 'top' at the host shows 100%cpu   (out of total 200%)  used by the
>>> endless loop application
>>> Also virsh vcpuinfo<vm>   shows only 1 CPU and 1 vcpu
>>
>> Is it really only 1 vcpu is showed? it should be two, that's
>> strange if you specified two vcpus, but only 1 is showed.
>> and by default, if you don't specify "cpuset" in<vcpu>, it uses
>> all the physical cpus, if I'm right, so you should be able to
>> see something like:
>>
>>      CPU Affinity:   yy
>>
>> Could you try specify "cpuset" explicitly like:
>>
>> <vcpu cpuset="0,1">2</vcpu>
>>
>> And see what it happens?
>>
> 
> NO. There 2 vcpus in the VM screen . I pasted only one of them . yes there
> is
> PU Affinity:   yy   anyhow in 'virsh  vcpuinfo<domain>  even before fixing
> the problem as below.
> 
> I solved the problem : The BIOS did not have VT enabled although
> multiprocessing item was already enabled in the BIOS and also some item
> called "virtualization " was already  enabled . But that was not enough :
> I also had to drop the following clause from the VM xml file:
> '<emulator>/usr/local/bin/qemu-system-x86_64</emulator>'
> Anyhow: I do not understand why using multicore under a VM is dependent on
> the VT enabled
> 
> Now the 'top' utility (at the host) shows qemu-kvm is the running  process
> instead of qemu-system-x86_64 as before the fix . On the another Debian
> system I did not have to drop the<emulator>  clause from the xml and the
> VM was still using all the cores  though ! But the libvirt at the Debian
> was newer (0.8.6) while the fedora14 was running libvirt 0.8.3
> 
> Do you know what is exactly qemu-system-x86_64 vs. qemu-kvm .

Simpley speaking, qemu-kvm is with kvm support, while qemu-system-x86-64
is not.

 Does the
> latter appear only if
> HW virtualization is active in the BIOS ?
> 

Not sure what your exact meaning, but I guess you mean it appears in
domain xml. If so:

libvirt contruct the capability of qemu driver when libvirtd starts,
if your host doesn't enable VT support, then kvm module is not loaded,
libvirt inspects if "/dev/kvm" is accessiable to determine whether to
use "qemu-kvm" as emulator in the capability xml or not. That's why
it's not <emulator>/usr/libexec/qemu-kvm</emulator> in your domain xml.

It's not the detailed explaination, but simply makes sense for you.

To see the qemu guest capabilities your host supports:

# virsh -c qemu:///system capabilities

And anyway, I don't think multicore for VM relates with the emulator,
if qemu-kvm is used, vcpus are virtualized by KVM, if qemu-system-x86_64
is used, they are emulated.

Regards
Osier




More information about the libvirt-users mailing list