mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xm: Add maxvcpus support
this is patch to add maxvcpus support to xen xm command. It's using
vcpu_avail bitmask and sets the number of vcpus to maxvcpus if
present. If it's not present, old behavior is preserved.
In domain config file you can define it as follows:
maxvcpus = 4
vcpus = 2
this automatically sets vcpus to 4 and corresponding bitmask to
present 2 vcpus in the guest with option to increase it up to 4
vcpus. If maxvcpus is not present, the old behavior for vcpus is
preserved, ie. you can set vcpus to some number of vcpus to be used
and the vcpu_avail is set appropriately to use all of them. Only when
you use maxvcpus and vcpus new vcpu_avail value is calculated to show
PV guest the desired number of vcpus only.
It's been tested using RHEL-5 32-bit PV guest with maxvcpus = 4 and
vcpus = 2 and also the previous setup of vcpus = 2 only... In both
cases I was able to use 'xm vcpu-set {domainId} {numberOfVCPUs}' to
increase move vcpu count from 0 to maxvcpus/vcpus so it was working as
designed.
Signed-off-By: Michal Novotny<minovotn@redhat.com>
This commit is contained in:
1 parent
7d5eee4f2c
commit
68a94cf528
1 file changed
+22
-3
@@ -1029,6 +1029,24 @@ def make_config(vals):
|
||||
|
||||
config = ['vm']
|
||||
|
||||
def vcpu_conf():
|
||||
maxvcpus = False
|
||||
vcpus = False
|
||||
if hasattr(vals, 'maxvcpus'):
|
||||
maxvcpus = getattr(vals, 'maxvcpus')
|
||||
if hasattr(vals, 'vcpus'):
|
||||
vcpus = getattr(vals, 'vcpus')
|
||||
|
||||
if maxvcpus and not vcpus:
|
||||
config.append(['vcpus', maxvcpus])
|
||||
if maxvcpus and vcpus:
|
||||
config.append(['vcpu_avail', (1 << vcpus) - 1])
|
||||
|
||||
# For case we don't have maxvcpus set but we have vcpus we preserve
|
||||
# old behaviour
|
||||
if not maxvcpus and vcpus:
|
||||
config.append(['vcpus', vcpus])
|
||||
|
||||
def add_conf(n):
|
||||
if hasattr(vals, n):
|
||||
v = getattr(vals, n)
|
||||
@@ -1037,10 +1055,11 @@ def make_config(vals):
|
||||
|
||||
map(add_conf, ['name', 'memory', 'maxmem', 'shadow_memory',
|
||||
'restart', 'on_poweroff', 'tsc_mode', 'nomigrate',
|
||||
'on_reboot', 'on_crash', 'vcpus', 'vcpu_avail', 'features',
|
||||
'on_xend_start', 'on_xend_stop', 'target', 'cpuid',
|
||||
'cpuid_check', 'machine_address_size', 'suppress_spurious_page_faults'])
|
||||
'on_reboot', 'on_crash', 'features', 'on_xend_start',
|
||||
'on_xend_stop', 'target', 'cpuid', 'cpuid_check',
|
||||
'machine_address_size', 'suppress_spurious_page_faults'])
|
||||
|
||||
vcpu_conf()
|
||||
if vals.uuid is not None:
|
||||
config.append(['uuid', vals.uuid])
|
||||
if vals.cpu is not None:
|
||||
|
||||