[Kimchi-devel] [RFC] Allow user to specify max virtual cpus in template and guest

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Wed Jan 13 19:08:37 UTC 2016


+1

On 01/13/2016 03:48 PM, Lucio Correia wrote:
> Current State
> -------------
> Currently we have the following values defined for a KVM guest created
> by Kimchi:
> 
> <vcpu placement='static' current='4'>252</vcpu>
> 
> <cpu>
>     <topology sockets='63' cores='2' threads='2'/>
> </cpu>
> 
> User specifies the processor topology (optional) and the number of
> virtual CPUs and sockets are calculated by Kimchi based on maximum
> supported by the hypervisor (varies with distro) this way:
> 
> maximum number of virtual cpus supported = 255 (taken from hypervisor)
> processor topology: cores=2 , threads=2 (optionally specified by user)
> number of virtual cpus per socket: cores * threads = 4 (from topology)
> maximum number of sockets guest can have = int(255/4) = 63
> maximum number of virtual cpus guest can use = 4 * 63 = 252
> 
> 
> Proposal
> --------
> Allow user to specify the maximum number of virtual cpus for a template
> or guest (when this one is offline - not running).
> 
> 
> Changes required
> ----------------
> 1) Backend
> 
> A) Add "maxvcpus" optional field to both template and guest APIs
> Restrictions to be implemented on this value:
> - must be a positive integer
> - must be a multiple of (cores * threads)
> - must be less than or equal the maximum number of virtual cpus
> supported by hypervisor
> 
> If not specified, the default value for maxvcpus will be the equivalent
> to one socket (that is, core * threads).
> 
> 
> B) Change the way number of sockets is calculated:
> maximum number of virtual cpus supported = 255 (taken from hypervisor)
> topology: cores=2 , threads=2 (specified by user)
> maximum number of virtual cpus guest can use = 100 (specified by user)
> number of virtual cpus per socket: cores * threads = 4 (from topology)
> maximum number of sockets guest can have = int(100/4) = 25
> maximum number of virtual cpus guest can use = 4 * 25 = 100
> 
> That would result in:
> <vcpu placement='static' current='4'>100</vcpu>
> 
> <cpu>
> <topology sockets='25' cores='2' threads='2'/>
> </cpu>
> 
> 
> C) Update/Add unit tests
> 
> 
> 
> 2) Frontend
> 
> A) Edit Template, at "Processor" tab:
> - change the current "CPU number" field to a -[]+ input field
> (increase/decrease)
> - add a new -[]+ input field "Max CPU number" (increase/decrease) for
> user input of "max virtual CPUs". Restrictions from 1.A) apply here.
> 
> Despite it's in a different place, we may use a "More Options" artifact
> similar to the one proposed by Rodrigo Trujillo at "[RFC][Kimchi] Guest
> Max memory setup and update", to keep the same format.
> 
> 
> B) Edit Guest, at "General" tab:
> - add a new -[]+ input field "Max CPUs" (increase/decrease in terms of
> core * threads) for user input of "max virtual CPUs". This new field is
> only enabled if guest is not running. Restrictions from 1.A) apply here.
> 
> 
> Let me know your thoughts.
> 
> Thanks,




More information about the Kimchi-devel mailing list