Message ID | 20160318190521.8117.21983.stgit@Solace.station (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Mar 18, 2016 at 7:05 PM, Dario Faggioli <dario.faggioli@citrix.com> wrote: > as other schedulers are doing already: if the idle vcpu > is picked and scheduled, there is no need to reprogram the > scheduler timer to fire and invoke csched2_schedule() > again in future. > > Tickling or external events will serve as pokes, when > necessary, but until we can, we should just stay idle. > > Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com> > Reported-by: Tianyang Chen <tiche@seas.upenn.edu> > Suggested-by: George Dunlap <dunlapg@umich.edu> This should be my work address (george.dunlap@citrix.com). With that change: Acked-by: George Dunlap <george.dunlap@citrix.com> > --- > Cc: George Dunlap <dunlapg@umich.edu> > Cc: Tianyang Chen <tiche@seas.upenn.edu> > --- > xen/common/sched_credit2.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c > index 2fd4175..4ff26c9 100644 > --- a/xen/common/sched_credit2.c > +++ b/xen/common/sched_credit2.c > @@ -1540,8 +1540,12 @@ csched2_runtime(const struct scheduler *ops, int cpu, struct csched2_vcpu *snext > struct csched2_runqueue_data *rqd = RQD(ops, cpu); > struct list_head *runq = &rqd->runq; > > + /* > + * If we're idle, just stay so. Others (or external events) > + * will poke us when necessary. > + */ > if ( is_idle_vcpu(snext->vcpu) ) > - return CSCHED2_MAX_TIMER; > + return -1; > > /* General algorithm: > * 1) Run until snext's credit will be 0 >
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c index 2fd4175..4ff26c9 100644 --- a/xen/common/sched_credit2.c +++ b/xen/common/sched_credit2.c @@ -1540,8 +1540,12 @@ csched2_runtime(const struct scheduler *ops, int cpu, struct csched2_vcpu *snext struct csched2_runqueue_data *rqd = RQD(ops, cpu); struct list_head *runq = &rqd->runq; + /* + * If we're idle, just stay so. Others (or external events) + * will poke us when necessary. + */ if ( is_idle_vcpu(snext->vcpu) ) - return CSCHED2_MAX_TIMER; + return -1; /* General algorithm: * 1) Run until snext's credit will be 0
as other schedulers are doing already: if the idle vcpu is picked and scheduled, there is no need to reprogram the scheduler timer to fire and invoke csched2_schedule() again in future. Tickling or external events will serve as pokes, when necessary, but until we can, we should just stay idle. Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com> Reported-by: Tianyang Chen <tiche@seas.upenn.edu> Suggested-by: George Dunlap <dunlapg@umich.edu> --- Cc: George Dunlap <dunlapg@umich.edu> Cc: Tianyang Chen <tiche@seas.upenn.edu> --- xen/common/sched_credit2.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)