All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] RFC: shrinker APi rework and generic LRU lists
@ 2011-08-23  8:56 ` Dave Chinner
  0 siblings, 0 replies; 74+ messages in thread
From: Dave Chinner @ 2011-08-23  8:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-fsdevel, linux-mm, khlebnikov

This series is a current work in progress: 

	- cleans up the shrinker API, fixes a couple of warts and converts all
	  the shrinkers to us it,
	- makes the inode slab cache initialisation consistent across all inode
	  caches,
	- introduces a generic LRU list type and infrstructure
	- converts inode cache to use lru list infrastructure
	- convert xfs buffer cache to use lru list infrastructure
	- converts the dentry cache LRU to per-sb
	- fixes dcache select_parent() use-the-lru-for-disposal abuse
	- makes the dcache consistent about removing inodes from the LRU before
	  disposal of them
	- converts the dentry cache to use lru list infrastructure

The basic concept here is to fix the shrinker API to be somewhat
sane and convert the main slab cache LRUs in the system to use
generic infrastructure. Both the detry and inode caches use LRU
implementations that are almost-but-not-quite the same. There is no
reason for them to be different - it's only the fact that the dentry
cache LRU has been used in for disposal purposes rather than using
dispose lists.

The dentry caceh dispose list also has a problem as a result of the
RCU-ifying of the code - the dispose list is implicitly protected by
the LRU lock, and actaully forms a disjoint part of the LRU as
dentries on the dispose list are still accounted to the LRU and
require a call to dentry_lru_del() to remove from the dispose list
and correct the LRU accounting. THis only works when there is a
single LRU lock - if the dispose list is made upof dentries
protected by different LRU locks, then it fails with list corruption
pretty quickly. This is another reason for moving to the same
strategy as the inode cache, where inodes are completely removed
form thr LRU before being placed on the dispose list....

In case it is not obvious, this is all preparatory work for making
the LRUs and shrinkers node aware. The new generic LRU lists can be
trivially converted to be node aware, and with the addition of node
masks to the struct shrink_control propagated from shrink_slab() we
can easily extend all these caches to have node aware reclaim. We
will then have a generic node-aware LRU implementation that all
subsystems can use to play well with memory reclaim on large NUMA
machines...


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

end of thread, other threads:[~2011-09-05  9:43 UTC | newest]

Thread overview: 74+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-23  8:56 [PATCH 00/12] RFC: shrinker APi rework and generic LRU lists Dave Chinner
2011-08-23  8:56 ` Dave Chinner
2011-08-23  8:56 ` [PATCH 01/13] fs: Use a common define for inode slab caches Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:13   ` Christoph Hellwig
2011-08-23  9:13     ` Christoph Hellwig
2011-08-23  9:20     ` Dave Chinner
2011-08-23  9:20       ` Dave Chinner
2011-08-24  6:16       ` Christoph Hellwig
2011-08-24  6:16         ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 02/13] dcache: convert dentry_stat.nr_unused to per-cpu counters Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:13   ` Christoph Hellwig
2011-08-23  9:13     ` Christoph Hellwig
2011-08-24 14:12   ` Christoph Lameter
2011-08-24 14:12     ` Christoph Lameter
2011-08-23  8:56 ` [PATCH 03/13] dentry: move to per-sb LRU locks Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-24  6:16   ` Christoph Hellwig
2011-08-24  6:16     ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 04/13] mm: new shrinker API Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:15   ` Christoph Hellwig
2011-08-23  9:15     ` Christoph Hellwig
2011-08-23  9:23     ` Dave Chinner
2011-08-23  9:23       ` Dave Chinner
2011-08-24  6:17       ` Christoph Hellwig
2011-08-24  6:17         ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 05/13] mm: convert shrinkers to use new API Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:17   ` Christoph Hellwig
2011-08-23  9:17     ` Christoph Hellwig
2011-08-23  9:35   ` Steven Whitehouse
2011-08-23  9:35     ` Steven Whitehouse
2011-08-26 17:09   ` Wanlong Gao
2011-08-26 17:09     ` Wanlong Gao
2011-08-23  8:56 ` [PATCH 06/13] shrinker: remove old API now it is unused Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  8:56 ` [PATCH 07/13] Use atomic-long operations instead of looping around cmpxchg() Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  8:56 ` [PATCH 08/13] list: add a new LRU list type Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:20   ` Christoph Hellwig
2011-08-23  9:20     ` Christoph Hellwig
2011-08-23  9:32     ` Dave Chinner
2011-08-23  9:32       ` Dave Chinner
2011-08-23  9:58       ` Konstantin Khlebnikov
2011-08-23  9:58         ` Konstantin Khlebnikov
2011-08-24 14:24         ` Christoph Lameter
2011-08-24 14:24           ` Christoph Lameter
2011-08-23  8:56 ` [PATCH 09/13] inode: convert inode lru list to generic lru list code Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-24  6:38   ` Christoph Hellwig
2011-08-24  6:38     ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 10/13] xfs: convert buftarg LRU to generic code Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-24  6:27   ` Christoph Hellwig
2011-08-24  6:27     ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 11/13] dcache: use a dispose list in select_parent Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:37   ` Christoph Hellwig
2011-08-23  9:37     ` Christoph Hellwig
2011-09-05  9:42   ` Christoph Hellwig
2011-09-05  9:42     ` Christoph Hellwig
2011-08-23  8:56 ` [PATCH 12/13] dcache: remove dentries from LRU before putting on dispose list Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-23  9:35   ` Christoph Hellwig
2011-08-23  9:35     ` Christoph Hellwig
2011-08-23  9:57     ` Dave Chinner
2011-08-23  9:57       ` Dave Chinner
2011-08-23  8:56 ` [PATCH 13/13] dcache: convert to use new lru list infrastructure Dave Chinner
2011-08-23  8:56   ` Dave Chinner
2011-08-24  6:32   ` Christoph Hellwig
2011-08-24  6:32     ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.