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"a 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.
next prev parent 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).