workqueue: Changes for v6.5

* Concurrency-managed per-cpu work items that hog CPUs and delay the
  execution of other work items are now automatically detected and excluded
  from concurrency management. Reporting on such work items can also be
  enabled through a config option.

* Added tools/workqueue/wq_monitor.py which improves visibility into
  workqueue usages and behaviors.

* Includes Arnd's minimal fix for gcc-13 enum warning on 32bit compiles.
  This conflicts with afa4bb778e48 ("workqueue: clean up WORK_* constant
  types, clarify masking") in master. Can be resolved by picking the master
  version.
workqueue: Disable per-cpu CPU hog detection when wq_cpu_intensive_thresh_us is 0

If workqueue.cpu_intensive_thresh_us is set to 0, the detection mechanism
for CPU-hogging per-cpu work item will keep triggering spuriously:

  workqueue: process_srcu hogged CPU for >0us 4 times, consider switching to WQ_UNBOUND
  workqueue: gc_worker hogged CPU for >0us 4 times, consider switching to WQ_UNBOUND
  workqueue: gc_worker hogged CPU for >0us 8 times, consider switching to WQ_UNBOUND
  workqueue: wait_rcu_exp_gp hogged CPU for >0us 4 times, consider switching to WQ_UNBOUND
  workqueue: kfree_rcu_monitor hogged CPU for >0us 4 times, consider switching to WQ_UNBOUND
  workqueue: kfree_rcu_monitor hogged CPU for >0us 8 times, consider switching to WQ_UNBOUND
  workqueue: reg_todo hogged CPU for >0us 4 times, consider switching to WQ_UNBOUND

This commit therefore disables the CPU-hog detection mechanism when
workqueue.cpu_intensive_thresh_us is set to 0.

tj: Patch description updated and the condition check on
    cpu_intensive_thresh_us separated into a separate if statement for
    readability.

Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
1 file changed