[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180919221140.GH4222@linux.ibm.com>
Date: Wed, 19 Sep 2018 15:11:40 -0700
From: "Paul E. McKenney" <paulmck@...ux.ibm.com>
To: Tejun Heo <tj@...nel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
linux-kernel@...r.kernel.org, Boqun Feng <boqun.feng@...il.com>,
Peter Zijlstra <peterz@...radead.org>,
"Aneesh Kumar K.V" <aneesh.kumar@...ux.vnet.ibm.com>,
tglx@...utronix.de, Steven Rostedt <rostedt@...dmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Lai Jiangshan <jiangshanlai@...il.com>
Subject: Re: [PATCH] rcu: Use cpus_read_lock() while looking at
cpu_online_mask
On Wed, Sep 19, 2018 at 01:55:21PM -0700, Tejun Heo wrote:
> Hello,
>
> On Tue, Sep 11, 2018 at 10:02:22AM -0700, Paul E. McKenney wrote:
> > > Doesn't work for me because it is still within the preempt-disable
> > > section :/.
> > > Would it work to use WORK_CPU_UNBOUND? As far as I understand it, the
> > > CPU number does not matter, you just want to spread it across multiple
> > > CPUs in the NUMA case.
> >
> > Locality is a good thing, but yes, something like this?
> >
> > if (!IS_ENABLED(CONFIG_PREEMPT_RT) && /* or whatever it is called */
> > unlikely(cpu > rnp->grphi - rnp->grplo))
> >
> > Another approach that might be better longer term would be to have a
> > workqueue interface that treats the specified CPU as a suggestion,
> > and silently switches to WORK_CPU_UNBOUND if there is any problem
> > whatsoever with the specified CPU. Tejun, Lai, thoughts?
>
> Unbound workqueue is NUMA-affine by default, so using it by default
> might not harm anything.
OK, so the above workaround would function correctly on -rt, thank you!
Sebastian, is there a counterpart to CONFIG_PREEMPT_RT already in
mainline? If so, I would be happy to make mainline safe for -rt.
> Also, per-cpu work items get unbound from
> the cpu if the cpu goes down while the work item is running or queued,
> so it might just work already.
There are race conditions where the work item is queued at an inopportune
time during the offline process, resulting in a splat, hence the need
for a check with preemption disabled in order to synchronize with the
synchronize_sched() in the offline process.
Thanx, Paul
Powered by blists - more mailing lists