From: Breno Leitao <leitao@debian.org>
To: Tejun Heo <tj@kernel.org>, Lai Jiangshan <jiangshanlai@gmail.com>
Cc: linux-kernel@vger.kernel.org, marco.crivellari@suse.com,
Breno Leitao <leitao@debian.org>,
kernel-team@meta.com
Subject: [PATCH RFC 0/3] workqueue: Take the pwq backend from the attrs
Date: Fri, 18 Sep 2026 07:25:32 -0700 [thread overview]
Message-ID: <20260918-wq_final-v1-0-5c43c08a26bc@debian.org> (raw)
From the top of the mountain, Tejun said [1]:
WQ_PERCPU would indicate that the wq must stay per-cpu for correctness,
and we'd also want to allow concurrency management to workqueues which
want to be percpu for performance reasons but can be switched into other
affinity scopes for isolation, so it should move together with whether
the backend needs concurrency management or not instead of WQ_PERCPU
expressed at creation time.
This is an RFC patchset that tries to translate that into opinionated
code.
Design principles:
* Keep wq->max_active and wq->percpu_max_active both current. The two
backends meter work differently, and a pwq must not end up metered
against a limit nobody set. (this is the semi-conflictual with my previous
commit 27db9dd7f84f3a ("workqueue: Give percpu workqueues their own
max_active")
* Create a ->concurrency_managed field in the wq attributes, used to
decide whether to do concurrency management or not.
* Move WQ_PERCPU onto an UNBOUND workqueue with WQ_AFFN_CPU affinity and
the newly created ->concurrency_managed. WQ_PERCPU is then only the
promise that the workqueue stays on that backend.
This is not for acceptance, given this is drastic and it was not tested
enought, it is more to share what I have in mind and get comments from
the community.
Not done: the switching itself. concurrency_managed is fixed when the
workqueue is created and is not exported through sysfs, so nothing takes a
workqueue onto the backend or off it yet. WQ_BH is still its own path
rather than a third backend, the static per-cpu pools are still looked up
outside unbound_pool_hash, and callers still pass WQ_PERCPU rather than
asking for the attrs they want.
Link: https://lore.kernel.org/all/amESSqf0TMmzhFGz@slm.duckdns.org/ [1]
Signed-off-by: Breno Leitao <leitao@debian.org>
---
Breno Leitao (3):
workqueue: Maintain both max_active limits
workqueue: Add a concurrency_managed workqueue attribute
workqueue: Back every workqueue with the unbound machinery
include/linux/workqueue.h | 10 +++++
kernel/workqueue.c | 107 +++++++++++++++++++++++++++-------------------
2 files changed, 72 insertions(+), 45 deletions(-)
---
base-commit: 9d4815c14f7faf789aeaa63515024168daf0390c
change-id: 20260914-wq_final-bcfbcd3b0f79
Best regards,
--
Breno Leitao <leitao@debian.org>
next reply other threads:[~2026-09-18 14:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 14:25 Breno Leitao [this message]
2026-09-18 14:25 ` [PATCH RFC 1/3] workqueue: Maintain both max_active limits Breno Leitao
2026-09-18 14:25 ` [PATCH RFC 2/3] workqueue: Add a concurrency_managed workqueue attribute Breno Leitao
2026-09-18 15:25 ` Marco Crivellari
2026-09-18 14:25 ` [PATCH RFC 3/3] workqueue: Back every workqueue with the unbound machinery Breno Leitao
2026-09-18 15:23 ` [PATCH RFC 0/3] workqueue: Take the pwq backend from the attrs Marco Crivellari
2026-09-19 2:13 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260918-wq_final-v1-0-5c43c08a26bc@debian.org \
--to=leitao@debian.org \
--cc=jiangshanlai@gmail.com \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marco.crivellari@suse.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®