Fix handling of scheduler params
PATCH 1/1 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 Capsles10_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
tools/python/xen/xend/XendConfig.py +12 -8
@@ -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):
tools/python/xen/xend/XendDomainInfo.py +7 -6
@@ -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
[email protected]
http://lists.xensource.com/xen-devel
Hi Jim,
If the patch is applied, I think that "cpu_weight" and "cpu_cap" disappear from information of xm list. Is my thought right?
Best regards,
Kan
Quoted 36 lines
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_weight256)
(cpu_cap0)
...
)Starting the domain results in following scheduler settings:
jfehlig4:/home/jfehlig/cim/cimxml # xm sched-credit -d
sles10_nographic
Name ID Weight Capsles10_nographic6 256 0The attached patch collapses
cpu_weightandcpu_capin XendConfig into thevcpus_paramsdictionary. The patch has been tested using xm and XenAPI on config with and without scheduler parameters.Regards,
JimSigned-off-by Jim Fehlig <[email protected]>-------------------------------text/plain-------------------------------
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
Quoted 5 lines · Masaki Kanno
Hi Jim,
If the patch is applied, I think that "
cpu_weight" and "cpu_cap" disappear from information of xm list. Is my thought right?
If xm is using the legacy interface, then yes 'xm list --long <dom>' does not contain cpu_weight|cap. The info is available using xm sched, e.g.
jfehlig4:~ # xm sched-credit -d sles10_nographic
Name ID Weight Capsles10_nographic 29 512 50
Domain must be running however - but this is also true to change the values.
If xm is configured to use XenAPI, which I understand will be the default soon, you get:
jfehlig4:/usr/lib64/python/site-packages/xen/xend # xm li -l sles10_graphics (domain
(PV_args 'TERM=xterm ')
(VIFs (bea9a278-a393-0186-210b-ea6f45870468))
(PV_bootloader /usr/lib/xen/boot/domUloader.py)
(VTPMs ())
...
(VCPUs_params "{'cap': '50', 'weight': '512'}")
...)
Note that using either or both cpu_weight|cap in domain config file works as before.
How to proceed with this patch depends on when/if xm will be moved to XenAPI. If this will not occur for some time, then I should adjust the patch to preserve cpu_weight|cap in sexpr.
Regards,
Jim
Quoted 48 lines
Best regards,
KanQuoted 31 lines
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_weight256)
(cpu_cap0)
...
)Starting the domain results in following scheduler settings:
jfehlig4:/home/jfehlig/cim/cimxml # xm sched-credit -d
sles10_nographic
Name ID Weight Capsles10_nographic6 256 0The attached patch collapses
cpu_weightandcpu_capin XendConfig into thevcpus_paramsdictionary. The patch has been tested using xm and XenAPI on config with and without scheduler parameters.Regards,
JimSigned-off-by Jim Fehlig <[email protected]>Quoted 6 lines
-------------------------------text/plain-------------------------------
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
Quoted 32 lines
Quoted 5 lines · Masaki Kanno
Hi Jim,
If the patch is applied, I think that "
cpu_weight" and "cpu_cap" disappear from information of xm list. Is my thought right?If xm is using the legacy interface, then yes 'xm list --long <dom>' does not contain cpu_weight|cap. The info is available using xm sched, e.g.
jfehlig4:~ # xm sched-credit -d
sles10_nographic
Name ID Weight Capsles10_nographic29 512 50Domain must be running however - but this is also true to change the values.
If xm is configured to use XenAPI, which I understand will be the default soon, you get:
jfehlig4:/usr/lib64/python/site-packages/xen/xend # xm li -l
sles10_graphics(domain
(PV_args'TERM=xterm ')
(VIFs (bea9a278-a393-0186-210b-ea6f45870468))
(PV_bootloader/usr/lib/xen/boot/domUloader.py)
(VTPMs ())
...(VCPUs_params "{'cap': '50', 'weight': '512'}") ...
Quoted 8 lines
)
Note that using either or both cpu_weight|cap in domain config file works as before.
How to proceed with this patch depends on when/if xm will be moved to XenAPI. If this will not occur for some time, then I should adjust the patch to preserve cpu_weight|cap in sexpr.
Hi Jim,
I think that configuration and state of domain had better be shown only by information of xm list command. But I think that the patch is necessary for XenAPI. Therefore I do not intend to deny the patch.
I hope that xm is moved to XenAPI. Or to show values of both cpu_weight and cpu_cap of non-running managed domain, I may post a patch for xm sched command.
Best regards,
Kan
Quoted 57 lines
Regards,
JimQuoted 43 lines
Best regards,
KanQuoted 31 lines
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_weight256)
(cpu_cap0)
...
)Starting the domain results in following scheduler settings:
jfehlig4:/home/jfehlig/cim/cimxml # xm sched-credit -d
sles10_nographic
Name ID Weight Capsles10_nographic6 256 0The attached patch collapses
cpu_weightandcpu_capin XendConfig into thevcpus_paramsdictionary. The patch has been tested using xm and XenAPI on config with and without scheduler parameters.Regards,
JimSigned-off-by Jim Fehlig <[email protected]>Quoted 6 lines
-------------------------------text/plain-------------------------------
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-develQuoted 5 lines
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel