Re: [PATCH RFC] cpumask: Randomly distribute the tasks within affinity mask

From: Peter Zijlstra
Date: Thu Oct 12 2023 - 04:06:13 EST


On Wed, Oct 11, 2023 at 04:55:35PM -0700, Josh Don wrote:
> Hey Peter,
>
> > +static struct cpumask *root_domain_allowed(struct cpumask *newmask,
> > + struct cpumask *scratch,
> > + struct cpumask *valid)
> > +{
> > + struct root_domain *rd;
> > + struct cpumask *mask;
> > + struct rq *rq;
> > +
> > + int first = cpumask_first_and(newmask, valid);
> > + if (first >= nr_cpu_ids)
> > + return NULL;
>
> This picks the first arbitrarily, but isn't it possible for the mask
> to span both isolated and non-isolated cpus? In which case, the rest
> of this just boils down to chance (ie. whatever the span happens to be
> for the first cpu here)?

Yes, but it matches historical behaviour :/

Like I said, ideally we'd flat out reject masks like this, but...