linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Sebastien Buisson <sebastien.buisson@bull.net>
Cc: Andi Kleen <andi@firstfloor.org>, <viro@zeniv.linux.org.uk>,
	<linux-fsdevel@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Allow increasing the buffer-head per-CPU LRU size
Date: Thu, 10 Jul 2014 00:07:45 -0700	[thread overview]
Message-ID: <20140710000745.37be4400.akpm@linux-foundation.org> (raw)
In-Reply-To: <53BE37E5.4030407@bull.net>

On Thu, 10 Jul 2014 08:51:17 +0200 Sebastien Buisson <sebastien.buisson@bull.net> wrote:

> Allow increasing the buffer-head per-CPU LRU size to allow efficient
> filesystem operations that access many blocks for each transaction.
> For example, creating a file in a large ext4 directory with quota
> enabled will accesses multiple buffer heads and will overflow the LRU
> at the default 8-block LRU size:
> 
> * parent directory inode table block (ctime, nlinks for subdirs)
> * new inode bitmap
> * inode table block
> * 2 quota blocks
> * directory leaf block (not reused, but pollutes one cache entry)
> * 2 levels htree blocks (only one is reused, other pollutes cache)
> * 2 levels indirect/index blocks (only one is reused)
> 
> The buffer-head per-CPU LRU size can be changed at config time, and its
> default value is raised to 16.

The patch is a performance optimisation but the changelog omits all
mention of the most important part: the magnitude of the performance
improvement.

> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -268,4 +268,18 @@ endif # NETWORK_FILESYSTEMS
>   source "fs/nls/Kconfig"
>   source "fs/dlm/Kconfig"
> 
> +config BH_LARGE_LRU
> +      def_bool y
> +      depends on (EXT4_FS && QUOTA)
> +
> +config BH_LRU_SIZE
> +      int
> +      range 8 64
> +      default "16" if BH_LARGE_LRU
> +      default "8" if !BH_LARGE_LRU
> +      help
> +        This sets the per-CPU LRU size for buffer heads in memory.
> +        More complex filesystems may be modifying multiple blocks
> +        within a single transaction, so keeping the buffer heads in
> +        CPU-local cache speeds up modifications significantly.

This hardwires 16 if ext4&quota and 8 otherwise.  There's no way for
anyone to alter this decision if they think it will be helpful (or
harmful) in their setup.

>   endmenu
> diff --git a/fs/buffer.c b/fs/buffer.c
> index 6024877..b83fa63 100644
> --- a/fs/buffer.c
> +++ b/fs/buffer.c
> @@ -1255,8 +1255,7 @@ static struct buffer_head *__bread_slow(struct 
> buffer_head *bh)

Your email client is wordwrapping the patches btw.  And it replaces
tabs with spaces.

  reply	other threads:[~2014-07-10  7:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-04  8:38 [PATCH] Allow increasing the buffer-head per-CPU LRU size Sebastien Buisson
2014-07-05  7:44 ` Andreas Mohr
2014-07-06 16:18 ` Andi Kleen
2014-07-07 10:32   ` Sebastien Buisson
2014-07-07 16:30     ` Andi Kleen
2014-07-07 16:30       ` Andi Kleen
2014-07-07 22:29       ` Andrew Morton
2014-07-07 22:46         ` Andi Kleen
2014-07-08  6:28           ` Sebastien Buisson
2014-07-10  6:51             ` Sebastien Buisson
2014-07-10  7:07               ` Andrew Morton [this message]
2014-07-10  7:29                 ` Sebastien Buisson
2014-07-10 14:17                   ` Andi Kleen
  -- strict thread matches above, loose matches on Subject: below --
2014-06-27 12:25 Sebastien Buisson
2014-06-24 15:52 Sebastien Buisson
2014-06-25 22:16 ` Andrew Morton
2014-06-26 11:44   ` Sebastien Buisson
2014-06-26 21:37     ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140710000745.37be4400.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sebastien.buisson@bull.net \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).