|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |