git: hammer2 - freemap part 3 - group by allocation size
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Jun 4 14:43:25 PDT 2013
commit a98aa0b0cae958124b59082290f0dfabc8423768
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Jun 4 14:29:20 2013 -0700
hammer2 - freemap part 3 - group by allocation size
* Each freemap leaf represents ~2MB worth of storage. Assign a radix to
each leaf, limiting allocations from that leaf to that radix.
This primarily results in inodes being grouped together, improving
the performance for find, ls or other topological scans. We could
improve this but for now we'll stick with it as-is.
This mechanic also allows us to use cluster_read(). This function is
used for everything except volume-header and freemap elements.
* More formally handle logical sizes vs allocation sizes vs device I/O
sizes. For example, a 1KB inode allocates 1KB using 16KB device I/O's.
* Beef up the sysctl I/O counters.
Summary of changes:
sys/vfs/hammer2/DESIGN | 11 +++
sys/vfs/hammer2/hammer2.h | 30 +++++++-
sys/vfs/hammer2/hammer2_chain.c | 110 ++++++++++++++++++++++--------
sys/vfs/hammer2/hammer2_disk.h | 16 ++---
sys/vfs/hammer2/hammer2_flush.c | 31 ++++-----
sys/vfs/hammer2/hammer2_freemap.c | 140 +++++++++++++++++---------------------
sys/vfs/hammer2/hammer2_vfsops.c | 22 +++++-
7 files changed, 227 insertions(+), 133 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a98aa0b0cae958124b59082290f0dfabc8423768
--
DragonFly BSD source repository
More information about the Commits
mailing list