• Chao Yu's avatar
    f2fs: enable rb-tree extent cache · 1dcc336b
    Chao Yu authored
    This patch enables rb-tree based extent cache in f2fs.
    
    When we mount with "-o extent_cache", f2fs will try to add recently accessed
    page-block mappings into rb-tree based extent cache as much as possible, instead
    of original one extent info cache.
    
    By this way, f2fs can support more effective cache between dnode page cache and
    disk. It will supply high hit ratio in the cache with fewer memory when dnode
    page cache are reclaimed in environment of low memory.
    
    Storage: Sandisk sd card 64g
    1.append write file (offset: 0, size: 128M);
    2.override write file (offset: 2M, size: 1M);
    3.override write file (offset: 4M, size: 1M);
    ...
    4.override write file (offset: 48M, size: 1M);
    ...
    5.override write file (offset: 112M, size: 1M);
    6.sync
    7.echo 3 > /proc/sys/vm/drop_caches
    8.read file (size:128M, unit: 4k, count: 32768)
    (time dd if=/mnt/f2fs/128m bs=4k count=32768)
    
    Extent Hit Ratio:
    		before		patched
    Hit Ratio	121 / 1071	1071 / 1071
    
    Performance:
    		before		patched
    real    	0m37.051s	0m35.556s
    user    	0m0.040s	0m0.026s
    sys     	0m2.990s	0m2.251s
    
    Memory Cost:
    		before		patched
    Tree Count:	0		1 (size: 24 bytes)
    Node Count:	0		45 (size: 1440 bytes)
    
    v3:
     o retest and given more details of test result.
    Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    1dcc336b
inode.c 9.86 KB