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

Re: [Xen-devel] [Patch] credit: Update other parameters when setting tslice_ms



CC'ing Dario, so that he has a message to reply to.

On 11/13/2013 4:49 PM, Nathan Studer wrote:
> From: Nate Studer <nate.studer@xxxxxxxxxxxxxxx>
> 
> Add a utility function to update the rest of the timeslice
> accounting fields when updating the timeslice of the
> credit scheduler, so that capped CPUs behave correctly.
> 
> Before this patch changing the timeslice to a value higher
> than the default would result in a domain not utilizing
> its full capacity and changing the timeslice to a value
> lower than the default would result in a domain exceeding
> its capacity.
> 
> Signed-off-by: Nate Studer <nate.studer@xxxxxxxxxxxxxxx>
> ---
>  xen/common/sched_credit.c |   20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)
>  mode change 100644 => 100755 xen/common/sched_credit.c
> 
> diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c
> old mode 100644
> new mode 100755
> index 28dafcf..db5512e
> --- a/xen/common/sched_credit.c
> +++ b/xen/common/sched_credit.c
> @@ -1071,6 +1071,17 @@ csched_dom_cntl(
>      return 0;
>  }
>  
> +static inline void
> +__csched_set_tslice(struct csched_private *prv, unsigned timeslice)
> +{
> +    prv->tslice_ms = timeslice;
> +    prv->ticks_per_tslice = CSCHED_TICKS_PER_TSLICE;
> +    if ( prv->tslice_ms < prv->ticks_per_tslice )
> +        prv->ticks_per_tslice = 1;
> +    prv->tick_period_us = prv->tslice_ms * 1000 / prv->ticks_per_tslice;
> +    prv->credits_per_tslice = CSCHED_CREDITS_PER_MSEC * prv->tslice_ms;
> +}
> +
>  static int
>  csched_sys_cntl(const struct scheduler *ops,
>                          struct xen_sysctl_scheduler_op *sc)
> @@ -1089,7 +1100,7 @@ csched_sys_cntl(const struct scheduler *ops,
>                      || params->ratelimit_us < 
> XEN_SYSCTL_SCHED_RATELIMIT_MIN))
>              || MICROSECS(params->ratelimit_us) > 
> MILLISECS(params->tslice_ms) )
>                  goto out;
> -        prv->tslice_ms = params->tslice_ms;
> +        __csched_set_tslice(prv, params->tslice_ms);
>          prv->ratelimit_us = params->ratelimit_us;
>          /* FALLTHRU */
>      case XEN_SYSCTL_SCHEDOP_getinfo:
> @@ -1899,12 +1910,7 @@ csched_init(struct scheduler *ops)
>          sched_credit_tslice_ms = CSCHED_DEFAULT_TSLICE_MS;
>      }
>  
> -    prv->tslice_ms = sched_credit_tslice_ms;
> -    prv->ticks_per_tslice = CSCHED_TICKS_PER_TSLICE;
> -    if ( prv->tslice_ms < prv->ticks_per_tslice )
> -        prv->ticks_per_tslice = 1;
> -    prv->tick_period_us = prv->tslice_ms * 1000 / prv->ticks_per_tslice;
> -    prv->credits_per_tslice = CSCHED_CREDITS_PER_MSEC * prv->tslice_ms;
> +    __csched_set_tslice(prv, sched_credit_tslice_ms);
>  
>      if ( MICROSECS(sched_ratelimit_us) > MILLISECS(sched_credit_tslice_ms) )
>      {
> 


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


 


Rackspace

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