scx_bpf_task_set_slice(9)
π scx_bpf_task_set_slice β like, the manual page, bestie
okay so real talk, this is from the Kernel API Manual, section 9, and it's about setting a task's time slice. yes that time slice. put your seatbelt on, it's giving scheduler internals π
πΈ NAME πΈ
scx_bpf_task_set_slice β set the task's time slice, periodt
β¨ SYNOPSIS β¨
__bpf_kfunc bool scx_bpf_task_set_slice (struct task_struct *p , u64
slice , const struct bpf_prog_aux *aux );
look at that signature. icon behavior honestly π
π«Ά ARGUMENTS π«Ά
pβ the task of interest. the main character, if you will πsliceβ the time slice you're setting, in nsecs (nanoseconds, bestie, not seconds, don't embarrass yourself)auxβ this one's the implicit BPF argument used to accessbpf_prog_aux, and it's hidden from BPF progs. so like, it's there, but it's not for you π
π¦ DESCRIPTION π¦
So you wanna set p's time slice. valid. but first: p must be on the calling scheduler. no cap, that's not optional.
The value gets applied whether or not the caller holds p's rq lock β see the slice write rules above for the ownership model. (yes, "above." go read it, iykyk π)
Now the fun part, the vibes check on raising vs. shortening:
- Raising the slice is honored only while the scheduler holds
SCX_CAP_BASEonp's cpu. if it doesn't? that raise gets counted inSCX_EV_SLICE_DENIED. denied. not today. π - Shortening is always allowed. always. no gatekeeping. slay.
On the stashed path, the slice is packed into an atomic64_t together with the scheduler id and a flag bit β so if your slice is too large to fit, it gets clamped and counted in SCX_EV_SLICE_CLAMPED. it's giving "your baggage doesn't fit in this carry-on" π
Oh and SCX_SLICE_INF is preserved. special little guy, protected, we love to see it π§
Returns:trueon success.falseifpis not on the calling scheduler. that's the whole vibe check, fr fr.
π SEE ALSO π
Kernel file ./kernel/sched/ext/ext.c β and honestly the whole extended family showed up to the group chat:
scx_is_descendant(9), rq_is_open(9), scx_fill_cmask_scratch(9), scx_call_op_set_cpumask(9), nldsq_next_task(9), nldsq_cursor_next_task(9), nldsq_cursor_lost_task(9), scx_task_iter_start(9), scx_task_iter_unlock(9), scx_task_iter_relock(9), scx_task_iter_stop(9), scx_task_iter_next(9), scx_task_iter_next_locked(9), scx_dump_event(9), wait_ops_state(9), scx_cpu_valid(9), schedule_deferred(9), schedule_deferred_locked(9), dsq_insert_head(9), set_task_slice_keep_oob(9), scx_task_slice_ended(9), move_remote_task_to_local_dsq(9), unlink_dsq_and_switch_rq_lock(9), move_task_between_dsqs(9), dispatch_to_local_dsq(9), finish_dispatch(9), scx_prio_less(9), __scx_init_task(9), task_dead_and_done(9), scx_tg_sched(9), scx_tg_knob_sched(9), handle_lockup(9), scx_rcu_cpu_stall(9), scx_softlockup(9), scx_hardlockup(9), unbypass_renotify_idle(9), scx_bypass(9), scx_propagate_exit_irq_workfn(9), scx_flush_disable_work(9), print_scx_info(9), scx_bpf_dsq_insert___v2(9), __scx_bpf_dsq_insert_vtime(9), scx_bpf_dispatch_nr_slots(9), scx_bpf_dispatch_cancel(9), scx_bpf_dsq_move_to_local___v2(9), scx_bpf_dsq_move_set_slice(9), scx_bpf_dsq_move_set_vtime(9), scx_bpf_dsq_move(9), scx_bpf_dsq_move_vtime(9), scx_bpf_reenqueue_local(9), scx_bpf_create_dsq(9), scx_bpf_task_set_dsq_vtime(9), scx_bpf_kick_cpu(9), scx_bpf_kick_cid(9), scx_bpf_dsq_nr_queued(9), scx_bpf_destroy_dsq(9), bpf_iter_scx_dsq_new(9), bpf_iter_scx_dsq_next(9), bpf_iter_scx_dsq_destroy(9), scx_bpf_dsq_peek(9), scx_bpf_dsq_reenq(9), scx_bpf_reenqueue_local___v2(9), scx_bpf_exit_bstr(9), scx_bpf_error_bstr(9), scx_bpf_dump_bstr(9), scx_bpf_cpuperf_cap(9), scx_bpf_cidperf_cap(9), scx_bpf_cpuperf_cur(9), scx_bpf_cidperf_cur(9), scx_bpf_cpuperf_set(9), scx_bpf_cidperf_set(9), scx_bpf_nr_node_ids(9), scx_bpf_nr_cpu_ids(9), scx_bpf_nr_cids(9), scx_bpf_nr_online_cids(9), scx_bpf_online_cmask(9), scx_bpf_this_cid(9), scx_bpf_get_possible_cpumask(9), scx_bpf_get_online_cpumask(9), scx_bpf_put_cpumask(9), scx_bpf_task_running(9), scx_bpf_task_cpu(9), scx_bpf_task_cid(9), scx_bpf_locked_rq(9), scx_bpf_cpu_curr(9), scx_bpf_cid_curr(9), scx_bpf_tid_to_task(9), scx_bpf_now(9), scx_bpf_events(9), scx_bpf_task_cgroup(9)
like, the entire friend group. every single one. go say hi π
okay that's the page!! mwah π«Ά
π from./kernel/sched/extβ October 2026 β and the page itself isscx_bpf_task_set_slice(9). siging off, love u, read ur manpages π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms