On Wed, Jul 17, 2019 at 08:31:25AM +0530, Subhra Mazumdar wrote:You are right on the premise. The whole knob thing came into existence
On 7/2/19 10:58 PM, Peter Zijlstra wrote:I really don't understand the premise of this soft affinity stuff then.
On Wed, Jun 26, 2019 at 03:47:17PM -0700, subhra mazumdar wrote:The scheduler is already not work conserving in many ways. Soft affinity is
The soft affinity CPUs present in the cpumask cpus_preferred is used by theI really dislike this implementation.
scheduler in two levels of search. First is in determining wake affine
which choses the LLC domain and secondly while searching for idle CPUs in
LLC domain. In the first level it uses cpus_preferred to prune out the
search space. In the second level it first searches the cpus_preferred and
then cpus_allowed. Using affinity_unequal flag it breaks early to avoid
any overhead in the scheduler fast path when soft affinity is not used.
This only changes the wake up path of the scheduler, the idle balancing
is unchanged; together they achieve the "softness" of scheduling.
I thought the idea was to remain work conserving (in so far as that
we're that anyway), so changing select_idle_sibling() doesn't make sense
to me. If there is idle, we use it.
Same for newidle; which you already retained.
only for those who want to use it and has no side effects when not used.
Also the way scheduler is implemented in the first level of search it may
not be possible to do it in a work conserving way, I am open to ideas.
I understood it was to allow spreading if under-utilized, but group when
over-utilized, but you're arguing for the exact opposite, which doesn't
make sense.