[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


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


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".


---
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 |   9 ++
 tools/libxc/xc_csched.c       |   4 +-
 tools/libxc/xc_csched2.c      |   4 +-
 tools/libxc/xc_rt.c           |  64 +++++++++-
 tools/libxc/xc_sedf.c         |   4 +-
 tools/libxl/libxl.c           | 209 +++++++++++++++++++++++++++----
 tools/libxl/libxl.h           |  17 +++
 tools/libxl/libxl_types.idl   |  16 +++
 tools/libxl/xl_cmdimpl.c      | 284 +++++++++++++++++++++++++++++++++++-------
 tools/libxl/xl_cmdtable.c     |  10 +-
 xen/common/Makefile           |   1 -
 xen/common/domctl.c           |   3 +
 xen/common/sched_credit.c     |  14 +--
 xen/common/sched_credit2.c    |   6 +-
 xen/common/sched_rt.c         |  80 +++++++++++-
 xen/common/schedule.c         |   5 +-
 xen/include/public/domctl.h   |  64 +++++++---
 18 files changed, 680 insertions(+), 118 deletions(-)

-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to