Re: [PATCH v8 3/6] cpuset: Add cpuset.sched.load_balance flag to v2

From: Peter Zijlstra
Date: Mon May 28 2018 - 08:45:35 EST


On Thu, May 24, 2018 at 02:55:25PM -0400, Waiman Long wrote:
> On 05/24/2018 11:43 AM, Peter Zijlstra wrote:

> > I'm confused... why exactly do we have both domain and load_balance ?
>
> The domain is for partitioning the CPUs only. It doesn't change the load
> balancing state. So the load_balance flag is still need to turn on and
> off load balancing.

OK, so we have to two boolean flags, giving 4 possible states. Lets just
go through them one by on:

A) domain:0 load_balance:0 -- we have no exclusive domain, but have
load-balancing disabled across them. AFAICT this should be an invalid
state.

B) domain:0 load_balance:1 -- we have no exclusive domain, but have
load-balancing enabled. AFAICT this is the default state and is a
no-op.

C) domain:1 load_balance:0 -- we have an exclusive domain, and have
load-balancing disabled across it. This is, AFAICT, identical to
having a bunch of sub/sibling groups each with a single CPU domain.

D) domain:1 load_balance:1 -- we have an exclusive domain, and have
load-balancing enabled. This is a partition.

Now, I think I've overlooked the fact that load_balance==1 only really
means something when the parent's load_balance==0, but I'm not sure that
really changes anything.

So, afaict, the above only have two useful states: B and D. Which again
raises the question, why two knobs? What useful configurations does it
allow?