diff options
author | Vineeth Pillai <viremana@linux.microsoft.com> | 2020-11-18 00:19:38 +0100 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2021-05-12 11:43:29 +0200 |
commit | 8039e96fcc1de30d5bcaf05da9ca2de46a800826 (patch) | |
tree | bb88e1ba8c783a34c54be34b5c33ccc405fac444 /kernel/sched/sched.h | |
parent | sched: Add core wide task selection and scheduling (diff) | |
download | linux-8039e96fcc1de30d5bcaf05da9ca2de46a800826.tar.xz linux-8039e96fcc1de30d5bcaf05da9ca2de46a800826.zip |
sched/fair: Fix forced idle sibling starvation corner case
If there is only one long running local task and the sibling is
forced idle, it might not get a chance to run until a schedule
event happens on any cpu in the core.
So we check for this condition during a tick to see if a sibling
is starved and then give it a chance to schedule.
Signed-off-by: Vineeth Pillai <viremana@linux.microsoft.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Don Hiatt <dhiatt@digitalocean.com>
Tested-by: Hongyu Ning <hongyu.ning@linux.intel.com>
Tested-by: Vincent Guittot <vincent.guittot@linaro.org>
Link: https://lkml.kernel.org/r/20210422123308.617407840@infradead.org
Diffstat (limited to '')
-rw-r--r-- | kernel/sched/sched.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index dd44a3127e9c..db555143380d 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1083,12 +1083,12 @@ struct rq { unsigned int core_enabled; unsigned int core_sched_seq; struct rb_root core_tree; - unsigned char core_forceidle; /* shared state */ unsigned int core_task_seq; unsigned int core_pick_seq; unsigned long core_cookie; + unsigned char core_forceidle; #endif }; |