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