From: Jason Low <jason.low2@hp.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Oleg Nesterov <oleg@redhat.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Davidlohr Bueso <dave@stgolabs.net>,
Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Terry Rudd <terry.rudd@hp.com>, Rik van Riel <riel@redhat.com>,
Scott J Norton <scott.norton@hp.com>,
jason.low2@hp.com
Subject: Re: [PATCH 3/3] timer: Reduce unnecessary sighand lock contention
Date: Wed, 26 Aug 2015 15:57:33 -0700 [thread overview]
Message-ID: <1440629853.32300.9.camel@j-VirtualBox> (raw)
In-Reply-To: <20150826223152.GC11992@lerouge>
On Thu, 2015-08-27 at 00:31 +0200, Frederic Weisbecker wrote:
> On Wed, Aug 26, 2015 at 10:53:35AM -0700, Linus Torvalds wrote:
> > On Tue, Aug 25, 2015 at 8:17 PM, Jason Low <jason.low2@hp.com> wrote:
> > >
> > > This patch addresses this by having the thread_group_cputimer structure
> > > maintain a boolean to signify when a thread in the group is already
> > > checking for process wide timers, and adds extra logic in the fastpath
> > > to check the boolean.
> >
> > It is not at all obvious why the unlocked read of that variable is
> > safe, and why there is no race with another thread just about to end
> > its check_process_timers().
>
> The risk is when a next timer is going to expire soon after we relaxed
> the "checking" variable due to a recent expiration. The thread which
> expires the next timer may still see a stale value on the "checking"
> state and therefore delay the timer firing until the new value is seen.
> So the worst that can happen is that the timer firing gets delayed for
> X jiffies (I guess in practice it's only 1 jiffy).
>
> That said, posix cpu timers already suffer such race because
> sig->cputimer.running itself is checked outside the sighand lock anyway.
Right, in the worst case, the next thread that comes along will handle
it. The current code already expects that level of granularity, so this
shouldn't change anything much. For example, there is almost always a
delay between a timer expiring and when a thread actually calls into
check_process_timers().
> > I can well imagine that this is all perfectly safe and fine, but I'd
> > really like to see that comment about _why_ that's the case, and why a
> > completely unlocked access without even memory barriers is fine.
>
> Agreed, there should be a comment about that in the code (that is already full
> of undocumented subtleties).
Okay, I will add more comments about this.
next prev parent reply other threads:[~2015-08-26 22:57 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-26 3:17 [PATCH 0/3] timer: Improve itimers scalability Jason Low
2015-08-26 3:17 ` [PATCH 1/3] timer: Optimize fastpath_timer_check() Jason Low
2015-08-26 21:57 ` Frederic Weisbecker
2015-08-31 15:15 ` Davidlohr Bueso
2015-08-31 19:40 ` Jason Low
2015-08-26 3:17 ` [PATCH 2/3] timer: Check thread timers only when there are active thread timers Jason Low
2015-08-26 3:17 ` [PATCH 3/3] timer: Reduce unnecessary sighand lock contention Jason Low
2015-08-26 17:53 ` Linus Torvalds
2015-08-26 22:31 ` Frederic Weisbecker
2015-08-26 22:57 ` Jason Low [this message]
2015-08-26 22:56 ` Frederic Weisbecker
2015-08-26 23:32 ` Jason Low
2015-08-27 4:52 ` Jason Low
2015-08-27 12:53 ` Frederic Weisbecker
2015-08-27 20:29 ` Jason Low
2015-08-27 21:12 ` Frederic Weisbecker
2015-08-26 3:27 ` [PATCH 0/3] timer: Improve itimers scalability Andrew Morton
2015-08-26 16:33 ` Jason Low
2015-08-26 17:08 ` Oleg Nesterov
2015-08-26 22:07 ` Jason Low
2015-08-26 22:53 ` Hideaki Kimura
2015-08-26 23:13 ` Frederic Weisbecker
2015-08-26 23:45 ` Hideaki Kimura
2015-08-27 13:18 ` Frederic Weisbecker
2015-08-27 14:47 ` Steven Rostedt
2015-08-27 15:09 ` Thomas Gleixner
2015-08-27 15:17 ` Frederic Weisbecker
-- strict thread matches above, loose matches on Subject: below --
2015-08-26 19:33 [PATCH 3/3] timer: Reduce unnecessary sighand lock contention George Spelvin
2015-08-26 23:44 ` Jason Low
2015-08-27 1:28 ` George Spelvin
2015-08-27 21:55 ` Jason Low
2015-08-27 22:43 ` George Spelvin
2015-08-28 4:32 ` Jason Low
2015-08-26 21:05 George Spelvin
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=1440629853.32300.9.camel@j-VirtualBox \
--to=jason.low2@hp.com \
--cc=akpm@linux-foundation.org \
--cc=dave@stgolabs.net \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=rostedt@goodmis.org \
--cc=scott.norton@hp.com \
--cc=terry.rudd@hp.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox