From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Novotny Subject: [PATCH] Add maxvcpus support Date: Wed, 25 Nov 2009 13:43:44 +0100 Message-ID: <4B0D2680.8060900@redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000002090203080606050905" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "'xen-devel@lists.xensource.com'" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------000002090203080606050905 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, 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. Michal Signed-off-By: Michal Novotny --------------000002090203080606050905 Content-Type: text/x-patch; name="xen-xm-maxvcpu-support.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xen-xm-maxvcpu-support.patch" diff -r d44371e6e5d6 tools/python/xen/xm/create.py --- a/tools/python/xen/xm/create.py Tue Nov 24 14:43:07 2009 +0000 +++ b/tools/python/xen/xm/create.py Wed Nov 25 11:06:19 2009 +0100 @@ -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_native', '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: --------------000002090203080606050905 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------000002090203080606050905--