mbox series

[v2,0/4] Remove nrexceptional tracking

Message ID 20201026151849.24232-1-willy@infradead.org (mailing list archive)
Headers show
Series Remove nrexceptional tracking | expand

Message

Matthew Wilcox Oct. 26, 2020, 3:18 p.m. UTC
We actually use nrexceptional for very little these days.  It's a minor
pain to keep in sync with nrpages, but the pain becomes much bigger
with the THP patches because we don't know how many indices a shadow
entry occupies.  It's easier to just remove it than keep it accurate.

Also, we save 8 bytes per inode which is nothing to sneeze at; on my
laptop, it would improve shmem_inode_cache from 22 to 23 objects per
16kB, and inode_cache from 26 to 27 objects.  Combined, that saves
a megabyte of memory from a combined usage of 25MB for both caches.
Unfortunately, ext4 doesn't cross a magic boundary, so it doesn't save
any memory for ext4.

Matthew Wilcox (Oracle) (4):
  mm: Introduce and use mapping_empty
  mm: Stop accounting shadow entries
  dax: Account DAX entries as nrpages
  mm: Remove nrexceptional from inode

 fs/block_dev.c          |  2 +-
 fs/dax.c                |  8 ++++----
 fs/gfs2/glock.c         |  3 +--
 fs/inode.c              |  2 +-
 include/linux/fs.h      |  2 --
 include/linux/pagemap.h |  5 +++++
 mm/filemap.c            | 16 ----------------
 mm/swap_state.c         |  4 ----
 mm/truncate.c           | 19 +++----------------
 mm/workingset.c         |  1 -
 10 files changed, 15 insertions(+), 47 deletions(-)

Comments

Matthew Wilcox Jan. 21, 2021, 6:43 p.m. UTC | #1
Ping?  These patches still apply to next-20210121.

On Mon, Oct 26, 2020 at 03:18:45PM +0000, Matthew Wilcox (Oracle) wrote:
> We actually use nrexceptional for very little these days.  It's a minor
> pain to keep in sync with nrpages, but the pain becomes much bigger
> with the THP patches because we don't know how many indices a shadow
> entry occupies.  It's easier to just remove it than keep it accurate.
> 
> Also, we save 8 bytes per inode which is nothing to sneeze at; on my
> laptop, it would improve shmem_inode_cache from 22 to 23 objects per
> 16kB, and inode_cache from 26 to 27 objects.  Combined, that saves
> a megabyte of memory from a combined usage of 25MB for both caches.
> Unfortunately, ext4 doesn't cross a magic boundary, so it doesn't save
> any memory for ext4.
> 
> Matthew Wilcox (Oracle) (4):
>   mm: Introduce and use mapping_empty
>   mm: Stop accounting shadow entries
>   dax: Account DAX entries as nrpages
>   mm: Remove nrexceptional from inode
> 
>  fs/block_dev.c          |  2 +-
>  fs/dax.c                |  8 ++++----
>  fs/gfs2/glock.c         |  3 +--
>  fs/inode.c              |  2 +-
>  include/linux/fs.h      |  2 --
>  include/linux/pagemap.h |  5 +++++
>  mm/filemap.c            | 16 ----------------
>  mm/swap_state.c         |  4 ----
>  mm/truncate.c           | 19 +++----------------
>  mm/workingset.c         |  1 -
>  10 files changed, 15 insertions(+), 47 deletions(-)
> 
> -- 
> 2.28.0
>
William Kucharski Jan. 22, 2021, 7:38 p.m. UTC | #2
> On Oct 26, 2020, at 9:18 AM, Matthew Wilcox (Oracle) <willy@infradead.org> wrote:
> 
> We actually use nrexceptional for very little these days.  It's a minor
> pain to keep in sync with nrpages, but the pain becomes much bigger
> with the THP patches because we don't know how many indices a shadow
> entry occupies.  It's easier to just remove it than keep it accurate.
> 
> Also, we save 8 bytes per inode which is nothing to sneeze at; on my
> laptop, it would improve shmem_inode_cache from 22 to 23 objects per
> 16kB, and inode_cache from 26 to 27 objects.  Combined, that saves
> a megabyte of memory from a combined usage of 25MB for both caches.
> Unfortunately, ext4 doesn't cross a magic boundary, so it doesn't save
> any memory for ext4.
> 
> Matthew Wilcox (Oracle) (4):
>  mm: Introduce and use mapping_empty
>  mm: Stop accounting shadow entries
>  dax: Account DAX entries as nrpages
>  mm: Remove nrexceptional from inode
> 
> fs/block_dev.c          |  2 +-
> fs/dax.c                |  8 ++++----
> fs/gfs2/glock.c         |  3 +--
> fs/inode.c              |  2 +-
> include/linux/fs.h      |  2 --
> include/linux/pagemap.h |  5 +++++
> mm/filemap.c            | 16 ----------------
> mm/swap_state.c         |  4 ----
> mm/truncate.c           | 19 +++----------------
> mm/workingset.c         |  1 -
> 10 files changed, 15 insertions(+), 47 deletions(-)
> 
> -- 
> 2.28.0

Looks good to me.

Reviewed-by: William Kucharski <william.kucharski@oracle.com>
Matthew Wilcox March 13, 2021, 2:35 a.m. UTC | #3
Ping?

On Thu, Jan 21, 2021 at 06:43:34PM +0000, Matthew Wilcox wrote:
> Ping?  These patches still apply to next-20210121.
> 
> On Mon, Oct 26, 2020 at 03:18:45PM +0000, Matthew Wilcox (Oracle) wrote:
> > We actually use nrexceptional for very little these days.  It's a minor
> > pain to keep in sync with nrpages, but the pain becomes much bigger
> > with the THP patches because we don't know how many indices a shadow
> > entry occupies.  It's easier to just remove it than keep it accurate.
> > 
> > Also, we save 8 bytes per inode which is nothing to sneeze at; on my
> > laptop, it would improve shmem_inode_cache from 22 to 23 objects per
> > 16kB, and inode_cache from 26 to 27 objects.  Combined, that saves
> > a megabyte of memory from a combined usage of 25MB for both caches.
> > Unfortunately, ext4 doesn't cross a magic boundary, so it doesn't save
> > any memory for ext4.
> > 
> > Matthew Wilcox (Oracle) (4):
> >   mm: Introduce and use mapping_empty
> >   mm: Stop accounting shadow entries
> >   dax: Account DAX entries as nrpages
> >   mm: Remove nrexceptional from inode
> > 
> >  fs/block_dev.c          |  2 +-
> >  fs/dax.c                |  8 ++++----
> >  fs/gfs2/glock.c         |  3 +--
> >  fs/inode.c              |  2 +-
> >  include/linux/fs.h      |  2 --
> >  include/linux/pagemap.h |  5 +++++
> >  mm/filemap.c            | 16 ----------------
> >  mm/swap_state.c         |  4 ----
> >  mm/truncate.c           | 19 +++----------------
> >  mm/workingset.c         |  1 -
> >  10 files changed, 15 insertions(+), 47 deletions(-)
> > 
> > -- 
> > 2.28.0
> > 
>