Dennis Chen
2013-May-28 07:24 UTC
[libvirt-users] About the change of a VM's vcpu count in runtime?
Hi, We know that there is a command "setvcpus" in virsh used to "change number of virtual CPUs", now we just have the need to change vcpu count dynamically for a running VM, so I tried this command (the vcpu count is 2 in the VM xml file), below is the result: virsh # setvcpus 3 --count 4 error: invalid argument: requested vcpus is greater than max allowable vcpus for the domain: 4 > 2 virsh # setvcpus 3 --count 1 error: Operation not supported: qemu didn't unplug the vCPUs properly So I tried another way: log into the running VM, and "echo 0 > /sys/devices/system/cpu/cpu1/online", after that I can find only one processor in the vm through '/proc/cpuinfo', but in virsh, the vcpuinfo still shows: virsh # vcpuinfo 3 VCPU: 0 CPU: 0 State: running CPU time: 13.5s CPU Affinity: yyyy VCPU: 1 CPU: 1 State: running CPU time: 6.9s CPU Affinity: yyyy So the question is: is there any method I can't find yet to change the vcpu count of a running vm dynamically? BRs, Dennis
Eric Blake
2013-May-28 20:24 UTC
Re: [libvirt-users] About the change of a VM's vcpu count in runtime?
On 05/28/2013 01:24 AM, Dennis Chen wrote:> Hi, > > We know that there is a command "setvcpus" in virsh used to "change > number of virtual CPUs", now we just have the need to change vcpu count > dynamically for a running VM, so I tried this command (the vcpu count is > 2 in the VM xml file), below is the result: > > virsh # setvcpus 3 --count 4 > error: invalid argument: requested vcpus is greater than max allowable > vcpus for the domain: 4 > 2Correct - you can't exceed the maximum number of vcpus that you told qemu on its initial command line. Worse, qemu hasn't supported cpu hotplug or hot-unplug for quite some time (qemu 1.5 added partial support for hotplug, but still left hot-unplug unimplemented; qemu 1.5 also added support for guest-agent unplug, but we have not yet wired that up in libvirt).> > virsh # setvcpus 3 --count 1 > error: Operation not supported: qemu didn't unplug the vCPUs properlyAlas, until qemu actually implements vcpu hot-unplug, this will fail for you (it works for xen:// URI though).> > So I tried another way: log into the running VM, and "echo 0 > > /sys/devices/system/cpu/cpu1/online", after that I can find only one > processor in the vm through '/proc/cpuinfo', but in virsh, the vcpuinfo > still shows:That's not hot-unplug from qemu's perspective. That's just disabling the use of the cpu from within the guest (and in fact, that's what the new qemu 1.5 guest agent commands do, where we are still working on how best to wire that up into libvirt).> So the question is: is there any method I can't find yet to change the > vcpu count of a running vm dynamically?Wait for newer qemu and libvirt, or else pitch in and help write patches. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Eric Blake
2013-May-28 20:28 UTC
Re: [libvirt-users] About the change of a VM's vcpu count in runtime?
On 05/28/2013 02:24 PM, Eric Blake wrote:>> So the question is: is there any method I can't find yet to change the >> vcpu count of a running vm dynamically? > > Wait for newer qemu and libvirt, or else pitch in and help write patches.You might not have to wait that long - if you could help test these patches, it would be appreciated: https://www.redhat.com/archives/libvir-list/2013-May/msg01857.html -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org