From: Lai Jiangshan <jiangshanlai@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Valentin Schneider <valentin.schneider@arm.com>,
Peter Zijlstra <peterz@infradead.org>, Qian Cai <cai@redhat.com>,
Vincent Donnefort <vincent.donnefort@arm.com>,
Tejun Heo <tj@kernel.org>,
"Paul E . McKenney" <paulmck@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Hillf Danton <hdanton@sina.com>,
Lai Jiangshan <laijs@linux.alibaba.com>
Subject: [PATCH -tip V4 0/8] workqueue: break affinity initiatively
Date: Mon, 11 Jan 2021 23:26:30 +0800 [thread overview]
Message-ID: <20210111152638.2417-1-jiangshanlai@gmail.com> (raw)
From: Lai Jiangshan <laijs@linux.alibaba.com>
06249738a41a ("workqueue: Manually break affinity on hotplug")
said that scheduler will not force break affinity for us.
But workqueue highly depends on the old behavior. Many parts of the codes
relies on it, 06249738a41a ("workqueue: Manually break affinity on hotplug")
is not enough to change it, and the commit has flaws in itself too.
It doesn't handle for worker detachment.
It doesn't handle for worker attachement, especially worker creation
which is handled by Valentin Schneider's patch [1].
It doesn't handle for unbound workers which might be possible
per-cpu-kthread.
We need to thoroughly update the way workqueue handles affinity
in cpu hot[un]plug, what is this patchset intends to do and
replace the Valentin Schneider's patch [1]. The equivalent patch
is patch 8 here.
The patchset is based on tip/master rather than workqueue tree,
because the patchset is a complement for 06249738a41a ("workqueue:
Manually break affinity on hotplug") which is only in tip/master by now.
And TJ acked to route the series through tip.
Changed from V3:
split hotplug callbacks
introduce break_unbound_workers_cpumask() rather than resuing
restore_unbound_workers_cpumask().
Changed from V2:
Drop V2's patch4, which causes warning about setting cpumask
online&!active to kthread reported by several people:
Dexuan Cui <decui@microsoft.com>
kernel test robot <oliver.sang@intel.com>
Drop V2's patch 1, which can also cause warning about setting
cpumask online&!active to kthread. restore_unbound_workers_cpumask()
is changed when we are bring cpu online. And it cause V2's patch7
(V3's patch5) to be changed accordingly.
Marked patch8 Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Changed from V1:
Add TJ's acked-by for the whole patchset
Add more words to the comments and the changelog, mainly derived
from discussion with Peter.
Update the comments as TJ suggested.
Update a line of code as Valentin suggested.
Add Valentin's ack for patch 10 because "Seems alright to me." and
add Valentin's comments to the changelog which is integral.
[1]: https://lore.kernel.org/r/ff62e3ee994efb3620177bf7b19fab16f4866845.camel@redhat.com
[V1 patchset]: https://lore.kernel.org/lkml/20201214155457.3430-1-jiangshanlai@gmail.com/
[V2 patchset]: https://lore.kernel.org/lkml/20201218170919.2950-1-jiangshanlai@gmail.com/
[V3 patchset]: https://lore.kernel.org/lkml/20201226025117.2770-1-jiangshanlai@gmail.com/
Lai Jiangshan (8):
workqueue: split cpuhotplug callbacks for unbound workqueue
workqueue: set pool->attr->cpumask to workers when cpu online
workqueue: use cpu_possible_mask instead of cpu_active_mask to break
affinity
workqueue: Manually break affinity on pool detachment
workqueue: introduce wq_unbound_online_cpumask
workqueue: use wq_unbound_online_cpumask in
restore_unbound_workers_cpumask()
workqueue: Manually break affinity on hotplug for unbound pool
workqueue: Fix affinity of kworkers when attaching into pool
include/linux/cpuhotplug.h | 4 +
include/linux/workqueue.h | 2 +
kernel/cpu.c | 5 +
kernel/workqueue.c | 192 +++++++++++++++++++++++++++++--------
4 files changed, 165 insertions(+), 38 deletions(-)
--
2.19.1.6.gb485710b
next reply other threads:[~2021-01-11 14:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-11 15:26 Lai Jiangshan [this message]
2021-01-11 15:26 ` [PATCH -tip V4 1/8] workqueue: split cpuhotplug callbacks for unbound workqueue Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 2/8] workqueue: set pool->attr->cpumask to workers when cpu online Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 3/8] workqueue: use cpu_possible_mask instead of cpu_active_mask to break affinity Lai Jiangshan
2021-01-22 17:41 ` [tip: sched/urgent] workqueue: Use " tip-bot2 for Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 4/8] workqueue: Manually break affinity on pool detachment Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 5/8] workqueue: introduce wq_unbound_online_cpumask Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 6/8] workqueue: use wq_unbound_online_cpumask in restore_unbound_workers_cpumask() Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 7/8] workqueue: Manually break affinity on hotplug for unbound pool Lai Jiangshan
2021-01-11 15:26 ` [PATCH -tip V4 8/8] workqueue: Fix affinity of kworkers when attaching into pool Lai Jiangshan
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=20210111152638.2417-1-jiangshanlai@gmail.com \
--to=jiangshanlai@gmail.com \
--cc=cai@redhat.com \
--cc=hdanton@sina.com \
--cc=laijs@linux.alibaba.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=valentin.schneider@arm.com \
--cc=vincent.donnefort@arm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.