aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-24 13:45:47 +0100
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-24 13:45:47 +0100
commit8cc22ae8d13a1fc27758e11b6cdf68a17401761d (patch)
treecfe8c98371c0e6d5de71cda3fe2fa67a4af5dc67 /tools
parent7ffb087b8c67560a75ec2e32e3acdf1a7e1a943e (diff)
downloadxen-8cc22ae8d13a1fc27758e11b6cdf68a17401761d.tar.gz
xen-8cc22ae8d13a1fc27758e11b6cdf68a17401761d.tar.bz2
xen-8cc22ae8d13a1fc27758e11b6cdf68a17401761d.zip
xend: Fix scheduler parameters of rebooted domain
When I changed the scheduler parameters of a domain with xm sched-credit, the information of xm sched-credit was changed. But as for the information of xm list, the values of the domain configuration definition were kept. And, then I rebooted the domain. The information of xm list was not changed. But as for the information of xm sched-credit, the values of the domain configuration definition were returned. # xm create /xen/PVdomain.1 cpu_cap=150 cpu_weight=512 Using config file "/xen/PVdomain.1". Started domain PVdomain.1 # xm sched-credit -d PVdomain.1 Name ID Weight Cap PVdomain.1 1 512 150 # xm sched-credit -d PVdomain.1 -c 75 -w 384 # xm sched-credit -d PVdomain.1 Name ID Weight Cap PVdomain.1 1 384 75 # xm list --long PVdomain.1 | grep cpu_ (cpu_weight 512) (cpu_cap 150) (cpu_time 29.353831745) # xm reboot PVdomain.1 # xm sched-credit -d PVdomain.1 Name ID Weight Cap PVdomain.1 2 512 150 # xm list --long PVdomain.1 | grep cpu_ (cpu_weight 512) (cpu_cap 150) (cpu_time 5.950247186) If the scheduler parameters of the domain were changed with xm sched-credit, I think that xm list should show the current values about the scheduler parameters. And, then if the domain is rebooted, I think that the rebooted domain should keep the preceding values about the scheduler parameters. Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/python/xen/xend/XendDomain.py14
-rw-r--r--tools/python/xen/xend/XendDomainInfo.py6
2 files changed, 19 insertions, 1 deletions
diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py
index 607846cb59..d210aa634b 100644
--- a/tools/python/xen/xend/XendDomain.py
+++ b/tools/python/xen/xend/XendDomain.py
@@ -1402,6 +1402,8 @@ class XendDomain:
@type cap: int
@rtype: 0
"""
+ set_weight = False
+ set_cap = False
dominfo = self.domain_lookup_nr(domid)
if not dominfo:
raise XendInvalidDomain(str(domid))
@@ -1410,16 +1412,26 @@ class XendDomain:
weight = int(0)
elif weight < 1 or weight > 65535:
raise XendError("weight is out of range")
+ else:
+ set_weight = True
if cap is None:
cap = int(~0)
elif cap < 0 or cap > dominfo.getVCpuCount() * 100:
raise XendError("cap is out of range")
+ else:
+ set_cap = True
assert type(weight) == int
assert type(cap) == int
- return xc.sched_credit_domain_set(dominfo.getDomid(), weight, cap)
+ rc = xc.sched_credit_domain_set(dominfo.getDomid(), weight, cap)
+ if rc == 0:
+ if set_weight:
+ dominfo.setWeight(weight)
+ if set_cap:
+ dominfo.setCap(cap)
+ return rc
except Exception, ex:
log.exception(ex)
raise XendError(str(ex))
diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py
index 4ac101de5c..7bb71bc93d 100644
--- a/tools/python/xen/xend/XendDomainInfo.py
+++ b/tools/python/xen/xend/XendDomainInfo.py
@@ -1009,9 +1009,15 @@ class XendDomainInfo:
def getCap(self):
return self.info.get('cpu_cap', 0)
+ def setCap(self, cpu_cap):
+ self.info['cpu_cap'] = cpu_cap
+
def getWeight(self):
return self.info.get('cpu_weight', 256)
+ def setWeight(self, cpu_weight):
+ self.info['cpu_weight'] = cpu_weight
+
def setResume(self, state):
self._resume = state