[PATCH v2 0/6] RT Capacity Awareness Fixes & Improvements

From: Qais Yousef
Date: Sun Feb 23 2020 - 13:40:20 EST


Pavan, Steve and Dietmar pointed out a few issues and improvements that could
be done to the logic of RT Capacity Awareness.

This series implements them. The main issue that triggered the discussion is
the missing fallback mechanism in cpupri_find() if we are running on unfitting
CPU and no fitting CPU was found. In this case we fallback to the best
lowest_rq, which means unfitting tasks can move freely in unfitting CPUs, which
better honours the priority of the task.

This is implemented in patch 1.

The 2nd major issue is on wakeup, the logic that forces a push was incomplete.
Steve suggested using the overload flag, but Pavan pointed out this could cause
unnecessary IPIs.

Patch 5 addresses that.

The discussion on patches 1-4 seemed to have reached a consensus. Patch 5 still
needs more eyes staring at it.

Pavan, if you can provide your Reviewed-by on the patches you're happy with
that'd be appreciated. A Tested-by would be ever better :)

Discussion on v1 can be found here:

https://lore.kernel.org/lkml/20200214163949.27850-1-qais.yousef@xxxxxxx/

Thanks


Qais Yousef (6):
sched/rt: cpupri_find: implement fallback mechanism for !fit case
sched/rt: Re-instate old behavior in select_task_rq_rt
sched/rt: Optimize cpupri_find on non-heterogenous systems
sched/rt: allow pulling unfitting task
sched/rt: Better manage pushing unfit tasks on wakeup
sched/rt: Remove unnecessary assignment in inc/dec_rt_migration

kernel/sched/cpupri.c | 167 +++++++++++++++++++++++++++---------------
kernel/sched/cpupri.h | 6 +-
kernel/sched/rt.c | 137 ++++++++++++++++++++++++++++++----
kernel/sched/sched.h | 3 +
4 files changed, 237 insertions(+), 76 deletions(-)

--
2.17.1