From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Joe Lawrence <joe.lawrence@stratus.com>
Cc: Tejun Heo <tj@kernel.org>,
netdev@vger.kernel.org, Jiri Pirko <jiri@resnulli.us>
Subject: Re: [PATCH] team: add rescheduling jiffy delay on !rtnl_trylock
Date: Sat, 4 Oct 2014 01:37:32 -0700 [thread overview]
Message-ID: <20141004083732.GG5015@linux.vnet.ibm.com> (raw)
In-Reply-To: <20141003153701.7c7da030@jlaw-desktop.mno.stratus.com>
On Fri, Oct 03, 2014 at 03:37:01PM -0400, Joe Lawrence wrote:
> On Wed, 1 Oct 2014 23:43:08 -0700
> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
>
> > On Mon, Sep 29, 2014 at 12:06:01PM -0400, Tejun Heo wrote:
> > > (cc'ing Paul and quoting the whole body)
> > >
> > > Paul, this is a fix for RCU sched stall observed w/ a work item
> > > requeueing itself waiting for the RCU grace period. As the self
> > > requeueing work item ends up being executed by the same kworker, the
> > > worker task never stops running in the absence of a higher priority
> > > task and it seems to delay RCU grace period for a very long time on
> > > !PREEMPT kernels. As each work item denotes a boundary which no
> > > synchronization construct stretches across, I wonder whether it'd be a
> > > good idea to add a notification for the end of RCU critical section
> > > between executions of work items.
> >
> > It sounds like a great idea to me! I suggest invoking
> > rcu_note_context_switch() between executions of work items.
> >
> > Thanx, Paul
>
> I gave this a spin, probably inserting the call in the wrong place:
>
> diff --git a/kernel/workqueue.c b/kernel/workqueue.c
> index 5dbe22a..77f128e 100644
> --- a/kernel/workqueue.c
> +++ b/kernel/workqueue.c
> @@ -2045,7 +2045,8 @@ __acquires(&pool->lock)
> * indefinitely requeue itself while all other CPUs are trapped in
> * stop_machine.
> */
> - cond_resched();
> + if (!cond_resched())
> + rcu_note_context_switch(raw_smp_processor_id());
>
> spin_lock_irq(&pool->lock);
If the cond_resched() is in the right place, then you should be good.
FWIW, there is a cond_resched_rcu_qs() that should be going into the next
merge window that could be used in place of the above two lines. This is
commit bde6c3aa9930 in -tip.
> this results in RCU grace periods progressing (dyntick remains
> fixed) as advertised, even with the test-module from [1] loaded:
>
> Fri Oct 3 14:37:14 2014
> 4 c=9635 g=9636 pq=1 qp=0 dt=51693/140000000000000/0 df=163 of=0 ql=0/1 qs=...D b=10 ci=0 nci=34184 co=0 ca=0
>
> Fri Oct 3 14:50:24 2014
> 4 c=13072 g=13073 pq=1 qp=0 dt=51693/140000000000000/0 df=163 of=0 ql=0/1 qs=...D b=10 ci=0 nci=34191 co=0 ca=0
Nice!
Thanx, Paul
> I'll leave it up to Tejun to determine where/how that call should be
> made.
>
> Thanks!
>
> -- Joe
>
> [1] http://marc.info/?l=linux-kernel&m=141192244232345
>
next prev parent reply other threads:[~2014-10-04 8:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-29 15:54 [PATCH] team: add rescheduling jiffy delay on !rtnl_trylock Joe Lawrence
2014-09-29 16:06 ` Tejun Heo
2014-10-02 6:43 ` Paul E. McKenney
2014-10-03 19:37 ` Joe Lawrence
2014-10-04 8:37 ` Paul E. McKenney [this message]
2014-10-05 2:13 ` Tejun Heo
2014-10-05 12:53 ` Joe Lawrence
2014-10-05 14:08 ` Paul E. McKenney
2014-10-05 16:11 ` 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=20141004083732.GG5015@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=jiri@resnulli.us \
--cc=joe.lawrence@stratus.com \
--cc=netdev@vger.kernel.org \
--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 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.