From: Benjamin Marzinski <bmarzins@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 0/2] readdir cookie patches
Date: Fri, 17 Jul 2015 23:40:34 -0500 [thread overview]
Message-ID: <1437194436-6545-1-git-send-email-bmarzins@redhat.com> (raw)
So, these two patches change the readdir cookies to format that should last a
lot longer before there are collisions. When I did performance testing, the
results depended on how large the directory was. For small directories, the
code performed slightly worse, with it becoming more noticeable as the
directories got larger until a point. At around 100000 entries it seemed the
worst, with a "ls -f" time of 0.095s in the new code vs 0.084s in the old code.
After that you start reaching the point where hash indexes reach the maximum
depth, and the new code stops needing to sort them, and performance of the new
code quickly surpasses the old code. For instance, when I contrived a situation
where there were 1000 dirents with the same hash index, the new code "ls -f"
time was a less than a tenth of the old code, 0.003s vs 0.036s. However, this
is a pretty unrealistic size, since with 131072 hash buckets, you shouldn't
expect this many dirents per average bucket until you have around 130 million
files in a directory.
The only other real issue with the new code is that since we have to compute
and save the cookie when we first process the dirent in the read_dir_code,
instead of at the moment of sorting, we need to double the space used to
save the dirents for sorting. We could avoid the, by using part of the
dirent padding as a scratch space to store the computed cookie.
Benjamin Marzinski (2):
gfs2: keep offset when splitting dir leaf blocks
gfs2: change gfs2 readdir cookie
fs/gfs2/dir.c | 189 ++++++++++++++++++++++++++++++---------
fs/gfs2/incore.h | 3 +
fs/gfs2/ops_fstype.c | 3 +
fs/gfs2/super.c | 12 +++
include/uapi/linux/gfs2_ondisk.h | 2 +
5 files changed, 167 insertions(+), 42 deletions(-)
--
1.8.3.1
next reply other threads:[~2015-07-18 4:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-18 4:40 Benjamin Marzinski [this message]
2015-07-18 4:40 ` [Cluster-devel] [PATCH 1/2] gfs2: keep offset when splitting dir leaf blocks Benjamin Marzinski
2015-07-18 4:40 ` [Cluster-devel] [PATCH 2/2] gfs2: change gfs2 readdir cookie Benjamin Marzinski
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=1437194436-6545-1-git-send-email-bmarzins@redhat.com \
--to=bmarzins@redhat.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;
as well as URLs for NNTP newsgroup(s).