scx_bpf_cpuperf_set(9)
okay so bestie, welcome to scx_bpf_cpuperf_set(9) from the Kernel API Manual β itβs giving βtell a CPU what relative performance target to aim forβ energy π
β¨
β¨ NAME β¨
scx_bpf_cpuperf_set β Set the relative performance target of a CPU, periodt. Thatβs the whole name, no cap π
π SYNOPSIS π
the signature is literally right here β copy it exactly, because spelling counts bestie:
__bpf_kfunc void scx_bpf_cpuperf_set (s32 cpu , u32 perf , const struct
bpf_prog_aux *aux );
π ARGUMENTS π
cpuβ the CPU of interest πΈperfβ the target performance level, and it lives in the range[0, SCX_CPUPERF_ONE]πauxβ the implicit BPF argument to accessbpf_prog_aux, hidden from BPF progs π so yes, itβs a backstage-pass situation
π DESCRIPTION π
Set the target performance level of cpu to perf β thatβs the move. perf is in a linear relative scale between 0 and SCX_CPUPERF_ONE. This determines how the schedutil cpufreq governor chooses the target frequency. Slay π
Real talk though: the actual performance level chosen, CPU grouping, and the overhead and latency of the operations are dependent on the hardware and cpufreq driver in use π. So consult hardware and cpufreq documentation for more information β theyβre the ones with the receipts. The current performance level can be monitored using scx_bpf_cpuperf_cur β iconique π¦
π¦ SEE ALSO π¦
go read these too, iykyk π β and yeah, the kernel file is part of the vibe:
- Kernel file
./kernel/sched/ext/ext.c 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_slice(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_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)
π«Ά thatβs the whole page, bestie β it lives in ./kernel/sched/ext, dated October 2026, and itβs titled scx_bpf_cpuperf_set(9) β byeee πβ¨
π¦ 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