diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-05-24 13:45:47 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-05-24 13:45:47 +0100 |
commit | 8cc22ae8d13a1fc27758e11b6cdf68a17401761d (patch) | |
tree | cfe8c98371c0e6d5de71cda3fe2fa67a4af5dc67 /tools | |
parent | 7ffb087b8c67560a75ec2e32e3acdf1a7e1a943e (diff) | |
download | xen-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.py | 14 | ||||
-rw-r--r-- | tools/python/xen/xend/XendDomainInfo.py | 6 |
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 |