select_numa_node_cpu(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… select_numa_node_cpu(9) β€” from the Kernel API Manual, bestie ✨

okay so you found the select_numa_node_cpu page, and honestly? good taste. this one's a lil function that helps you pick a CPU based on a NUMA node. let's get into it πŸŽ€


🌸 NAME 🌸

select_numa_node_cpu β€” literally just "Select a CPU based on NUMA node". that's the whole vibe check, no cap.


✨ SYNOPSIS ✨

int select_numa_node_cpu (int node );

yes bestie, one argument, returns an int. iconic behavior tbh 🫢


πŸ¦‹ ARGUMENTS πŸ¦‹

  • node β€” the NUMA node ID that we want to select a CPU from. like, "hey, pick me a CPU that lives over here" πŸ—ΊοΈ

πŸ’– DESCRIPTION πŸ’–

so here's the tea: this function will attempt to find a "random" cpu available on a given node. that's the whole job. it goes looking, it tries its best πŸ’…

and if there are no CPUs available on the given node? it doesn't panic, it doesn't cry (well, maybe a lil). it returns WORK_CPU_UNBOUND, which is basically the function saying "idk bestie, nothing here β€” telling you we should just schedule to any available CPU if we need to schedule this work." fr fr, it's the "no thoughts, just any CPU" fallback 😭

lowkey important: WORK_CPU_UNBOUND is the signal that this node had nothing for you. don't sleep on checking for it πŸ‘‘

🌈 SEE ALSO 🌈

okay this is the part where the page goes absolutely feral with cross-references, and we are NOT skipping any of them. every single one, in order, as given β€” you're welcome, i love you, here we go:

Kernel file ./kernel/workqueue.c: for_each_pool(9), for_each_pool_worker(9), for_each_pwq(9), worker_pool_assign_id(9), unbound_effective_cpumask(9), get_work_pool(9), worker_set_flags(9), worker_clr_flags(9), worker_enter_idle(9), worker_leave_idle(9), find_worker_executing_work(9), move_linked_works(9), assign_work(9), kick_pool_pick(9), kick_pool(9), wq_worker_running(9), wq_worker_sleeping(9), wq_worker_tick(9), wq_worker_last_func(9), wq_node_nr_active(9), wq_update_node_max_active(9), get_pwq(9), put_pwq(9), put_pwq_unlocked(9), pwq_tryinc_nr_active(9), pwq_activate_first_inactive(9), unplug_oldest_pwq(9), node_activate_pending_pwq(9), pwq_dec_nr_active(9), pwq_dec_nr_in_flight(9), try_to_grab_pending(9), work_grab_pending(9), insert_work(9), queue_work_on(9), queue_work_node(9), queue_delayed_work_on(9), mod_delayed_work_on(9), queue_rcu_work(9), worker_attach_to_pool(9), worker_detach_from_pool(9), create_worker(9), set_worker_dying(9), idle_worker_timeout(9), idle_cull_fn(9), maybe_create_worker(9), manage_workers(9), process_one_work(9), process_scheduled_works(9), worker_thread(9), rescuer_thread(9), check_flush_dependency(9), insert_wq_barrier(9), flush_workqueue_prep_pwqs(9), __flush_workqueue(9), drain_workqueue(9), flush_work(9), flush_delayed_work(9), flush_rcu_work(9), cancel_work_sync(9), cancel_delayed_work(9), cancel_delayed_work_sync(9), disable_work(9), disable_work_sync(9), enable_work(9), disable_delayed_work(9), disable_delayed_work_sync(9), enable_delayed_work(9), schedule_on_each_cpu(9), execute_in_process_context(9), free_workqueue_attrs(9), alloc_workqueue_attrs(9), init_worker_pool(9), put_unbound_pool(9), get_unbound_pool(9), wq_calc_pod_cpumask(9), apply_workqueue_attrs(9), unbound_wq_update_pwq(9), wq_adjust_max_active(9), destroy_workqueue(9), workqueue_set_max_active(9), workqueue_set_min_active(9), current_work(9), current_is_workqueue_rescuer(9), current_is_workqueue_mem_reclaim(9), workqueue_congested(9), work_busy(9), set_worker_desc(9), print_worker_info(9), show_one_workqueue(9), show_one_worker_pool(9), show_all_workqueues(9), show_freezable_workqueues(9), rebind_workers(9), restore_unbound_workers_cpumask(9), work_on_cpu_key(9), freeze_workqueues_begin(9), freeze_workqueues_busy(9), thaw_workqueues(9), workqueue_unbound_housekeeping_update(9), workqueue_set_unbound_cpumask(9), workqueue_sysfs_register(9), workqueue_sysfs_unregister(9), workqueue_init_early(9), workqueue_init(9), llc_count_cores(9), llc_populate_cpu_shard_id(9), precompute_cache_shard_ids(9), workqueue_init_topology(9).

that's the whole guest list. ate. πŸ’€πŸ”₯


and that's the page, bestie πŸ’œ

this one lives under ./kernel, dated October 2026, and it's page select_numa_node_cpu(9) of the Kernel API Manual β€” mwah, go read your CPUs, ily, byeee πŸ§šβ€β™€οΈπŸŒΈ

πŸ“¦ where this page comes from