From: Lai Jiangshan <jiangshanlai@gmail.com> To: linux-kernel@vger.kernel.org Cc: Lai Jiangshan <laijs@linux.alibaba.com>, Hillf Danton <hdanton@sina.com>, Valentin Schneider <valentin.schneider@arm.com>, Qian Cai <cai@redhat.com>, Peter Zijlstra <peterz@infradead.org>, Vincent Donnefort <vincent.donnefort@arm.com>, Tejun Heo <tj@kernel.org> Subject: [PATCH 00/10] workqueue: break affinity initiatively Date: Mon, 14 Dec 2020 23:54:47 +0800 Message-ID: <20201214155457.3430-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. 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]. Patch 1 fixes a flaw reported by Hillf Danton <hdanton@sina.com>. I have to include this fix because later patches depends on it. 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. [1]: https://lore.kernel.org/r/ff62e3ee994efb3620177bf7b19fab16f4866845.camel@redhat.com Cc: Hillf Danton <hdanton@sina.com> Cc: Valentin Schneider <valentin.schneider@arm.com> Cc: Qian Cai <cai@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Vincent Donnefort <vincent.donnefort@arm.com> Cc: Tejun Heo <tj@kernel.org> Lai Jiangshan (10): workqueue: restore unbound_workers' cpumask correctly workqueue: use cpu_possible_mask instead of cpu_active_mask to break affinity workqueue: Manually break affinity on pool detachment workqueue: don't set the worker's cpumask when kthread_bind_mask() workqueue: introduce wq_online_cpumask workqueue: use wq_online_cpumask in restore_unbound_workers_cpumask() workqueue: Manually break affinity on hotplug for unbound pool workqueue: reorganize workqueue_online_cpu() workqueue: reorganize workqueue_offline_cpu() unbind_workers() workqueue: Fix affinity of kworkers when attaching into pool kernel/workqueue.c | 212 +++++++++++++++++++++++++++------------------ 1 file changed, 130 insertions(+), 82 deletions(-) -- 2.19.1.6.gb485710b
next reply index Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-14 15:54 Lai Jiangshan [this message] 2020-12-14 15:54 ` [PATCH 01/10] workqueue: restore unbound_workers' cpumask correctly Lai Jiangshan 2020-12-14 15:54 ` [PATCH 02/10] workqueue: use cpu_possible_mask instead of cpu_active_mask to break affinity Lai Jiangshan 2020-12-14 17:25 ` Peter Zijlstra 2020-12-15 8:33 ` Lai Jiangshan 2020-12-15 8:40 ` Peter Zijlstra 2020-12-16 14:32 ` Tejun Heo 2020-12-14 15:54 ` [PATCH 03/10] workqueue: Manually break affinity on pool detachment Lai Jiangshan 2020-12-14 15:54 ` [PATCH 04/10] workqueue: don't set the worker's cpumask when kthread_bind_mask() Lai Jiangshan 2020-12-16 14:39 ` Tejun Heo 2020-12-14 15:54 ` [PATCH 05/10] workqueue: introduce wq_online_cpumask Lai Jiangshan 2020-12-14 15:54 ` [PATCH 06/10] workqueue: use wq_online_cpumask in restore_unbound_workers_cpumask() Lai Jiangshan 2020-12-14 15:54 ` [PATCH 07/10] workqueue: Manually break affinity on hotplug for unbound pool Lai Jiangshan 2020-12-16 14:50 ` Tejun Heo 2020-12-14 15:54 ` [PATCH 08/10] workqueue: reorganize workqueue_online_cpu() Lai Jiangshan 2020-12-14 15:54 ` [PATCH 09/10] workqueue: reorganize workqueue_offline_cpu() unbind_workers() Lai Jiangshan 2020-12-14 15:54 ` [PATCH 10/10] workqueue: Fix affinity of kworkers when attaching into pool Lai Jiangshan 2020-12-15 15:03 ` Valentin Schneider 2020-12-14 17:36 ` [PATCH 00/10] workqueue: break affinity initiatively Peter Zijlstra 2020-12-15 5:44 ` Lai Jiangshan 2020-12-15 7:50 ` Peter Zijlstra 2020-12-15 8:14 ` Lai Jiangshan 2020-12-15 8:49 ` Peter Zijlstra 2020-12-15 9:46 ` Lai Jiangshan 2020-12-16 14:30 ` 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=20201214155457.3430-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=peterz@infradead.org \ --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
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ linux-kernel@vger.kernel.org public-inbox-index lkml Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git