From: Jeff Layton <jlayton@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH v1 11/11] locks: give the blocked_hash its own spinlock
Date: Tue, 4 Jun 2013 11:15:02 -0400 [thread overview]
Message-ID: <20130604111502.6231d010@corrin.poochiereds.net> (raw)
In-Reply-To: <20130604145322.GH2109@fieldses.org>
On Tue, 4 Jun 2013 10:53:22 -0400
"J. Bruce Fields" <bfields@fieldses.org> wrote:
> On Tue, Jun 04, 2013 at 07:46:40AM -0700, Christoph Hellwig wrote:
> > Having RCU for modification mostly workloads never is a good idea, so
> > I don't think it makes sense to mention it here.
> >
> > If you care about the overhead it's worth trying to use per-cpu lists,
> > though.
>
> Yes. The lock and unlock could happen on different CPU's--but I think
> you can make the rule that the lock stays associated with the list it
> was first put on, and then it's correct in general and hopefully quick
> in the common case.
>
It's important to distinguish between the blocked_list/hash and the
file_lock_list. Yes, they use the same embedded list_head or hlist_node
in the file_lock, but they have very different characteristics and use
cases.
In the testing I did, having a hashtable for the blocked locks helped a
lot more than a percpu list. The trick with deadlock detection is to
ensure that you don't spend a lot of time walking the lists. Since we
do deadlock detection frequently, we need to optimize for that case.
For the file_lock_list, it might make sense to have percpu hlists with
an lglock however. The thing to note here is that the file_lock_list is
almost never read. Only /proc/locks uses it, so anything we can do to
optimize the list manipulation is probably worth it.
All that said, I'm leery about changing too much of this code too fast.
It's pretty old and poorly understood, so I think we need to be
cautious and take an incremental approach to changing it.
--
Jeff Layton <jlayton@redhat.com>
next prev parent reply other threads:[~2013-06-04 15:15 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-01 3:07 [Cluster-devel] [PATCH v1 00/11] locks: scalability improvements for file locking Jeff Layton
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 01/11] cifs: use posix_unblock_lock instead of locks_delete_block Jeff Layton
2013-06-03 21:53 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 02/11] locks: make generic_add_lease and generic_delete_lease static Jeff Layton
2013-06-03 21:53 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 03/11] locks: comment cleanups and clarifications Jeff Layton
2013-06-03 22:00 ` J. Bruce Fields
2013-06-04 11:09 ` Jeff Layton
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 04/11] locks: make "added" in __posix_lock_file a bool Jeff Layton
2013-06-04 20:17 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 05/11] locks: encapsulate the fl_link list handling Jeff Layton
2013-06-04 20:17 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 06/11] locks: convert to i_lock to protect i_flock list Jeff Layton
2013-06-04 21:22 ` J. Bruce Fields
2013-06-05 0:46 ` Jeff Layton
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 07/11] locks: only pull entries off of blocked_list when they are really unblocked Jeff Layton
2013-06-04 21:58 ` J. Bruce Fields
2013-06-05 11:38 ` Jeff Layton
2013-06-05 12:24 ` J. Bruce Fields
2013-06-05 12:38 ` Jeff Layton
2013-06-05 12:59 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 08/11] locks: convert fl_link to a hlist_node Jeff Layton
2013-06-04 21:59 ` J. Bruce Fields
2013-06-05 11:43 ` Jeff Layton
2013-06-05 12:46 ` J. Bruce Fields
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 09/11] locks: turn the blocked_list into a hashtable Jeff Layton
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 10/11] locks: add a new "lm_owner_key" lock operation Jeff Layton
2013-06-01 3:07 ` [Cluster-devel] [PATCH v1 11/11] locks: give the blocked_hash its own spinlock Jeff Layton
2013-06-04 14:19 ` Stefan Metzmacher
2013-06-04 14:39 ` Jeff Layton
2013-06-04 14:46 ` Christoph Hellwig
2013-06-04 14:53 ` J. Bruce Fields
2013-06-04 15:15 ` Jeff Layton [this message]
2013-06-04 14:56 ` Jeff Layton
2013-06-03 19:04 ` [Cluster-devel] [PATCH v1 00/11] locks: scalability improvements for file locking Davidlohr Bueso
2013-06-03 21:31 ` J. Bruce Fields
2013-06-04 10:54 ` Jeff Layton
2013-06-04 11:56 ` Jim Rees
2013-06-04 12:15 ` Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130604111502.6231d010@corrin.poochiereds.net \
--to=jlayton@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).