lkml.org 
[lkml]   [2015]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2] locking/rwsem: reduce spinlock contention in wakeup after up_read/up_write
On 04/23/2015 05:31 PM, Davidlohr Bueso wrote:
> It would be nice to not run into this by accident. Please CC all
> relevant parties ;)
>
> On Thu, 2015-04-23 at 14:24 -0400, Waiman Long wrote:
>> In up_read()/up_write(), rwsem_wake() will be called whenever it
>> detects that some writers/readers are waiting. The rwsem_wake()
>> function will take the wait_lock and call __rwsem_do_wake() to do
>> the real wakeup. This can be a problem especially for up_read()
>> where many readers can potentially call rwsem_wake() at more or less
>> the same time even though a single call should be enough. This will
>> cause contention in the wait_lock cacheline resulting in delay of
>> the up_read/up_write operations.
> Ok.
>
>> This patch makes the wait_lock taking and the call to __rwsem_do_wake()
>> optional if at least one spinning writer is present.
> But if the lock is taken by readers, like you suggest above, there
> cannot be any active spinners. We always block in these cases.

Yes, you are right. Will fix the log message.

Cheers,
Longman


\
 
 \ /
  Last update: 2015-04-24 17:21    [W:1.903 / U:0.000 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site