Messages in this thread | | | Date | Thu, 7 Oct 2010 14:00:09 -0700 | Subject | Re: [PATCH 2/2] sched: use the old min_vruntime when normalizing on dequeue | From | Dima Zavin <> |
| |
Mike,
Thanks for the Ack for patch 1/2, could you take a look at this one too?
Should I re-upload the series as v2 or you can pick the latest from patch 1 and take this one?
--Dima
On Tue, Sep 28, 2010 at 11:46 PM, Dima Zavin <dima@android.com> wrote: > After pulling the thread off the run-queue during a cgroup change, > the cfs_rq.min_vruntime gets recalculated. The dequeued thread's vruntime > then gets normalized to this new value. This can then lead to the thread > getting an unfair boost in the new group if the vruntime of the next > task in the old run-queue was way further ahead. > > Cc: Arve Hjønnevåg <arve@android.com> > Signed-off-by: Dima Zavin <dima@android.com> > --- > kernel/sched_fair.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c > index 008fe57..cb24ddb 100644 > --- a/kernel/sched_fair.c > +++ b/kernel/sched_fair.c > @@ -802,6 +802,8 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se) > static void > dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) > { > + u64 min_vruntime; > + > /* > * Update run-time statistics of the 'current'. > */ > @@ -826,6 +828,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) > if (se != cfs_rq->curr) > __dequeue_entity(cfs_rq, se); > account_entity_dequeue(cfs_rq, se); > + > + min_vruntime = cfs_rq->min_vruntime; > update_min_vruntime(cfs_rq); > > /* > @@ -834,7 +838,7 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) > * movement in our normalized position. > */ > if (!(flags & DEQUEUE_SLEEP)) > - se->vruntime -= cfs_rq->min_vruntime; > + se->vruntime -= min_vruntime; > } > > /* > -- > 1.6.6 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |