On Sat, Oct 12, 2019 at 10:13:23AM +1100, Dave Chinner wrote: > On Fri, Oct 11, 2019 at 08:39:39AM -0400, Brian Foster wrote: > > On Wed, Oct 09, 2019 at 02:21:02PM +1100, Dave Chinner wrote: > > > From: Dave Chinner <dchinner@xxxxxxxxxx> > > > > > > The buffer cache shrinker frees more than just the xfs_buf slab > > > objects - it also frees the pages attached to the buffers. Make sure > > > the memory reclaim code accounts for this memory being freed > > > correctly, similar to how the inode shrinker accounts for pages > > > freed from the page cache due to mapping invalidation. > > > > > > We also need to make sure that the mm subsystem knows these are > > > reclaimable objects. We provide the memory reclaim subsystem with a > > > a shrinker to reclaim xfs_bufs, so we should really mark the slab > > > that way. > > > > > > We also have a lot of xfs_bufs in a busy system, spread them around > > > like we do inodes. > > > > > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> > > > --- > > > > Seems reasonable, but for inodes we also spread the ili zone. Should we > > not be consistent with bli's as well? > > bli's are reclaimed when the buffer is cleaned. ili's live for the > live of the inode in cache. Hence bli's are short term allocations > (much shorter than xfs_bufs they attach to) and are reclaimed much > faster than inodes and their ilis. There's also a lot less blis than > ili's, so the spread of their footprint across memory nodes doesn't > matter that much. Local access for the memcpy during formatting is > probably more important than spreading the memory usage of them > these days, anyway. > Yes, the buffer/inode lifecycle difference is why why I presume bli zones are not ZONE_RECLAIM like ili zones. This doesn't tell me anything about why buffers should be spread around as such and buffer log items not, though.. Brian > Cheers, > > Dave. > -- > Dave Chinner > david@xxxxxxxxxxxxx