DragonFly BSD
DragonFly commits List (threaded) for 2013-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: hammer2 - freemap part 3 - group by allocation size


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 4 Jun 2013 14:43:25 -0700 (PDT)

commit a98aa0b0cae958124b59082290f0dfabc8423768
Author: Matthew Dillon <dillon@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



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]