RT Capacity Awareness Fixes & Improvements
From: | Qais Yousef <qais.yousef-AT-arm.com> | |
To: | Ingo Molnar <mingo-AT-kernel.org>, Peter Zijlstra <peterz-AT-infradead.org>, Steven Rostedt <rostedt-AT-goodmis.org>, Dietmar Eggemann <dietmar.eggemann-AT-arm.com>, Pavan Kondeti <pkondeti-AT-codeaurora.org> | |
Subject: | [PATCH v2 0/6] RT Capacity Awareness Fixes & Improvements | |
Date: | Sun, 23 Feb 2020 18:39:55 +0000 | |
Message-ID: | <20200223184001.14248-1-qais.yousef@arm.com> | |
Cc: | Juri Lelli <juri.lelli-AT-redhat.com>, Vincent Guittot <vincent.guittot-AT-linaro.org>, Ben Segall <bsegall-AT-google.com>, Mel Gorman <mgorman-AT-suse.de>, linux-kernel-AT-vger.kernel.org, Qais Yousef <qais.yousef-AT-arm.com> | |
Archive-link: | Article |
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.... 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