Hi, This is a follow up series while reviewing Waiman's reader-owned state work[1]. While I have based it on -tip instead of that change, I can certainly rebase the series in some future iteration.
Changes are mainly around reader-waiter optimizations, in no particular order. Has passed numerous DB benchmarks without things falling apart for a 8 core Westmere doing page allocations (page_test) in aim9: aim9 4.6-rc6 4.6-rc6 rwsemv2 Min page_test 378167.89 ( 0.00%) 382613.33 ( 1.18%) Min exec_test 499.00 ( 0.00%) 502.67 ( 0.74%) Min fork_test 3395.47 ( 0.00%) 3537.64 ( 4.19%) Hmean page_test 395433.06 ( 0.00%) 414693.68 ( 4.87%) Hmean exec_test 499.67 ( 0.00%) 505.30 ( 1.13%) Hmean fork_test 3504.22 ( 0.00%) 3594.95 ( 2.59%) Stddev page_test 17426.57 ( 0.00%) 26649.92 (-52.93%) Stddev exec_test 0.47 ( 0.00%) 1.41 (-199.05%) Stddev fork_test 63.74 ( 0.00%) 32.59 ( 48.86%) Max page_test 429873.33 ( 0.00%) 456960.00 ( 6.30%) Max exec_test 500.33 ( 0.00%) 507.66 ( 1.47%) Max fork_test 3653.33 ( 0.00%) 3650.90 ( -0.07%) 4.6-rc6 4.6-rc6 rwsemv2 User 1.12 0.04 System 0.23 0.04 Elapsed 727.27 721.98 [1] http://permalink.gmane.org/gmane.linux.kernel/2216743 Thanks! Davidlohr Bueso (4): locking/rwsem: Avoid stale ->count for rwsem_down_write_failed() locking/rwsem: Drop superfluous waiter refcount locking/rwsem: Enable lockless waiter wakeup(s) locking/rwsem: Rework zeroing reader waiter->task kernel/locking/rwsem-xadd.c | 74 ++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 31 deletions(-) -- 2.8.1