On 08/28/2013 01:45 AM, Andrew Jones wrote:
> What I'm more worried about is what number is libvirt
supposed to show
> to the end user, and should libvirt enforce the lower recommended max,
> or the larger kernel absolute max? Which of the two values does the QMP
> 'MachineInfo' type return in its 'cpu-max' field during the
> 'query-machines' command? Should we be modifying QMP to return both
> values, so that libvirt can also expose the logic to the end user of
> allowing a recommended vs. larger development max?
>
Machine definitions maintain yet another 'max_cpus'. And it appears that
qmp would return that value. It would probably be best if it returned
max(qemu_machine.max_cpus, kvm_max_cpus) though.
I'm starting to think that we should just keep things simple for most of
the virt stack by sticking to enforcing the larger developer max. And
then on a production kernel we should just compile KVM_MAX_VCPUS =
KVM_SOFT_MAX_VCPUS and be done with it. With that thought, this patch
could be dropped too. The alternative seems to be supporting a run-time
selectable experimental mode throughout the whole virt stack.
Indeed - if it is a number you are unwilling to support, don't compile
it into the kernel in the first place. Allowing arbitrary limits that
are lower than the maximum imply policy, and policy implies touching the
stack (because someone, somewhere in the stack, will have good reason
for setting policy different than the lowest layer); fix the maximum
instead, and the whole stack complies without having to worry about
policy. IMO, this is a case where fewer knobs is better.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org