From: Nick Piggin <npiggin@suse.de>
To: William Lee Irwin III <wli@holomorphy.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [rfc][patch] dynamic resizing dentry hash using RCU
Date: Sat, 24 Feb 2007 06:09:37 +0100 [thread overview]
Message-ID: <20070224050937.GA16601@wotan.suse.de> (raw)
In-Reply-To: <20070224042444.GU21484@holomorphy.com>
On Fri, Feb 23, 2007 at 08:24:44PM -0800, William Lee Irwin III wrote:
> On Fri, Feb 23, 2007 at 04:37:43PM +0100, Nick Piggin wrote:
> > The dentry hash uses up 8MB for 1 million entries on my 4GB system is
> > one of the biggest wasters of memory for me. Because I rarely have
> > more than one or two hundred thousand dentries. And that's with
> > several kernel trees worth of entries. Most desktop and probably even
> > many types of servers will only use a fraction of that.
> > So I introduce a new method for resizing hash tables with RCU, and apply
> > that to the dentry hash.
> > The primitive heuristic is that the hash size is doubled when the number of
> > entries reaches 150% the hash size, and halved when the number is 50%.
> > It should also be able to shrink under memory pressure, and scale up as
> > large as we go.
>
> You would be better served by a data structure different from a hashtable.
Possibly. Note that I wasn't intending to rewrite the dcache hash
specifically, but just demonstrate my lockless dynamic data structure
switch, and the dentry hash was the most obvious candidate.
But considering that it is lockless, and basically free in the fastpath
(ie. a single easily-predicted branch), then I'm better served by an
dynamically sized dynamic hash table than an inappropriately sized one.
Well, almost. The vmalloc issue is the downside, of course. But if I'm
on a NUMA that is doing vmalloc hashes anyway, then there is little
downside.
Out of curiosity, what better data structure do you have in mind for
the dentry hash?
next prev parent reply other threads:[~2007-02-24 5:09 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-23 15:37 [rfc][patch] dynamic resizing dentry hash using RCU Nick Piggin
2007-02-23 16:31 ` Eric Dumazet
2007-02-24 1:08 ` Nick Piggin
2007-02-23 17:25 ` Zach Brown
2007-02-24 1:26 ` Nick Piggin
2007-02-24 2:07 ` Nick Piggin
2007-02-24 1:31 ` Michael K. Edwards
2007-02-24 1:52 ` Nick Piggin
2007-02-24 4:07 ` KAMEZAWA Hiroyuki
2007-02-24 5:15 ` Nick Piggin
2007-02-24 4:24 ` William Lee Irwin III
2007-02-24 5:09 ` Nick Piggin [this message]
2007-02-24 22:56 ` William Lee Irwin III
2007-02-25 0:56 ` David Miller
2007-02-25 2:15 ` William Lee Irwin III
2007-02-25 6:21 ` Paul E. McKenney
2007-03-05 4:11 ` David Miller
2007-03-05 4:27 ` Nick Piggin
2007-03-05 4:38 ` David Miller
2007-03-05 4:42 ` Nick Piggin
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=20070224050937.GA16601@wotan.suse.de \
--to=npiggin@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=wli@holomorphy.com \
/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