From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chong Li Subject: [PATCH v4 for Xen 4.6 0/4] Enable per-VCPU parameter settings for RTDS scheduler Date: Fri, 10 Jul 2015 23:52:32 -0500 Message-ID: <1436590356-3706-1-git-send-email-chong.li@wustl.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Chong Li , wei.liu2@citrix.com, george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, ian.campbell@eu.citrix.com, mengxu@cis.upenn.edu, jbeulich@suse.com, lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org [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". --- CC: CC: CC: CC: CC: CC: CC: CC: CC: 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_rt.c | 58 ++++++++- tools/libxl/libxl.c | 265 ++++++++++++++++++++++++++++++++++---- tools/libxl/libxl.h | 17 +++ tools/libxl/libxl_types.idl | 16 +++ tools/libxl/xl_cmdimpl.c | 292 ++++++++++++++++++++++++++++++++++++++---- tools/libxl/xl_cmdtable.c | 10 +- xen/common/domctl.c | 3 + xen/common/sched_rt.c | 100 ++++++++++++++- xen/common/schedule.c | 18 ++- xen/include/public/domctl.h | 61 ++++++--- 12 files changed, 770 insertions(+), 83 deletions(-) -- 1.9.1