• Linus Torvalds's avatar
    Merge tag 'wq-for-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · bd30fe6a
    Linus Torvalds authored
    Pull workqueue updates from Tejun Heo:
    
     - Unbound workqueues now support more flexible affinity scopes.
    
       The default behavior is to soft-affine according to last level cache
       boundaries. A work item queued from a given LLC is executed by a
       worker running on the same LLC but the worker may be moved across
       cache boundaries as the scheduler sees fit. On machines which
       multiple L3 caches, which are becoming more popular along with
       chiplet designs, this improves cache locality while not harming work
       conservation too much.
    
       Unbound workqueues are now also a lot more flexible in terms of
       execution affinity. Differeing levels of affinity scopes are
       supported and both the default and per-workqueue affinity settings
       can be modified dynamically. This should help working around amny of
       sub-optimal behaviors observed recently with asymmetric ARM CPUs.
    
       This involved signficant restructuring of workqueue code. Nothing was
       reported yet but there's some risk of subtle regressions. Should keep
       an eye out.
    
     - Rescuer workers now has more identifiable comms.
    
     - workqueue.unbound_cpus added so that CPUs which can be used by
       workqueue can be constrained early during boot.
    
     - Now that all the in-tree users have been flushed out, trigger warning
       if system-wide workqueues are flushed.
    
    * tag 'wq-for-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (31 commits)
      workqueue: fix data race with the pwq->stats[] increment
      workqueue: Rename rescuer kworker
      workqueue: Make default affinity_scope dynamically updatable
      workqueue: Add "Affinity Scopes and Performance" section to documentation
      workqueue: Implement non-strict affinity scope for unbound workqueues
      workqueue: Add workqueue_attrs->__pod_cpumask
      workqueue: Factor out need_more_worker() check and worker wake-up
      workqueue: Factor out work to worker assignment and collision handling
      workqueue: Add multiple affinity scopes and interface to select them
      workqueue: Modularize wq_pod_type initialization
      workqueue: Add tools/workqueue/wq_dump.py which prints out workqueue configuration
      workqueue: Generalize unbound CPU pods
      workqueue: Factor out clearing of workqueue-only attrs fields
      workqueue: Factor out actual cpumask calculation to reduce subtlety in wq_update_pod()
      workqueue: Initialize unbound CPU pods later in the boot
      workqueue: Move wq_pod_init() below workqueue_init()
      workqueue: Rename NUMA related names to use pod instead
      workqueue: Rename workqueue_attrs->no_numa to ->ordered
      workqueue: Make unbound workqueues to use per-cpu pool_workqueues
      workqueue: Call wq_update_unbound_numa() on all CPUs in NUMA node on CPU hotplug
      ...
    bd30fe6a
kernel-parameters.txt 258 KB