Re: [PATCH 0/9 v3] locks: avoid thundering-herd wake-ups

From: J. Bruce Fields
Date: Thu Oct 25 2018 - 12:04:03 EST


On Wed, Oct 24, 2018 at 09:43:54AM +1100, NeilBrown wrote:
> This took longer that I had wanted, due to various reasons - sorry.
> And I'm now posting it in a merge window, which is not ideal. I don't
> expect it to be included in this merge window and I won't be at all
> impatient for review, but I didn't want to delay it further.

Yes, apologies, I've been looking forward to finding out how this turned
out, but I'd like to track down a bug or two and also review Olga's copy
patches.... Bug me if I haven't gotten to this in a week or two.

I'd also be really interested in any details of the performance
experiments that you could share.

--b.

>
> Testing found some problems, particularly the need to use
> locks_copy_lock in NFS. And there was a small thinko in there that
> effectively removed all the speed gains :-(
>
> But this version:
> - shows excellent scalability with lots of threads on lots of CPUs
> contending on a single file
> - avoids the problems that Bruce found
> - seems to work.
>
> Thanks,
> NeilBrown
>
>
> ---
>
> NeilBrown (9):
> fs/locks: rename some lists and pointers.
> fs/locks: split out __locks_wake_up_blocks().
> NFS: use locks_copy_lock() to copy locks.
> fs/locks: allow a lock request to block other requests.
> fs/locks: always delete_block after waiting.
> fs/locks: change all *_conflict() functions to return bool.
> fs/locks: create a tree of dependent requests.
> locks: merge posix_unblock_lock() and locks_delete_block()
> VFS: locks: remove unnecessary white space.
>
>
> fs/cifs/file.c | 4 -
> fs/lockd/svclock.c | 2
> fs/locks.c | 231 ++++++++++++++++++++++-----------------
> fs/nfs/nfs4proc.c | 6 +
> fs/nfsd/nfs4state.c | 6 +
> include/linux/fs.h | 11 +-
> include/trace/events/filelock.h | 16 +--
> 7 files changed, 153 insertions(+), 123 deletions(-)
>
> --
> Signature