[RFC PATCH v2 0/2] sched/fair: Choose the CPU where short task is running during wake up

From: Chen Yu
Date: Sun Oct 23 2022 - 11:31:52 EST


At LPC 2022 Real-time and Scheduling Micro Conference we presented
the cross CPU wakeup issue. This patch is a text version of the
talk, and hopefully, we can clarify the problem and appreciate any
feedback.

The main purpose of this change is to avoid too many crosses CPU
wake up when the system is busy. Please refer to the commit log
of [PATCH 2/2] for detail.

This patch set is composed of two parts. The first part is to introduce
the definition of a short-duration task. The second part leverages the
first part to choose a CPU where only one short-duration task is running
on. This CPU is chosen as the candidate to place a woken task.

This version is modified based on the following feedback on v1:
1. Tim suggested raising the bar to choose a CPU with a short-duration
task, by checking if the short-duration task is the only runnable
task on the target CPU.
2. To address Peter's concern: would this patch inhibit spreading the
workload when there are idle CPUs around? The patch would only take
effect when the system is relatively busy, and only choose the CPU
where only one short-duration task is running.
3. Prateek, Honglwei and Hillf suggsted to prefer previous idle CPU to the
CPU with short-duration task running.

v1 link: https://lore.kernel.org/lkml/20220915165407.1776363-1-yu.c.chen@xxxxxxxxx/

Chen Yu (2):
sched/fair: Introduce short duration task check
sched/fair: Choose the CPU where short task is running during wake up

include/linux/sched.h | 8 ++++
kernel/sched/core.c | 2 +
kernel/sched/fair.c | 99 +++++++++++++++++++++++++++++++++++++++++
kernel/sched/features.h | 1 +
4 files changed, 110 insertions(+)

--
2.25.1