Messages in this thread | | | Date | Fri, 28 Jun 2013 16:53:15 -0400 | From | Rik van Riel <> | Subject | Re: [PATCH v2] mutex: do not unnecessarily deal with waiters |
| |
On 06/28/2013 04:13 PM, Davidlohr Bueso wrote: > From: Davidlohr Bueso <davidlohr.bueso@hp.com> > > Upon entering the slowpath, we immediately attempt to acquire the lock > by checking if it is already unlocked. If we are lucky enough that this > is the case, then we don't need to deal with any waiter related logic. > > Furthermore any checks for an empty wait_list are unnecessary as we > already know that count is non-negative and hence no one is waiting for > the lock. > > Move the count check and xchg calls to be done before any waiters are > setup - including waiter debugging. Upon failure to acquire the lock, > the xchg sets the counter to 0, instead of -1 as it was originally. > This can be done here since we set it back to -1 right at the beginning > of the loop so other waiters are woken up when the lock is released. > > When tested on a 8-socket (80 core) system against a vanilla 3.10-rc1 > kernel, this patch provides some small performance benefits (+2-6%). > While it could be considered in the noise level, the average percentages > were stable across multiple runs and no performance regressions were seen. > Two big winners, for small amounts of users (10-100), were the short and > compute workloads had a +19.36% and +%15.76% in jobs per minute. > > Also change some break statements to 'goto slowpath', which IMO makes a > little more intuitive to read. > > Signed-off-by: Davidlohr Bueso <davidlohr.bueso@hp.com>
Acked-by: Rik van Riel <riel@redhat.com>
-- All rights reversed
| |