All of lore.kernel.org
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit.edu>
To: linux-ext4@vger.kernel.org, Eric Sandeen <esandeen@redhat.com>
Subject: Re: What's cooking in e2fsprogs.git (topics)
Date: Mon, 17 Dec 2007 22:32:49 -0500	[thread overview]
Message-ID: <20071218033249.GQ7070@thunk.org> (raw)
In-Reply-To: <20071217233634.GK3214@webber.adilger.int>

On Mon, Dec 17, 2007 at 04:36:34PM -0700, Andreas Dilger wrote:
> > But the performance problems are starting to make me worry.  Do you
> > know how many tdb entries you had before tdb performance started going
> > really badly down the toilet?  I wonder if there are some tuning knobs
> > we could tweak to the performance numbers.
> 
> There is some test data at
> https://bugzilla.lustre.org/attachment.cgi?id=13924 which is a PDF
> file.  This shows 1000 items is reasonable, and 10000 is not.

I did some research, and the problem is that tdb uses a fixed number
of buckets for its hash size.  By default it is 131 hash buckets, but
you can pass in a different hash size when you create the tdb table.
So with 10,000 items, you will have an average of 76 objects per hash
chain, and that doesn't work terribly well, obviously.  Berkdb's hash
method uses an extensible hashing system which increases number of
bits that are used in the hash, and breaks up the hash buckets as they
get too big, which is a much nicer self-tuning algorithm.  With tdb,
you need to know from the get-go how much stuff you're likely going to
be storing in the tdb system, and adjust your hash size accordingly.

> The majority of the time is taken looking up existing entries, and this
> is due to one unusual requirement of the Lustre usage to be notified
> of duplicate insertions to detect duplicate use of objects, so this may
> have been a major factor in the slowdown.  It isn't really practical to
> use a regular libext2fs bitmap for our case, since the collision space
> is a 64-bit integer, but maybe we could have done this with an RB tree
> or some other mechanism.

Well, if you only need an in-core data structure, and it doesn't need
to be stored on disk, have you looked at e2fsck/dict.c, which was
lifted from Kazlib?  It's a userspace, single file, in-memory only RB
tree implementation.

Regards,

						- Ted

  reply	other threads:[~2007-12-18  3:32 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-04 22:42 What's cooking in e2fsprogs.git (topics) Theodore Ts'o, Theodore Ts'o
2007-11-05  2:15 ` Andreas Dilger
2007-11-05  4:32   ` Theodore Tso
2007-11-05 15:06     ` Andreas Dilger
2007-12-17 17:11 ` Theodore Tso
2007-12-17 22:34   ` Andreas Dilger
2007-12-17 22:59     ` Theodore Tso
2007-12-17 23:36       ` Andreas Dilger
2007-12-18  3:32         ` Theodore Tso [this message]
2007-12-18  8:13       ` Florian Weimer
2007-12-18 19:10   ` What's cooking in e2fsprogs.git (topics) - [RFC] FLEX_BG bmap and itable allocation patch Jose R. Santos
2008-02-11  4:51   ` What's cooking in e2fsprogs.git (topics) Theodore Tso
2008-02-11  5:08     ` Eric Sandeen
2008-02-11  7:24       ` Theodore Tso
2008-02-19  5:09     ` Theodore Tso
2008-02-20 18:46       ` Eric Sandeen
2008-02-21 14:05         ` Theodore Tso
2008-02-21 16:40           ` Eric Sandeen
2008-02-22 23:14             ` Andreas Dilger
2008-02-23  0:15               ` Theodore Tso
2008-02-25  4:20                 ` Andreas Dilger
2008-02-25 15:13                   ` Theodore Tso
2008-02-25 16:01                     ` Aneesh Kumar K.V
2008-02-25 17:32                     ` Eric Sandeen
2008-02-25 20:23                       ` Theodore Tso
2008-02-29 15:43       ` Theodore Tso
2008-02-29 19:59         ` Andreas Dilger
2008-02-29 22:49           ` Theodore Tso
2008-03-02  3:24         ` Jose R. Santos
2008-03-05 16:59         ` Jose R. Santos
2008-03-13 18:11         ` Theodore Tso
2008-03-20 20:32           ` Theodore Tso
2008-04-02  0:09         ` Theodore Tso
2008-04-07 17:12           ` Theodore Tso
2008-04-18 18:43             ` Theodore Tso
2008-04-21 16:41               ` Theodore Tso
2008-04-23  7:32                 ` Aneesh Kumar K.V
2008-04-23 11:55                   ` Theodore Tso
2008-04-23 18:58                 ` Aneesh Kumar K.V
2008-04-28 19:44                   ` The changes I made to the undo-mgr (Re: What's cooking in e2fsprogs.git (topics)) Theodore Tso
2008-05-24 23:54                 ` What's cooking in e2fsprogs.git (topics) Theodore Tso
2008-06-03  2:40                   ` Theodore Tso
2008-06-17 12:03                     ` Theodore Tso
2008-03-02 23:50       ` Christian Kujau
  -- strict thread matches above, loose matches on Subject: below --
2007-10-16  4:48 Theodore Ts'o
2007-10-16  5:36 ` Aneesh Kumar K.V
2007-10-16 16:41 ` Jose R. Santos

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=20071218033249.GQ7070@thunk.org \
    --to=tytso@mit.edu \
    --cc=esandeen@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.