Lines Matching full:scheduler

3  * BPF extensible scheduler class: Documentation/scheduler/sched-ext.rst
54 SCX_EXIT_PARENT_KILL, /* killed by parent scheduler */
98 * scx_exit_info is passed to ops.exit() to describe why the BPF scheduler is
149 * scheduler depends on pid lookup for dispatching, the task will be
153 * dispatched to the local DSQ on enqueue. If the BPF scheduler doesn't
185 * As the BPF scheduler may depend on ops.select_cpu() being invoked
189 * the BPF scheduler must be able to handle ops.enqueue() invoked on the
209 * scheduler can recover task pointers from stored tids via
212 * Only the root scheduler turns this on. A sub-sched may set the flag
213 * to declare a dependency on the lookup; if the root scheduler hasn't
238 * to the scheduler transition path.
312 * struct sched_ext_ops - Operation table for BPF scheduler implementation
314 * A BPF scheduler can implement an arbitrary scheduling policy by
316 * scheduling policy can also be implemented using the BPF scheduler
348 * @enqueue: Enqueue a task on the BPF scheduler
353 * scx_bpf_dsq_insert() or enqueue on the BPF scheduler. If not directly
354 * inserted, the bpf scheduler owns @p and if it fails to dispatch @p,
363 * @dequeue: Remove a task from the BPF scheduler
367 * Remove @p from the BPF scheduler. This is usually called to isolate
379 * @dispatch: Dispatch tasks from the BPF scheduler and/or user DSQs
384 * one or more tasks from the BPF scheduler into the DSQs using
502 * The BPF scheduler should ensure that other available tasks are
507 * scheduler can implement the request, return %true; otherwise, %false.
521 * the BPF scheduler. Should return %true if @a should run before @b.
524 * In a scheduler hierarchy, a pair spanning two schedulers is ordered
526 * called on tasks that the scheduler delegated to its sub-schedulers
576 * @init_task: Initialize a task to run in a BPF scheduler
580 * Either we're loading a BPF scheduler or a new task is being forked.
585 * loading will abort loading of the BPF scheduler. During a fork, it
595 * @p is exiting or the BPF scheduler is being unloaded. Perform any
613 * @p is exiting, leaving SCX or the BPF scheduler is being unloaded.
620 * @dump: Dump BPF scheduler state on error
623 * Use scx_bpf_dump() to generate BPF scheduler specific debug dump.
628 * @dump_cpu: Dump BPF scheduler state for a CPU on error
633 * Use scx_bpf_dump() to generate BPF scheduler specific debug dump for
640 * @dump_task: Dump BPF scheduler state for a runnable task on error
644 * Use scx_bpf_dump() to generate BPF scheduler specific debug dump for
656 * when the BPF scheduler is being loaded or when @cgrp is created. This
659 * Cgroup handovers also generate these ops: an enabling sub-scheduler
664 * When the BPF scheduler is being loaded or cgroups are being handed
670 * loading will abort loading of the BPF scheduler. During cgroup
681 * ops.cgroup_init() it pairs with, either when the BPF scheduler is
703 * the cpu controller can be coarser than the sub-scheduler topology.
743 * ops.cgroup_init() for @cgrp - at a sub-scheduler attach point, the
764 * scheduler.
778 * BPF scheduler to adjust its behavior accordingly.
787 * @sub_attach: Attach a sub-scheduler
790 * Return 0 to accept the sub-scheduler. -errno to reject.
795 * @sub_detach: Detach a sub-scheduler
863 * are finalized. A cid-form scheduler may call scx_bpf_cid_override()
869 * @init: Initialize the BPF scheduler
874 * @exit: Clean up after the BPF scheduler
913 * @hotplug_seq: A sequence number that may be set by the scheduler to
915 * If 0, no detection occurs. Otherwise, the scheduler will fail to
940 * Only the root scheduler's value is used. 0 means the default of 20
958 * Only the root scheduler's value is used. 0 means the default (5000).
965 * @sub_cgroup_id: When >1, attach the scheduler as a sub-scheduler
971 * @name: BPF scheduler's name
974 * '_' and '.' chars. Exposed via the ops file in the scheduler's sysfs
975 * directory, /sys/kernel/sched_ext/root/ops for the root scheduler,
976 * while the BPF scheduler is enabled.
993 * @cpu_acquire: A CPU is becoming available to the BPF scheduler
994 * @cpu: The CPU being acquired by the BPF scheduler.
997 * A CPU that was previously released from the BPF scheduler is now once
1003 * @cpu_release: A CPU is taken away from the BPF scheduler
1004 * @cpu: The CPU being released by the BPF scheduler.
1008 * scheduler. This could be because it was preempted by a higher
1126 * the core scheduler code silently picks a fallback CPU.
1165 * rapidly indicates that the BPF scheduler keeps re-deciding placements
1167 * %SCX_REENQ_MAX_REPEAT times gets its owning scheduler ejected.
1185 * scheduler lacked baseline cpu access on the task's cpu.
1205 * The number of times the scheduler attempted to insert a task that it
1209 * tell whether such an attempt is from a scheduler malfunction or an
1212 * scheduler.
1322 * a kick stays attributed to its scheduler.
1649 * @sch: scheduler whose arena hosts @bpf_ptr
1688 * to the BPF scheduler. It will never linger on a local DSQ or be
1694 * reenqueued back to the BPF scheduler.
1707 * restricted to cids the scheduler doesn't hold. The kernel runs
1727 * The BPF scheduler is responsible for triggering a follow-up
1837 * between the SCX core and the BPF scheduler. This allows the BPF
1838 * scheduler to dispatch tasks without strict ordering requirements, while
1852 * | QUEUED (owned by BPF scheduler)
1867 * or being manipulated by the core scheduler. The BPF scheduler has no
1872 * the BPF scheduler. The task's rq lock is held during this state.
1880 * Task is owned by the BPF scheduler. It's on a DSQ (dispatch queue)
1881 * and the BPF scheduler is responsible for dispatching it. A QSEQ
1888 * Transitional state while transferring a task from the BPF scheduler
1889 * back to the SCX core. This state indicates the BPF scheduler has
1935 * This state tracking allows the BPF scheduler to try to dispatch any task
1937 * reject/ignore invalid dispatches, simplifying the BPF scheduler
1942 SCX_OPSS_QUEUEING, /* in transit to the BPF scheduler */
1943 SCX_OPSS_QUEUED, /* owned by the BPF scheduler */
2029 * True when the currently loaded scheduler hierarchy is cid-form. All scheds
2118 * scx_root is published before the scheduler goes live and cleared only after
2119 * it is fully drained, so a path that only executes while the scheduler is live
2132 * excludes them. Return the root sched with a plain load, %NULL if no scheduler
2149 * @sch: scheduler to check
2151 * When a descendant scheduler enters bypass mode, bypassed tasks are scheduled
2152 * by the nearest non-bypassing ancestor, or the root scheduler if all ancestors
2270 * So if kf_tasks[] is set, @p's scheduler-protected fields are stable.
2286 * target a different scheduler call __SCX_CALL_OP_TASK() directly.
2348 * scx_has_subs - Whether any sub-scheduler exists
2362 * Return @p's scheduler instance. Must be called with @p's pi_lock or rq lock
2376 * Return @p's scheduler instance. The returned scx_sched is RCU protected.
2400 * To be called from kfuncs. Return the scheduler instance associated with the
2442 * Returns the parent scheduler or %NULL if @sch is root.