[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 0/4] xen/tools: Credit2: implement caps.



The fact that a domain has an utilization cap, means the following:

 - a domain with an utilization cap, will not run for more than the cap
   itself;

 - cap is expressed in terms of % of physical CPU time. A domain that must
   not use more than 1/4 of _one_ physical CPU, will be given a cap of 25%;
   a domain that must not use more than 1+1/2 of physical CPU time, will be
   given a cap of 150%;

 - caps are per-domain. So, it's the overall execution time of all the
   vCPUs of the domain that will stay below the cap.

This is implemented as follows:

 - each domain has a budget. This budget is periodically replenished;

 - when the vCPUs run, they burn the budget (in a similar way to how
   they burn credits).

 - the budget is, basically, the amount of time that the vCPUs of the
   domain can use every period;

 - when there is no budget any longer, the vCPUs of the domain can't
   run, and are "parked". When there is some budget again (e.g., because
   of a replenishment, they are "unparked".

This budgetting mechanism is implemented on top of Credit1, and hence it
is completely independent from them, and changing weights of a domain and
setting a cap for it, are orthogonal operations.

Note that caps already exist in Credit1, however, there:
 - because of the way it is implemented, it is very imprecise. E.g., I've
   seen Credit1 domains with caps of 80%, oscillating between 72% and 88%.
   With this patch applied (and using Credit2, of course), I've never seen
   an error bigget than +/- 1% (this is mostly looking at xentop, and doing
   some calculation from traces, I'll investigate more and send in the
   numbers, but so far, so good :-D);
 - because of the way it is implemented, it works very bad (if at all) if
   combined with changing the domains' weights and/or pinning;
 - because of the way it is implemented, it may cause a guest with a cap
   incur in livelock, deadlock, or crash because of watchdogs. With this
   patch applied (and using Credit2, of course), I've not seen anything
   like that (but I'll continue running more tests).

Here's the git branch:
 git://xenbits.xen.org/people/dariof/xen.git  rel/sched/credit2-caps
 
http://xenbits.xen.org/gitweb/?p=people/dariof/xen.git;a=shortlog;h=refs/heads/rel/sched/credit2-caps

 https://travis-ci.org/fdario/xen/builds/240749240

Thanks and Regards,
Dario
---
Dario Faggioli (4):
      xen: credit2: implement utilization cap
      xen: credit2: allow to set and get utilization cap
      xen: credit2: improve distribution of budget (for domains with caps)
      libxl/xl: allow to get and set cap on Credit2.

 tools/libxl/libxl_sched.c   |   21 +
 tools/xentrace/formats      |    2 
 tools/xentrace/xenalyze.c   |   10 -
 tools/xl/xl_cmdtable.c      |    1 
 tools/xl/xl_sched.c         |   25 +-
 xen/common/sched_credit2.c  |  623 ++++++++++++++++++++++++++++++++++++++++---
 xen/include/public/domctl.h |    1 
 xen/include/xen/sched.h     |    3 
 8 files changed, 633 insertions(+), 53 deletions(-)
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.