Thread (116 messages) 116 messages, 11 authors, 2017-07-10

Re: [PATCH v2 0/9] Remove spin_unlock_wait()

From: Peter Zijlstra <peterz@infradead.org>
Date: 2017-07-06 16:50:58
Also in: linux-arch, lkml, netfilter-devel

On Thu, Jul 06, 2017 at 09:20:24AM -0700, Paul E. McKenney wrote:
On Thu, Jul 06, 2017 at 06:05:55PM +0200, Peter Zijlstra wrote:
quoted
On Thu, Jul 06, 2017 at 02:12:24PM +0000, David Laight wrote:
quoted
From: Paul E. McKenney
[ . . . ]
quoted
Now on the one hand I feel like Oleg that it would be a shame to loose
the optimization, OTOH this thing is really really tricky to use,
and has lead to a number of bugs already.
I do agree, it is a bit sad to see these optimizations go.  So, should
this make mainline, I will be tagging the commits that spin_unlock_wait()
so that they can be easily reverted should someone come up with good
semantics and a compelling use case with compelling performance benefits.
Ha!, but what would constitute 'good semantics' ?

The current thing is something along the lines of:

  "Waits for the currently observed critical section
   to complete with ACQUIRE ordering such that it will observe
   whatever state was left by said critical section."

With the 'obvious' benefit of limited interference on those actually
wanting to acquire the lock, and a shorter wait time on our side too,
since we only need to wait for completion of the current section, and
not for however many contender are before us.

Not sure I have an actual (micro) benchmark that shows a difference
though.



Is this all good enough to retain the thing, I dunno. Like I said, I'm
conflicted on the whole thing. On the one hand its a nice optimization,
on the other hand I don't want to have to keep fixing these bugs.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help