WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH] xm: cleanup sched-sedf and tests

To: Ewan Mellor <ewan@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] xm: cleanup sched-sedf and tests
From: Ryan Harper <ryanh@xxxxxxxxxx>
Date: 2006年3月10日 14:06:40 -0600
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: 2006年3月10日 20:07:37 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20060310003937.GE16724@xxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20060307234243.GH15536@xxxxxxxxxx> <20060310003937.GE16724@xxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.6+20040907i
- Reworked to use your match_domid suggestion and filtering
- Aligned output and help to fit within 80 char limit
- User now deals in milliseconds instead of nanoseconds
- Fixed some missing parens in tests (I had pushed stale versions)
- Updated tests to deal with period/slice/latency in ms
root@bebop:~/xm-test.sedf/tests/sedf # xm sched-sedf
Name ID Period(ms) Slice(ms) Lat(ms) Extra Weight
Domain-0 0 20.0 15.0 0.0 1 0
-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253 T/L: 678-9253
ryanh@xxxxxxxxxx
diffstat output:
 python/xen/xm/main.py | 107 +++++++++-----------
 xm-test/tests/sedf/01_sedf_period_slice_pos.py | 8 -
 xm-test/tests/sedf/02_sedf_period_lower_neg.py | 5 
 xm-test/tests/sedf/03_sedf_slice_lower_neg.py | 5 
 xm-test/tests/sedf/04_sedf_slice_upper_neg.py | 5 
 xm-test/tests/sedf/05_sedf_extratime_pos.py | 2 
 xm-test/tests/sedf/06_sedf_extratime_disable_neg.py | 3 
 7 files changed, 73 insertions(+), 62 deletions(-)
Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx>
---
diff -r 9c63c1866b12 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Fri Mar 10 20:00:33 2006
+++ b/tools/python/xen/xm/main.py Fri Mar 10 14:03:16 2006
@@ -84,10 +84,11 @@
 sched_bvt_ctxallow_help = """sched-bvt-ctxallow <Allow> Set the BVT 
scheduler context switch
 allowance"""
 sched_sedf_help = "sched-sedf [DOM] [OPTIONS] Show|Set simple EDF 
parameters\n" + \
-" -p, --period Relative deadline(ns).\n\
- -s, --slice Worst-case execution time(ns) (slice < 
period).\n\
- -l, --latency scaled period(ns) in case the domain is 
doing\n\
- heavy I/O.\n\
+" -p, --period Relative deadline(ms).\n\
+ -s, --slice Worst-case execution time(ms)\n\
+ (slice < period).\n\
+ -l, --latency scaled period(ms) in case the domain\n\
+ is doing heavy I/O.\n\
 -e, --extra flag (0/1) which controls whether the\n\
 domain can run in extra-time\n\
 -w, --weight mutually exclusive with period/slice and\n\
@@ -641,26 +642,25 @@
 server.xend_node_cpu_bvt_slice_set(slice)
 
 def xm_sched_sedf(args):
+ def ns_to_ms(val):
+ return float(val) * 0.000001
+ 
+ def ms_to_ns(val):
+ return (float(val) / 0.000001)
+
 def print_sedf(info):
- print( ("%(name)-32s %(dom)3d %(period)12d %(slice)12d %(latency)12d" +
- " %(extratime)10d %(weight)7d") % info)
-
- # FIXME: this can probably go away if someone points me to the proper way.
+ info['period'] = ns_to_ms(info['period'])
+ info['slice'] = ns_to_ms(info['slice'])
+ info['latency'] = ns_to_ms(info['latency'])
+ print( ("%(name)-32s %(dom)3d %(period)9.1f %(slice)9.1f" +
+ " %(latency)7.1f %(extratime)6d %(weight)6d") % info)
+
 def domid_match(domid, info):
- d = ""
- f = ""
- try:
- d = int(domid)
- f = 'dom'
- except:
- d = domid 
- f = 'name'
-
- return (d == info[f])
- 
+ return domid is None or domid == info['name'] or domid == 
str(info['dom'])
+
 # we want to just display current info if no parameters are passed
 if len(args) == 0:
- domid = '-1'
+ domid = None
 else:
 # we expect at least a domain id (name or number)
 # and at most a domid up to 5 options with values
@@ -677,13 +677,14 @@
 err(opterr)
 sys.exit(1)
 
+ # convert to nanoseconds if needed 
 for (k, v) in options:
 if k in ['-p', '--period']:
- opts['period'] = v
+ opts['period'] = ms_to_ns(v)
 elif k in ['-s', '--slice']:
- opts['slice'] = v
+ opts['slice'] = ms_to_ns(v)
 elif k in ['-l', '--latency']:
- opts['latency'] = v
+ opts['latency'] = ms_to_ns(v)
 elif k in ['-e', '--extratime']:
 opts['extratime'] = v
 elif k in ['-w', '--weight']:
@@ -691,37 +692,35 @@
 
 # print header if we aren't setting any parameters
 if len(opts.keys()) == 0:
- print '%-33s %-8s %-13s %-10s %-8s %-10s %-6s' %('Name','ID','Period',
- 'Slice', 'Latency',
- 'ExtraTime','Weight')
-
- from xen.xend.XendClient import server
- for dom in getDomains(""):
- d = parse_doms_info(dom)
- 
- if domid == '-1' or domid_match(domid, d):
-
- # fetch current values so as not to clobber them
- sedf_info = \
- parse_sedf_info(server.xend_domain_cpu_sedf_get(d['dom']))
- sedf_info['name'] = d['name']
-
- # update values in case of call to set
- if len(opts.keys()) > 0:
- for k in opts.keys():
- sedf_info[k]=opts[k]
- 
- # send the update
- v = map(int, [sedf_info['period'], sedf_info['slice'],
- sedf_info['latency'], sedf_info['extratime'],
- sedf_info['weight']])
- rv = server.xend_domain_cpu_sedf_set(d['dom'], *v)
- if int(rv) != 0:
- err("Failed to set sedf parameters (rv=%d)."%(rv))
-
- # not setting values, display info
- else:
- print_sedf(sedf_info)
+ print '%-33s %-2s %-4s %-4s %-7s %-5s %-6s'%('Name','ID','Period(ms)',
+ 'Slice(ms)', 'Lat(ms)',
+ 'Extra','Weight')
+
+ from xen.xend.XendClient import server
+ doms = filter(lambda x : domid_match(domid, x),
+ [parse_doms_info(dom) for dom in getDomains("")])
+ for d in doms:
+ # fetch current values so as not to clobber them
+ sedf_info = \
+ parse_sedf_info(server.xend_domain_cpu_sedf_get(d['dom']))
+ sedf_info['name'] = d['name']
+
+ # update values in case of call to set
+ if len(opts.keys()) > 0:
+ for k in opts.keys():
+ sedf_info[k]=opts[k]
+ 
+ # send the update, converting user input
+ v = map(int, [sedf_info['period'], sedf_info['slice'],
+ sedf_info['latency'],sedf_info['extratime'], 
+ sedf_info['weight']])
+ rv = server.xend_domain_cpu_sedf_set(d['dom'], *v)
+ if int(rv) != 0:
+ err("Failed to set sedf parameters (rv=%d)."%(rv))
+
+ # not setting values, display info
+ else:
+ print_sedf(sedf_info)
 
 
 def xm_info(args):
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/01_sedf_period_slice_pos.py
--- a/tools/xm-test/tests/sedf/01_sedf_period_slice_pos.py Fri Mar 10 
20:00:33 2006
+++ b/tools/xm-test/tests/sedf/01_sedf_period_slice_pos.py Fri Mar 10 
14:03:16 2006
@@ -33,8 +33,8 @@
 
 # NB: setting period requires non-zero slice 
 # scale current period in half
-period = str(int(p) / 2)
-slice = str(int(p) / 4)
+period = str(float(p) / 2)
+slice = str(float(p) / 4)
 
 opts = "%s -p %s -s %s" %(domain.getName(), period, slice)
 (status, output) = traceCommand("xm sched-sedf %s" %(opts))
@@ -53,10 +53,10 @@
 (name,domid,p1,s1,l1,e1,w1) = params
 
 if p1 != period:
- FAIL("Failed to change domain period from %d to %d" %(p, period))
+ FAIL("Failed to change domain period from %f to %f" %(p, period))
 
 if s1 != slice:
- FAIL("Failed to change domain slice from %d to %d" %(s, slice))
+ FAIL("Failed to change domain slice from %f to %f" %(s, slice))
 
 # Stop the domain (nice shutdown)
 domain.stop()
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/02_sedf_period_lower_neg.py
--- a/tools/xm-test/tests/sedf/02_sedf_period_lower_neg.py Fri Mar 10 
20:00:33 2006
+++ b/tools/xm-test/tests/sedf/02_sedf_period_lower_neg.py Fri Mar 10 
14:03:16 2006
@@ -28,7 +28,7 @@
 
 # NB: setting period requires non-zero slice 
 # scale current period in half
-slice = "1"
+slice = "5"
 
 opts = "%s -p %s -s %s" %(domain.getName(), period, slice)
 (status, output) = traceCommand("xm sched-sedf %s" %(opts))
@@ -39,3 +39,6 @@
 # check for failure
 if output.find(eyecatcher) >= 0:
 FAIL("sched-sedf let me set bogus period (%s)" %(period))
+
+# Stop the domain (nice shutdown)
+domain.stop()
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/03_sedf_slice_lower_neg.py
--- a/tools/xm-test/tests/sedf/03_sedf_slice_lower_neg.py Fri Mar 10 
20:00:33 2006
+++ b/tools/xm-test/tests/sedf/03_sedf_slice_lower_neg.py Fri Mar 10 
14:03:16 2006
@@ -34,4 +34,7 @@
 
 # check for failure
 if output.find(eyecatcher) >= 0:
- FAIL("sched-sedf let me set bogus slice (%s)" %(slice)
+ FAIL("sched-sedf let me set bogus slice (%s)" %(slice))
+
+# Stop the domain (nice shutdown)
+domain.stop()
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/04_sedf_slice_upper_neg.py
--- a/tools/xm-test/tests/sedf/04_sedf_slice_upper_neg.py Fri Mar 10 
20:00:33 2006
+++ b/tools/xm-test/tests/sedf/04_sedf_slice_upper_neg.py Fri Mar 10 
14:03:16 2006
@@ -32,7 +32,7 @@
 (name, domid, p, s, l, e, w) = params
 
 # set slice > than current period
-slice = str(int(p)+1)
+slice = str(float(p)+1)
 
 opts = "%s -s %s" %(domain.getName(), slice)
 (status, output) = traceCommand("xm sched-sedf %s" %(opts))
@@ -43,3 +43,6 @@
 # check for failure
 if output.find(eyecatcher) >= 0:
 FAIL("sched-sedf let me set a slice bigger than my period.")
+
+# Stop the domain (nice shutdown)
+domain.stop()
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/05_sedf_extratime_pos.py
--- a/tools/xm-test/tests/sedf/05_sedf_extratime_pos.py Fri Mar 10 20:00:33 2006
+++ b/tools/xm-test/tests/sedf/05_sedf_extratime_pos.py Fri Mar 10 14:03:16 2006
@@ -38,7 +38,7 @@
 # NB: when disabling extratime(=0), must pass in a slice
 opts = "%s -e %s" %(domain.getName(), extratime)
 if extratime == "0":
- opts += " -s %s" %( str( (int(p)/2)+1 ) )
+ opts += " -s %s" %( str( (float(p)/2)+1 ) )
 direction = "enable"
 
 (status, output) = traceCommand("xm sched-sedf %s" %(opts))
diff -r 9c63c1866b12 tools/xm-test/tests/sedf/06_sedf_extratime_disable_neg.py
--- a/tools/xm-test/tests/sedf/06_sedf_extratime_disable_neg.py Fri Mar 10 
20:00:33 2006
+++ b/tools/xm-test/tests/sedf/06_sedf_extratime_disable_neg.py Fri Mar 10 
14:03:16 2006
@@ -66,3 +66,6 @@
 # check for failure
 if output.find(eyecatcher) >= 0:
 FAIL("sched-sedf let me disable extratime without a non-zero slice")
+
+# Stop the domain (nice shutdown)
+domain.stop()
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
Previous by Date: Re: [Xen-devel] Grant tables from dom0 userspace? , Andrew Warfield
Next by Date: [XenPPC] Re: Linux PG_arch_1 conflict , Hollis Blanchard
Previous by Thread: Re: [Xen-devel] [PATCH] xm,xend: flesh out xm sched-sedf , Ewan Mellor
Next by Thread: [PATCH] Fix Makefile.am for -> Re: [Xen-devel] [PATCH] xm: cleanup sched-sedf and tests , Daniel Stekloff
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /