mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
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>
This commit is contained in:
parent
5920d046f7
commit
4cdc8a7389
|
|
@ -450,7 +450,7 @@ static bool wq_topo_initialized __read_mostly = false;
|
|||
static struct kmem_cache *pwq_cache;
|
||||
|
||||
static struct wq_pod_type wq_pod_types[WQ_AFFN_NR_TYPES];
|
||||
static enum wq_affn_scope wq_affn_dfl = WQ_AFFN_CACHE;
|
||||
static enum wq_affn_scope wq_affn_dfl = WQ_AFFN_CACHE_SHARD;
|
||||
|
||||
/* buf for wq_update_unbound_pod_attrs(), protected by CPU hotplug exclusion */
|
||||
static struct workqueue_attrs *unbound_wq_update_pwq_attrs_buf;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user