Messages in this thread | | | Subject | Re: [PATCH 1/2] sched/fair: Filter out locally-unsolvable misfit imbalances | From | Dietmar Eggemann <> | Date | Thu, 22 Apr 2021 11:48:37 +0200 |
| |
On 15/04/2021 19:58, Valentin Schneider wrote:
[...]
> Aggregate a misfit task's load into sgs->group_misfit_task_load only if > env->dst_cpu would grant it a capacity uplift. > > Note that the aforementioned capacity vs sgc->max_capacity comparison was > meant to prevent misfit task downmigration: candidate groups classified as > group_misfit_task but with a higher (max) CPU capacity than the destination CPU > would be discarded. This change makes it so said group_misfit_task > classification can't happen anymore, which may cause some undesired > downmigrations. > > Further tweak find_busiest_queue() to ensure this doesn't happen.
Maybe you can describe shortly here what's the new mechanism is you replace the old 'prevent misfit task downmigration' with.
Also note > find_busiest_queue() can now iterate over CPUs with a higher capacity than > the local CPU's, so add a capacity check there.
[...]
> +static inline void update_sg_lb_misfit_stats(struct lb_env *env, > + struct sched_group *group,
Seems to be not used.
> + struct sg_lb_stats *sgs, > + int *sg_status, > + int cpu) > +{ > + struct rq *rq = cpu_rq(cpu); > + > + if (!(env->sd->flags & SD_ASYM_CPUCAPACITY) || > + !rq->misfit_task_load) > + return; > + > + *sg_status |= SG_OVERLOAD; > + > + /* > + * Don't attempt to maximize load for misfit tasks that can't be > + * granted a CPU capacity uplift. > + */ > + if (cpu_capacity_greater(env->dst_cpu, cpu)) { > + sgs->group_misfit_task_load = max( > + sgs->group_misfit_task_load, > + rq->misfit_task_load); > + } > + > +} > +
[...]
> @@ -9288,6 +9310,8 @@ static struct sched_group *find_busiest_group(struct lb_env *env) > if (!sds.busiest) > goto out_balanced; > > + env->src_grp_type = busiest->group_type;
Maybe a short comment why you set it here in fbg(). It's only used later in fbq() for asym. CPU capacity sd but is set unconditionally.
[...]
| |