]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
workqueue: set WQ_AFFN_CACHE_SHARD as the default affinity scope
authorBreno Leitao <leitao@debian.org>
Wed, 1 Apr 2026 13:03:54 +0000 (06:03 -0700)
committerTejun Heo <tj@kernel.org>
Wed, 1 Apr 2026 20:24:18 +0000 (10:24 -1000)
commit4cdc8a7389d5025051f6c4a60fb5b7cb9b7960bb
treedcee26f8e889938035647332713f081aa4e9d418
parent5920d046f7ae3bf9cf51b9d915c1fff13d299d84
workqueue: set WQ_AFFN_CACHE_SHARD as the default affinity scope

Set WQ_AFFN_CACHE_SHARD as the default affinity scope for unbound
workqueues. On systems where many CPUs share one LLC, the previous
default (WQ_AFFN_CACHE) collapses all CPUs to a single worker pool,
causing heavy spinlock contention on pool->lock.

WQ_AFFN_CACHE_SHARD subdivides each LLC into smaller groups, providing
a better balance between locality and contention. Users can revert to
the previous behavior with workqueue.default_affinity_scope=cache.

On systems with 8 or fewer cores per LLC, CACHE_SHARD produces a single
shard covering the entire LLC, making it functionally identical to the
previous CACHE default. The sharding only activates when an LLC has more
than 8 cores.

Signed-off-by: Breno Leitao <leitao@debian.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c