On 09/10/12 11:11, Daniel P. Berrange wrote:
On Fri, Sep 07, 2012 at 11:07:43AM -0600, Eric Blake wrote:
> On 09/07/2012 09:13 AM, Daniel P. Berrange wrote:
>> On Fri, Sep 07, 2012 at 02:51:00PM +0200, Peter Krempa wrote:
>>> When setting processor count for a domain using the API libvirt enforced
>>> a maximum processor count that was determined using an IOCTL on
>>> /dev/kvm. Unfortunately this value isn't representative enough and qemu
>>> happily accepts and starts with values greater than the reported value.
>>
>> Really ? If KVM is accepting a greater vCPU count than it reports
>> via /dev/kvm, then we should fix the latter
>
> Why? We already allow oversubscription (you can run 3 guests with 1
> vcpu each on a 2-cpu machine); we also allow pinning a 2-vcpu guest to 1
> host cpu; so why can't we allow oversubscription from within a single
> VM? Sure, performance will be lousier, but that doesn't mean the
> request is invalid.
This isn't anything todo with oversubscription. This check is validating
that the user did not request more vCPUs than the hypervisor is able to
support, regardless of physical CPU count.
Yes. But the problem is that even if /dev/kvm reports that it supports
160 CPUs you can start guests with 230 processors with any problem.
(Maybe apart from that it will consume a lot of CPU time).
$ virsh maxvcpus kvm
160
$ virsh vcpuinfo test
VCPU: 0
CPU: 0
State: running
CPU time: 10.3s
CPU Affinity: yyyy
VCPU: 1
CPU: 2
State: running
CPU time: 0.3s
CPU Affinity: yyyy
....
VCPU: 228
CPU: 0
State: running
CPU time: 0.2s
CPU Affinity: yyyy
VCPU: 229
CPU: 2
State: running
CPU time: 0.2s
CPU Affinity: yyyy
and it will eventualy boot successfuly after some crunching.
Daniel