aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-09-26 14:39:56 +0100
committerKeir Fraser <keir@xensource.com>2007-09-26 14:39:56 +0100
commit4d0cfe8f1ba7cebdbd00be319477038f6025c7c8 (patch)
treede2460794c6a0c8213b530eeb6954cbeb7e25983 /tools
parent1906b3ab6683ce6669d298279211bca575eea2ed (diff)
downloadxen-4d0cfe8f1ba7cebdbd00be319477038f6025c7c8.tar.gz
xen-4d0cfe8f1ba7cebdbd00be319477038f6025c7c8.tar.bz2
xen-4d0cfe8f1ba7cebdbd00be319477038f6025c7c8.zip
[xend,xenapi] Fix handling of scheduler params
When creating domains that specify scheduler parameters with XenAPI, the specified parameters are not used when starting the domain. This 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. Signed-off-by: Jim Fehlig <jfehlig@novell.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/python/xen/xend/XendConfig.py20
-rw-r--r--tools/python/xen/xend/XendDomainInfo.py13
2 files changed, 19 insertions, 14 deletions
diff --git a/tools/python/xen/xend/XendConfig.py b/tools/python/xen/xend/XendConfig.py
index d0e62b9b6b..9a1e1da47b 100644
--- a/tools/python/xen/xend/XendConfig.py
+++ b/tools/python/xen/xend/XendConfig.py
@@ -178,8 +178,6 @@ LEGACY_UNSUPPORTED_BY_XENAPI_CFG = [
# roundtripped (dynamic, unmodified)
'shadow_memory',
'vcpu_avail',
- 'cpu_weight',
- 'cpu_cap',
'features',
# read/write
'on_xend_start',
@@ -203,8 +201,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,
@@ -330,8 +326,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,
@@ -496,6 +490,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()
@@ -812,8 +814,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')
@@ -865,6 +865,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 --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py
index cc7a63749d..35149ed4eb 100644
--- a/tools/python/xen/xend/XendDomainInfo.py
+++ b/tools/python/xen/xend/XendDomainInfo.py
@@ -1115,16 +1115,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
@@ -1596,7 +1596,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()
@@ -1606,7 +1606,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