aboutsummaryrefslogtreecommitdiffstats
path: root/init/init_task.c
diff options
context:
space:
mode:
authorTejun Heo <[email protected]>2024-06-18 20:09:20 +0000
committerTejun Heo <[email protected]>2024-06-18 20:09:20 +0000
commit7b0888b7cc1924b74ce660e02f6211df8dd46e7b (patch)
tree6fdb9885038f5771d484574fa60a856db4c6d28a /init/init_task.c
parentsched_ext: Bypass BPF scheduler while PM events are in progress (diff)
downloadkernel-7b0888b7cc1924b74ce660e02f6211df8dd46e7b.tar.gz
kernel-7b0888b7cc1924b74ce660e02f6211df8dd46e7b.zip
sched_ext: Implement core-sched support
The core-sched support is composed of the following parts: - task_struct->scx.core_sched_at is added. This is a timestamp which can be used to order tasks. Depending on whether the BPF scheduler implements custom ordering, it tracks either global FIFO ordering of all tasks or local-DSQ ordering within the dispatched tasks on a CPU. - prio_less() is updated to call scx_prio_less() when comparing SCX tasks. scx_prio_less() calls ops.core_sched_before() if available or uses the core_sched_at timestamp. For global FIFO ordering, the BPF scheduler doesn't need to do anything. Otherwise, it should implement ops.core_sched_before() which reflects the ordering. - When core-sched is enabled, balance_scx() balances all SMT siblings so that they all have tasks dispatched if necessary before pick_task_scx() is called. pick_task_scx() picks between the current task and the first dispatched task on the local DSQ based on availability and the core_sched_at timestamps. Note that FIFO ordering is expected among the already dispatched tasks whether running or on the local DSQ, so this path always compares core_sched_at instead of calling into ops.core_sched_before(). qmap_core_sched_before() is added to scx_qmap. It scales the distances from the heads of the queues to compare the tasks across different priority queues and seems to behave as expected. v3: Fixed build error when !CONFIG_SCHED_SMT reported by Andrea Righi. v2: Sched core added the const qualifiers to prio_less task arguments. Explicitly drop them for ops.core_sched_before() task arguments. BPF enforces access control through the verifier, so the qualifier isn't actually operative and only gets in the way when interacting with various helpers. Signed-off-by: Tejun Heo <[email protected]> Reviewed-by: David Vernet <[email protected]> Reviewed-by: Josh Don <[email protected]> Cc: Andrea Righi <[email protected]>
Diffstat (limited to 'init/init_task.c')
0 files changed, 0 insertions, 0 deletions