linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [rfc] scale dcache locking
@ 2009-03-29 15:55 npiggin
  2009-03-29 15:55 ` [patch 01/14] fs: dcache fix LRU ordering npiggin
                   ` (14 more replies)
  0 siblings, 15 replies; 28+ messages in thread
From: npiggin @ 2009-03-29 15:55 UTC (permalink / raw)
  To: linux-fsdevel, linux-kernel

This is my sketch for improving dcache locking scalability. So far I've
only really been looking at core code to get an idea of how it might look,
so most configurable functionality is broken (and unfortunately it might
well be something in there which will cause a fundamental problem for me).

But there is a *lot* of stuff to go through, so I like to just get some
early opinions of this.

I have tried to split it as nicely as possible. Patch splitting still
needs a bit more work, but it is not too bad hopefully to review.

It seems to break naturally into 3 phases:
- First phase is to add new locks and rules to protect specific data
  structures and dentry fields. This attempts to be as simple and dumb
  replacement as possible, to make review easier.

- Second phase is to remove dcache_lock after it is not protecting
  anything itself.

- Last phase is to improve existing locking schemes, and improve the
  scalability of the newly added locks.

It's nowhere near complete, but it is running and relatively stable
on configs where it compiles. As far as core locking changes go for
this project, I still need to make nr_dentry into a per-cpu counter,
and break up the LRU lock (which is the last remaining global lock
broken out of dcache_lock). LRU lock currently naturally splits into
per-sb locking, but that's not satisfying because we also want really
good scalability within a single sb. I think per-memory-zone LRU lists
and locking might be a good idea because it scales with socket count
and also makes better NUMA targetted dcache reclaim possible. Making
LRU more lazy might also be a good idea to reduce locking.


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2009-04-02  9:43 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-29 15:55 [rfc] scale dcache locking npiggin
2009-03-29 15:55 ` [patch 01/14] fs: dcache fix LRU ordering npiggin
2009-03-29 15:55 ` [patch 02/14] fs: dcache scale hash npiggin
2009-03-29 15:55 ` [patch 03/14] fs: dcache scale lru npiggin
2009-03-29 15:55 ` [patch 04/14] fs: dcache scale nr_dentry npiggin
2009-03-29 15:55 ` [patch 05/14] fs: dcache scale dentry refcount npiggin
2009-03-29 15:55 ` [patch 06/14] fs: dcache scale d_unhashed npiggin
2009-03-29 15:55 ` [patch 07/14] fs: dcache scale subdirs npiggin
2009-03-29 15:55 ` [patch 08/14] fs: scale inode alias list npiggin
2009-03-30 12:18   ` Andi Kleen
2009-03-30 12:31     ` Nick Piggin
2009-03-29 15:55 ` [patch 09/14] fs: use RCU / seqlock logic for reverse and multi-step operaitons npiggin
2009-03-30 12:16   ` Andi Kleen
2009-03-30 12:29     ` Nick Piggin
2009-03-30 12:43       ` Andi Kleen
2009-03-29 15:55 ` [patch 10/14] fs: dcache remove dcache_lock npiggin
2009-03-29 15:55 ` [patch 11/14] fs: dcache reduce dput locking npiggin
2009-03-29 15:55 ` [patch 12/14] fs: dcache per-bucket dcache hash locking npiggin
2009-03-30 12:14   ` Andi Kleen
2009-03-30 12:27     ` Nick Piggin
2009-03-30 12:47       ` Andi Kleen
2009-03-30 12:59         ` Nick Piggin
2009-03-30 18:00     ` Christoph Hellwig
2009-03-31  1:57       ` Nick Piggin
2009-03-29 15:55 ` [patch 13/14] fs: dcache reduce dcache_inode_lock npiggin
2009-03-29 15:55 ` [patch 14/14] fs: dcache per-inode inode alias locking npiggin
2009-04-01 14:23 ` [rfc] scale dcache locking Al Viro
2009-04-02  9:43   ` Nick Piggin

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).