[Goal] The current xl sched-rtds tool can only set the VCPUs of a domain to the same parameter although the scheduler supports VCPUs with different parameters. This patchset is to enable xl sched-rtds tool to configure the VCPUs of a domain with different parameters.
This per-VCPU settings can be used in many scenarios. For example, based on Dario's statement in our pervious discussion (http://lists.xen.org/archives/html/xen-devel/2014-09/msg00423.html), if there are two real-time applications, which have different timing requirements, running in a multi-VCPU guest domain, it is beneficial to pin these two applications to two seperate VCPUs with different scheduling parameters. What this patchset includes is a wanted and planned feature for RTDS scheudler(http://wiki.xenproject.org/wiki/RTDS-Based-Scheduler) in Xen 4.6. The interface design of the xl sched-rtds tool is based on Meng's previous discussion with Dario, George and Wei (http://lists.xen.org/archives/html/xen-devel/2015-02/msg02606.html). Basically, there are two main changes: 1) in xl, we create an array that records all VCPUs whose parameters are about to modify or output. 2) in libxl, we receive the array and call different xc functions to handle it. 3) in xen and libxc, we use XEN_DOMCTL_SCHEDOP_getvcpuinfo/putvcpuinfo(introduced by this patchset) as the hypercall for per-VCPU operations(get/set method). [Usage] With this patchset in use, xl sched-rtds tool can: 1) show the budget and period of each VCPU of each domain, by using "xl sched-rtds -v all" command. An example would be like: # xl sched-rtds -v all Cpupool Pool-0: sched=RTDS Name ID VCPU Period Budget Domain-0 0 0 10000 4000 vm1 1 0 300 150 vm1 1 1 400 200 vm1 1 2 10000 4000 vm1 1 3 1000 500 vm2 2 0 10000 4000 vm2 2 1 10000 4000 Using "xl sched-rtds" will output the default scheduling parameters for each domain. An example would be like: # xl sched-rtds Cpupool Pool-0: sched=RTDS Name ID Period Budget Domain-0 0 10000 4000 vm1 1 10000 4000 vm2 2 10000 4000 2) show the budget and period of each VCPU of a specific domain, by using, e.g., "xl sched-rtds -d vm1 -v all" command. The output would be like: # xl sched-rtds -d vm1 -v all Name ID VCPU Period Budget vm1 1 0 300 150 vm1 1 1 400 200 vm1 1 2 10000 4000 vm1 1 3 1000 500 To show a subset of the parameters of the VCPUs of a specific domain, please use, e.g.,"xl sched-rtds -d vm1 -v 0 -v 3" command. The output would be: # xl sched-rtds -d vm1 -v 0 -v 3 Name ID VCPU Period Budget vm1 1 0 300 150 vm1 1 3 1000 500 Using command, e.g., "xl sched-rtds -d vm1" will output the default scheduling parameters of vm1. An example would be like: # xl sched-rtds -d vm1 Name ID Period Budget vm1 1 10000 4000 3) Users can set the budget and period of multiple VCPUs of a specific domain with only one command, e.g., "xl sched-rtds -d vm1 -v 0 -p 100 -b 50 -v 3 -p 300 -b 150". Users can set all VCPUs with the same parameters, by one command. e.g., "xl sched-rtds -d vm1 -v all -p 500 -b 250". --- Previous conclusion: On PATCH v4, our concern was about the usage of hypercall_preemption_check and the print of warning message (both in xen). These issues are addressed in this patch. CC: <dario.faggi...@citrix.com> CC: <george.dun...@eu.citrix.com> CC: <dgol...@seas.upenn.edu> CC: <men...@cis.upenn.edu> CC: <jbeul...@suse.com> CC: <wei.l...@citrix.com> CC: <lichong...@gmail.com> CC: <ian.jack...@eu.citrix.com> CC: <ian.campb...@eu.citrix.com> Chong Li (4): xen: enable per-VCPU parameter settings for RTDS scheduler libxc: enable per-VCPU parameter settings for RTDS scheduler libxl: enable per-VCPU parameter settings for RTDS scheduler xl: enable per-VCPU parameter settings for RTDS scheduler docs/man/xl.pod.1 | 4 + tools/libxc/include/xenctrl.h | 8 ++ tools/libxc/xc_rt.c | 56 ++++++++ tools/libxl/libxl.c | 249 +++++++++++++++++++++++++++++++--- tools/libxl/libxl.h | 19 +++ tools/libxl/libxl_types.idl | 16 +++ tools/libxl/xl_cmdimpl.c | 305 +++++++++++++++++++++++++++++++++++++----- tools/libxl/xl_cmdtable.c | 10 +- xen/common/domctl.c | 5 + xen/common/sched_credit.c | 4 + xen/common/sched_credit2.c | 4 + xen/common/sched_rt.c | 127 +++++++++++++++--- xen/common/schedule.c | 15 ++- xen/include/public/domctl.h | 57 ++++++-- 14 files changed, 787 insertions(+), 92 deletions(-) -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel