[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 |