From: Oleg Nesterov <oleg@tv-sign.ru>
To: "Paul E. McKenney" <paulmck@us.ibm.com>
Cc: Dipankar Sarma <dipankar@in.ibm.com>,
Srivatsa Vaddagiri <vatsa@in.ibm.com>,
Eric Dumazet <dada1@cosmosbay.com>,
"David S. Miller" <davem@davemloft.net>,
Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, josht@us.ibm.com
Subject: Re: [PATCH] simplify/improve rcu batch tuning
Date: Fri, 8 Sep 2006 20:30:22 +0400 [thread overview]
Message-ID: <20060908163022.GA149@oleg> (raw)
In-Reply-To: <20060908160234.GE1314@us.ibm.com>
On 09/08, Paul E. McKenney wrote:
>
> On Fri, Sep 08, 2006 at 03:39:30PM +0400, Oleg Nesterov wrote:
> > >
> > Actually I think it also makes sense to do tasklet_schedule(rcu_tasklet)
> > in call_rcu(), this way we can detect that we need to start the next batch
> > earlier.
>
> As long as we don't do this too often... One way to prevent doing this
> too often would be to check rcp->completed against rdp->batch similarly
> to __rcu_process_callbacks()'s checks. In call_rcu(), perhaps something
> like the following inside the ->qlen check:
>
> if (__rcu_pending(&rcu_ctrlblk, rdp) {
> tasklet_schedule(&per_cpu(rcu_tasklet, rdp->cpu));
> }
Yes.
> > > > @@ -297,6 +294,7 @@ static void rcu_start_batch(struct rcu_c
> > > > smp_mb();
> > > > cpus_andnot(rcp->cpumask, cpu_online_map, nohz_cpu_mask);
> > > >
> > > > + rcp->signaled = 0;
> > >
> > > Would it make sense to invoke force_quiescent_state() here in the
> > > case that rdp->qlen is still large? The disadvantage is that qlen
> > > still counts the number of callbacks that are already slated for
> > > invocation.
> >
> > This is not easy to do. rcu_start_batch() is "global", we need
> > to scan all per-cpu 'struct rcu_data' and check it's ->qlen.
>
> My thought was that it might make sense to check only this CPU's struct
> rcu_data. But I agree that the next approach seems more promising.
Yes, I understood this. And I don't say this is "bad", I just think this is
"not perfect". Because the CPU which actually starts a new grace period and
clears ->signaled may have ->qlen == 0, and the caller is cpu_quiet(), which
is a "response" to some other CPU's force_quiescent_state().
Oleg.
next prev parent reply other threads:[~2006-09-08 16:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-03 16:34 [PATCH] simplify/improve rcu batch tuning Oleg Nesterov
2006-09-07 20:37 ` Paul E. McKenney
2006-09-08 11:39 ` Oleg Nesterov
2006-09-08 16:02 ` Paul E. McKenney
2006-09-08 16:30 ` Oleg Nesterov [this message]
2006-09-08 18:58 ` Paul E. McKenney
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=20060908163022.GA149@oleg \
--to=oleg@tv-sign.ru \
--cc=akpm@osdl.org \
--cc=dada1@cosmosbay.com \
--cc=davem@davemloft.net \
--cc=dipankar@in.ibm.com \
--cc=josht@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@us.ibm.com \
--cc=torvalds@osdl.org \
--cc=vatsa@in.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox