This is a resend of the union of two patches I sent to xen-tools quite
a while ago. I imagine they just got lost, but if they were not
applied for a reason, please let me know.
The patch includes the discussed xm command renames, as well as a
cleanup of the "bogus" argument code, which avoids changing the
argument list so that errors can be reported consistently.
Signed-off-by: Dan Smith <danms@xxxxxxxxxx>
diff -r 5959fae4722a docs/misc/sedf_scheduler_mini-HOWTO.txt
--- a/docs/misc/sedf_scheduler_mini-HOWTO.txt Wed Sep 14 13:37:50 2005
+++ b/docs/misc/sedf_scheduler_mini-HOWTO.txt Wed Sep 14 08:14:12 2005
@@ -10,7 +10,7 @@
Usage:
-add "sched=sedf" on Xen's boot command-line
-create domains as usual
- -use "xm sedf <dom-id> <period> <slice> <latency-hint> <extra> <weight>"
+ -use "xm sched-sedf <dom-id> <period> <slice> <latency-hint> <extra>
<weight>"
Where:
-period/slice are the normal EDF scheduling parameters in nanosecs
-latency-hint is the scaled period in case the domain is doing heavy I/O
@@ -22,23 +22,23 @@
Examples:
normal EDF (20ms/5ms):
- xm sedf <dom-id> 20000000 5000000 0 0 0
+ xm sched-sedf <dom-id> 20000000 5000000 0 0 0
best-effort domains (i.e. non-realtime):
- xm sedf <dom-id> 20000000 0 0 1 0
+ xm sched-sedf <dom-id> 20000000 0 0 1 0
normal EDF (20ms/5ms) + share of extra-time:
- xm sedf <dom-id> 20000000 5000000 0 1 0
+ xm sched-sedf <dom-id> 20000000 5000000 0 1 0
4 domains with weights 2:3:4:2
- xm sedf <d1> 0 0 0 0 2
- xm sedf <d2> 0 0 0 0 3
- xm sedf <d3> 0 0 0 0 4
- xm sedf <d4> 0 0 0 0 2
+ xm sched-sedf <d1> 0 0 0 0 2
+ xm sched-sedf <d2> 0 0 0 0 3
+ xm sched-sedf <d3> 0 0 0 0 4
+ xm sched-sedf <d4> 0 0 0 0 2
1 fully-specified (10ms/3ms) domain, 3 other domains share
available rest in 2:7:3 ratio:
- xm sedf <d1> 10000000 3000000 0 0 0
- xm sedf <d2> 0 0 0 0 2
- xm sedf <d3> 0 0 0 0 7
- xm sedf <d4> 0 0 0 0 3
\ No newline at end of file
+ xm sched-sedf <d1> 10000000 3000000 0 0 0
+ xm sched-sedf <d2> 0 0 0 0 2
+ xm sched-sedf <d3> 0 0 0 0 7
+ xm sched-sedf <d4> 0 0 0 0 3
\ No newline at end of file
diff -r 5959fae4722a tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Wed Sep 14 13:37:50 2005
+++ b/tools/python/xen/xm/main.py Wed Sep 14 08:14:12 2005
@@ -64,7 +64,6 @@
Domain Commands:
console <DomId> attach to console of DomId
cpus-list <DomId> <VCpu> get the list of cpus for a VCPU
- cpus-set <DomId> <VCpu> <CPUS> set which cpus a VCPU can use.
create <ConfigFile> create a domain
destroy <DomId> terminate a domain immediately
domid <DomName> convert a domain name to a domain id
@@ -83,6 +82,7 @@
vcpu-enable <DomId> <VCPU> disable VCPU in a domain
vcpu-disable <DomId> <VCPU> enable VCPU in a domain
vcpu-list <DomId> get the list of VCPUs for a domain
+ vcpu-pin <DomId> <VCpu> <CPUS> set which cpus a VCPU can use.
Xen Host Commands:
dmesg [--clear] read or clear Xen's message buffer
@@ -91,14 +91,15 @@
top monitor system and domains in real-time
Scheduler Commands:
- bvt <options> set BVT scheduler parameters
- bvt_ctxallow <Allow> set the BVT scheduler context switch allowance
- sedf <options> set simple EDF parameters
+ sched-bvt <options> set BVT scheduler parameters
+ sched-bvt-ctxallow <Allow>
+ Set the BVT scheduler context switch allowance
+ sched-sedf <options> set simple EDF parameters
Virtual Device Commands:
- block-create <DomId> <BackDev> <FrontDev> <Mode> [BackDomId]
+ block-attach <DomId> <BackDev> <FrontDev> <Mode> [BackDomId]
Create a new virtual block device
- block-destroy <DomId> <DevId> Destroy a domain's virtual block device
+ block-detach <DomId> <DevId> Destroy a domain's virtual block device
block-list <DomId> List virtual block devices for a domain
block-refresh <DomId> <DevId> Refresh a virtual block device for a domain
network-limit <DomId> <Vif> <Credit> <Period>
@@ -172,8 +173,7 @@
from xen.xm import create
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- create.main(args)
+ create.main(["bogus"] + args)
def xm_save(args):
arg_check(args,2,"save")
@@ -201,8 +201,7 @@
from xen.xm import migrate
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- migrate.main(args)
+ migrate.main(["bogus"] + args)
def xm_list(args):
use_long = 0
@@ -289,8 +288,7 @@
vcpuinfo)
def xm_vcpu_list(args):
- args.insert(0,"-v")
- xm_list(args)
+ xm_list(["-v"] + args)
def xm_destroy(args):
arg_check(args,1,"destroy")
@@ -298,33 +296,28 @@
from xen.xm import destroy
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- destroy.main(args)
+ destroy.main(["bogus"] + args)
def xm_reboot(args):
arg_check(args,1,"reboot")
+ from xen.xm import shutdown
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- args.insert(2,"-R")
- from xen.xm import shutdown
- shutdown.main(args)
+ shutdown.main(["bogus", "-R"] + args)
def xm_shutdown(args):
arg_check(args,1,"shutdown")
+ from xen.xm import shutdown
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- from xen.xm import shutdown
- shutdown.main(args)
+ shutdown.main(["bogus"] + args)
def xm_sysrq(args):
from xen.xm import sysrq
# ugly hack because the opt parser apparently wants
# the subcommand name just to throw it away!
- args.insert(0,"bogus")
- sysrq.main(args)
+ sysrq.main(["bogus"] + args)
def xm_pause(args):
arg_check(args, 1, "pause")
@@ -358,8 +351,8 @@
return cpumap
-def xm_cpus_set(args):
- arg_check(args, 3, "cpus-set")
+def xm_vcpu_pin(args):
+ arg_check(args, 3, "vcpu-pin")
dom = args[0]
vcpu = int(args[1])
@@ -423,22 +416,22 @@
dom = server.xend_domain(name)
print sxp.child_value(dom, 'name')
-def xm_bvt(args):
- arg_check(args, 6, "bvt")
+def xm_sched_bvt(args):
+ arg_check(args, 6, "sched-bvt")
dom = args[0]
v = map(long, args[1:6])
from xen.xend.XendClient import server
server.xend_domain_cpu_bvt_set(dom, *v)
-def xm_bvt_ctxallow(args):
- arg_check(args, 1, "bvt_ctxallow")
+def xm_sched_bvt_ctxallow(args):
+ arg_check(args, 1, "sched-bvt-ctxallow")
slice = int(args[0])
from xen.xend.XendClient import server
server.xend_node_cpu_bvt_slice_set(slice)
-def xm_sedf(args):
- arg_check(args, 6, "sedf")
+def xm_sched_sedf(args):
+ arg_check(args, 6, "sched-sedf")
dom = args[0]
v = map(int, args[1:6])
@@ -482,10 +475,11 @@
fn=set_true, default=0,
use="Clear the contents of the Xen message buffer.")
# Work around for gopts
- args.insert(0,"bogus")
- gopts.parse(args)
- if not (1 <= len(args) <= 2):
- err('Invalid arguments: ' + str(args))
+ myargs = args
+ myargs.insert(0, "bogus")
+ gopts.parse(myargs)
+ if not (1 <= len(myargs) <= 2):
+ err('Invalid arguments: ' + str(myargs))
from xen.xend.XendClient import server
if not gopts.vals.clear:
@@ -512,6 +506,14 @@
sxp.show(x)
print
+def xm_network_attach(args):
+
+ print "Not implemented"
+
+def xm_network_detach(args):
+
+ print "Not implemented"
+
def xm_block_list(args):
arg_check(args,1,"block-list")
dom = args[0]
@@ -520,11 +522,14 @@
sxp.show(x)
print
-def xm_block_create(args):
+def xm_block_attach(args):
n = len(args)
+ if n == 0:
+ usage("block-attach")
+
if n < 4 or n > 5:
err("%s: Invalid argument(s)" % args[0])
- usage("block-create")
+ usage("block-attach")
dom = args[0]
vbd = ['vbd',
@@ -546,8 +551,8 @@
from xen.xend.XendClient import server
server.xend_domain_device_refresh(dom, 'vbd', dev)
-def xm_block_destroy(args):
- arg_check(args,2,"block-destroy")
+def xm_block_detach(args):
+ arg_check(args,2,"block-detach")
dom = args[0]
dev = args[1]
@@ -615,7 +620,7 @@
"mem-max": xm_mem_max,
"mem-set": xm_mem_set,
# cpu commands
- "cpus-set": xm_cpus_set,
+ "vcpu-pin": xm_vcpu_pin,
# "cpus-list": xm_cpus_list,
"vcpu-enable": xm_vcpu_enable,
"vcpu-disable": xm_vcpu_disable,
@@ -631,17 +636,19 @@
"info": xm_info,
"log": xm_log,
# scheduler
- "bvt": xm_bvt,
- "bvt_ctxallow": xm_bvt_ctxallow,
- "sedf": xm_sedf,
+ "sched-bvt": xm_sched_bvt,
+ "sched-bvt-ctxallow": xm_sched_bvt_ctxallow,
+ "sched-sedf": xm_sched_sedf,
# block
- "block-create": xm_block_create,
- "block-destroy": xm_block_destroy,
+ "block-attach": xm_block_attach,
+ "block-detach": xm_block_detach,
"block-list": xm_block_list,
"block-refresh": xm_block_refresh,
# network
"network-limit": xm_network_limit,
"network-list": xm_network_list,
+ "network-attach": xm_network_attach,
+ "network-detach": xm_network_detach,
# vnet
"vnet-list": xm_vnet_list,
"vnet-create": xm_vnet_create,
@@ -719,8 +726,6 @@
sys.exit(1)
except XendError, ex:
if len(args) > 0:
- if args[0] == "bogus":
- args.remove("bogus")
handle_xend_error(argv[1], args[0], ex)
else:
print "Unexpected error:", sys.exc_info()[0]
--
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms@xxxxxxxxxx
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|