Re: [PATCH 2/2] sched/fair: Simple runqueue order on migrate
From: Tim Chen
Date: Tue Mar 29 2022 - 10:26:28 EST
On Tue, 2022-03-29 at 18:09 +0800, Abel Wu wrote:
> >
>
> >
> > +static void place_entity_migrate(struct cfs_rq *cfs_rq, struct sched_entity *se)
> > +{
> > + if (!sched_feat(PLACE_MIGRATE))
> > + return;
> > +
> > + if (cfs_rq->nr_running < se->migrated) {
> > + /*
> > + * Migrated to a shorter runqueue, go first because
> > + * we were under-served on the old runqueue.
> > + */
> > + se->vruntime = cfs_rq->min_vruntime;
> > + return;
> > + }
> > +
> > + /*
> > + * Migrated to a longer runqueue, go last because
> > + * we got over-served on the old runqueue.
> > + */
> > + se->vruntime = cfs_rq->min_vruntime + sched_vslice(cfs_rq, se);
> > +}
>
> Should se->migrated be cleared after place_entity_migrate?
>
It is cleared in update_stats_curr_start() before we actually run the task.
If the task gets migrated again before we run it, the se->migrated will also
be updated in migrate_task_rq_fair(). Looks like there is no need to
clear it here.
Tim