Messages in this thread | | | Date | Wed, 21 May 2008 09:19:42 +1000 | From | David Chinner <> | Subject | Re: [patch 10/21] buffer heads: Support slab defrag |
| |
On Wed, May 21, 2008 at 02:25:05AM +0400, Evgeniy Polyakov wrote: > On Wed, May 21, 2008 at 07:46:17AM +1000, David Chinner (dgc@sgi.com) wrote: > > Oh, god no. Let's not put the inode_lock right at the top of the VM page > > cleaning path. We don't need to modify inode state, the superblock dirty > > lists, etc - all we need to do is write dirty pages on a given mapping in > > a more efficient manner. > > I'm not advocating that, but having swap on reclaim does not hurt anyone, > this is essentially the same, but with different underlying storage.
Sure. But my point is simply that sync_inode() is far too heavy-weight to be used in a reclaim context. The fact that it holds the inode_lock will interfere with normal writeback via pdflush and that could potentially slow down writeback even more.
e.g. think of kswapd threads running on 20 nodes of a NUMA machine all at once writing back dirty memory (yes, it happens). If we use sync_inode() to write back dirty mappings we would then have at least 20 CPUs serialising on the inode_lock trying to write back pages. If we instead use a thin wrapper around ->writepages() then they can all run in parallel through the filesystem(s), block devices, etc rather than being serialised at the highest possible layer....
> System > will do that anyway sooner or later during usual writeback, which in turn > can be a result of the same reclaim...
Cheers,
Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group
| |