[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAADnVQJWCMSbjgV2T+FRLWZ4snjW95arkzNhKKZF6QPcMFDXQA@mail.gmail.com>
Date: Sun, 7 Sep 2025 11:30:29 -0700
From: Alexei Starovoitov <alexei.starovoitov@...il.com>
To: Marco Crivellari <marco.crivellari@...e.com>
Cc: LKML <linux-kernel@...r.kernel.org>, bpf <bpf@...r.kernel.org>,
Tejun Heo <tj@...nel.org>, Lai Jiangshan <jiangshanlai@...il.com>,
Frederic Weisbecker <frederic@...nel.org>, Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Michal Hocko <mhocko@...e.com>, Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann <daniel@...earbox.net>,
Andrii Nakryiko <andrii@...nel.org>
Subject: Re: [PATCH 0/3] bpf: replace wq users and add WQ_PERCPU to
alloc_workqueue() users
On Fri, Sep 5, 2025 at 1:53 AM Marco Crivellari
<marco.crivellari@...e.com> wrote:
>
> === Plan and future plans ===
>
> This patchset is the first stone on a refactoring needed in order to
> address the points aforementioned; it will have a positive impact also
> on the cpu isolation, in the long term, moving away percpu workqueue in
> favor to an unbound model.
>
> These are the main steps:
> 1) API refactoring (that this patch is introducing)
> - Make more clear and uniform the system wq names, both per-cpu and
> unbound. This to avoid any possible confusion on what should be
> used.
>
> - Introduction of WQ_PERCPU: this flag is the complement of WQ_UNBOUND,
> introduced in this patchset and used on all the callers that are not
> currently using WQ_UNBOUND.
>
> WQ_UNBOUND will be removed in a future release cycle.
>
> Most users don't need to be per-cpu, because they don't have
> locality requirements, because of that, a next future step will be
> make "unbound" the default behavior.
>
> 2) Check who really needs to be per-cpu
> - Remove the WQ_PERCPU flag when is not strictly required.
>
> 3) Add a new API (prefer local cpu)
> - There are users that don't require a local execution, like mentioned
> above; despite that, local execution yeld to performance gain.
>
> This new API will prefer the local execution, without requiring it.
>
> === Introduced Changes by this series ===
>
> 1) [P 1-2] Replace use of system_wq and system_unbound_wq
>
> system_wq is a per-CPU workqueue, but his name is not clear.
> system_unbound_wq is to be used when locality is not required.
>
> Because of that, system_wq has been renamed in system_percpu_wq, and
> system_unbound_wq has been renamed in system_dfl_wq.
>
> 2) [P 3] add WQ_PERCPU to remaining alloc_workqueue() users
>
> Every alloc_workqueue() caller should use one among WQ_PERCPU or
> WQ_UNBOUND. This is actually enforced warning if both or none of them
> are present at the same time.
>
> WQ_UNBOUND will be removed in a next release cycle.
>
> === For Maintainers ===
>
> There are prerequisites for this series, already merged in the master branch.
Everything makes sense.
Tejun,
please ack this set just to make sure it's all going as planned.
Powered by blists - more mailing lists