workqueue_congested(9)
π NAME
workqueue_congested β bestie's lil vibe check for whether a workqueue is congested β¨
(this one lives in the Kernel API Manual, section 9, okurrr)
β¨ SYNOPSIS
bool workqueue_congested (int cpu , struct workqueue_struct *wq );
π ARGUMENTS
cpuβ the CPU in question π like, which CPU are we checking, bestiewqβ the target workqueue, the one getting the vibe check π
πΈ DESCRIPTION
Okay so, short version: this function tests whether wq's cpu workqueue for cpu is congested. That's it. That's the whole thing. π¦
π«Ά Important caveat, no cap: there is no synchronization around this function, and the test result is unreliable β it's only useful as advisory hints or for debugging. So likeβ¦ do not build your whole main character algorithm on it, bestie. It's giving "just a hint," not "gospel."
If cpu is WORK_CPU_UNBOUND, the test is performed on the local CPU. Cute, convenient, love that for you. β¨
And here's the structural tea β: with the exception of ordered workqueues, all workqueues have per-cpu pool_workqueues, each with its own congested state. So a workqueue being congested on one CPU doesn't mean the workqueue is contested on any other CPUs. Like, one CPU struggling does not mean the group chat is fighting on every platform. Each one got its own drama. π
π RETURN
true if congested, false otherwise. Simple. Iconic. Periodt. π
π₯ SEE ALSO
Grab a snack, because this is the whole friend group β the kernel file ./kernel/workqueue.c plus literally everyone it knows π:
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),select_numa_node_cpu(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),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)
ππ and that's the whole page, bestie! this one comes straight from the ./kernel source and it's dated October 2026 β so go forth, run your vibe check, and remember: advisory hints only, mwah π π
π¦ 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