mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
Merge tag 'sched_ext-for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext
Pull sched_ext updates from Tejun Heo: - Add support for cgroup "cpu.max" interface - Code organization cleanup so that ext_idle.c doesn't depend on the source-file-inclusion build method of sched/ - Drop UP paths in accordance with sched core changes - Documentation and other misc changes * tag 'sched_ext-for-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext: sched_ext: Fix scx_bpf_reenqueue_local() reference sched_ext: Drop kfuncs marked for removal in 6.15 sched_ext, rcu: Eject BPF scheduler on RCU CPU stall panic kernel/sched/ext.c: fix typo "occured" -> "occurred" in comments sched_ext: Add support for cgroup bandwidth control interface sched_ext, sched/core: Factor out struct scx_task_group sched_ext: Return NULL in llc_span sched_ext: Always use SMP versions in kernel/sched/ext_idle.h sched_ext: Always use SMP versions in kernel/sched/ext_idle.c sched_ext: Always use SMP versions in kernel/sched/ext.h sched_ext: Always use SMP versions in kernel/sched/ext.c sched_ext: Documentation: Clarify time slice handling in task lifecycle sched_ext: Make scx_locked_rq() inline sched_ext: Make scx_rq_bypassing() inline sched_ext: idle: Make local functions static in ext_idle.c sched_ext: idle: Remove unnecessary ifdef in scx_bpf_cpu_node()
This commit is contained in:
@@ -313,16 +313,21 @@ by a sched_ext scheduler:
|
||||
ops.runnable(); /* Task becomes ready to run */
|
||||
|
||||
while (task is runnable) {
|
||||
if (task is not in a DSQ) {
|
||||
if (task is not in a DSQ && task->scx.slice == 0) {
|
||||
ops.enqueue(); /* Task can be added to a DSQ */
|
||||
|
||||
/* A CPU becomes available */
|
||||
/* Any usable CPU becomes available */
|
||||
|
||||
ops.dispatch(); /* Task is moved to a local DSQ */
|
||||
}
|
||||
ops.running(); /* Task starts running on its assigned CPU */
|
||||
ops.tick(); /* Called every 1/HZ seconds */
|
||||
while (task->scx.slice > 0 && task is runnable)
|
||||
ops.tick(); /* Called every 1/HZ seconds */
|
||||
ops.stopping(); /* Task stops running (time slice expires or wait) */
|
||||
|
||||
/* Task's CPU becomes available */
|
||||
|
||||
ops.dispatch(); /* task->scx.slice can be refilled */
|
||||
}
|
||||
|
||||
ops.quiescent(); /* Task releases its assigned CPU (wait) */
|
||||
|
||||
Reference in New Issue
Block a user