[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH][xend] Fix handling of scheduler params
When creating domains that specify scheduler parameters with XenAPI, the specified parameters are not used when starting the domain. As an example, here is a snippet of internal config for a domain created via XenAPI that contains scheduling params: (domain (domid 6) (vcpus_params ((cap 100) (weight 512))) ... (cpu_weight 256) (cpu_cap 0) ... ) Starting the domain results in following scheduler settings: jfehlig4:/home/jfehlig/cim/cimxml # xm sched-credit -d sles10_nographic Name ID Weight Cap sles10_nographic 6 256 0 The attached patch collapses cpu_weight and cpu_cap in XendConfig into the vcpus_params dictionary. The patch has been tested using xm and XenAPI on config with and without scheduler parameters. Regards, Jim Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxxxx> diff -r bd3d6b4c52ec tools/python/xen/xend/XendConfig.py --- a/tools/python/xen/xend/XendConfig.py Fri Jun 01 14:50:52 2007 +0100 +++ b/tools/python/xen/xend/XendConfig.py Tue Jun 05 18:47:55 2007 -0600 @@ -167,8 +167,6 @@ LEGACY_UNSUPPORTED_BY_XENAPI_CFG = [ 'shadow_memory', 'security', 'vcpu_avail', - 'cpu_weight', - 'cpu_cap', 'features', # read/write 'on_xend_start', @@ -192,8 +190,6 @@ LEGACY_CFG_TYPES = { 'shadow_memory': int, 'maxmem': int, 'start_time': float, - 'cpu_cap': int, - 'cpu_weight': int, 'cpu_time': float, 'features': str, 'localtime': int, @@ -320,8 +316,6 @@ class XendConfig(dict): 'on_xend_start': 'ignore', 'on_xend_stop': 'ignore', 'cpus': [], - 'cpu_weight': 256, - 'cpu_cap': 0, 'VCPUs_max': 1, 'VCPUs_live': 1, 'VCPUs_at_startup': 1, @@ -481,6 +475,14 @@ class XendConfig(dict): if sxp.child_value(sxp_cfg, "maxmem") != None: cfg["maxmem"] = int(sxp.child_value(sxp_cfg, "maxmem")) + # Convert scheduling parameters to vcpus_params + if 'vcpus_params' not in cfg: + cfg['vcpus_params'] = {} + cfg["vcpus_params"]["weight"] = \ + int(sxp.child_value(sxp_cfg, "cpu_weight", 256)) + cfg["vcpus_params"]["cap"] = \ + int(sxp.child_value(sxp_cfg, "cpu_cap", 0)) + # Only extract options we know about. extract_keys = LEGACY_UNSUPPORTED_BY_XENAPI_CFG extract_keys += XENAPI_CFG_TO_LEGACY_CFG.values() @@ -777,8 +779,6 @@ class XendConfig(dict): _set_cfg_if_exists('on_xend_stop') _set_cfg_if_exists('on_xend_start') _set_cfg_if_exists('vcpu_avail') - _set_cfg_if_exists('cpu_weight') - _set_cfg_if_exists('cpu_cap') # Parse and store runtime configuration _set_cfg_if_exists('start_time') @@ -830,6 +830,10 @@ class XendConfig(dict): self[key] = type_conv(val) else: self[key] = val + + self['vcpus_params']['weight'] = \ + int(self['vcpus_params'].get('weight', 256)) + self['vcpus_params']['cap'] = int(self['vcpus_params'].get('cap', 0)) def to_sxp(self, domain = None, ignore_devices = False, ignore = [], legacy_only = True): diff -r bd3d6b4c52ec tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Jun 01 14:50:52 2007 +0100 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Jun 05 18:52:12 2007 -0600 @@ -1017,16 +1017,16 @@ class XendDomainInfo: return str(self._resume) def getCap(self): - return self.info.get('cpu_cap', 0) + return self.info['vcpus_params']['cap'] def setCap(self, cpu_cap): - self.info['cpu_cap'] = cpu_cap + self.info['vcpus_params']['cap'] = cpu_cap def getWeight(self): - return self.info.get('cpu_weight', 256) + return self.info['vcpus_params']['weight'] def setWeight(self, cpu_weight): - self.info['cpu_weight'] = cpu_weight + self.info['vcpus_params']['weight'] = cpu_weight def setResume(self, state): self._resume = state @@ -1482,7 +1482,7 @@ class XendDomainInfo: def _initDomain(self): log.debug('XendDomainInfo.initDomain: %s %s', self.domid, - self.info['cpu_weight']) + self.info['vcpus_params']['weight']) self._configureBootloader() @@ -1492,7 +1492,8 @@ class XendDomainInfo: if self.info['platform'].get('localtime', 0): xc.domain_set_time_offset(self.domid) - xc.domain_setcpuweight(self.domid, self.info['cpu_weight']) + xc.domain_setcpuweight(self.domid, \ + self.info['vcpus_params']['weight']) # repin domain vcpus if a restricted cpus list is provided # this is done prior to memory allocation to aide in memory _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |