• Hisashi Hifumi's avatar
    xfs: pagecache usage optimization · bddaafa1
    Hisashi Hifumi authored
    Hi.
    
    I introduced "is_partially_uptodate" aops for XFS.
    
    A page can have multiple buffers and even if a page is not uptodate,
    some buffers can be uptodate on pagesize != blocksize environment.
    
    This aops checks that all buffers which correspond to a part of a file
    that we want to read are uptodate. If so, we do not have to issue actual
    read IO to HDD even if a page is not uptodate because the portion we
    want to read are uptodate.
    
    "block_is_partially_uptodate" function is already used by ext2/3/4.
    With the following patch random read/write mixed workloads or random read
    after random write workloads can be optimized and we can get performance
    improvement.
    
    I did a performance test using the sysbench.
    
    #sysbench --num-threads=4 --max-requests=100000 --test=fileio --file-num=1 \
    --file-block-size=8K --file-total-size=1G --file-test-mode=rndrw \
    --file-fsync-freq=0 --file-rw-ratio=0.5 run
    
    -2.6.29-rc6
    Test execution summary:
        total time:                          123.8645s
        total number of events:              100000
        total time taken by event execution: 442.4994
        per-request statistics:
             min:                            0.0000s
             avg:                            0.0044s
             max:                            0.3387s
             approx.  95 percentile:         0.0118s
    
    -2.6.29-rc6-patched
    Test execution summary:
        total time:                          108.0757s
        total number of events:              100000
        total time taken by event execution: 417.7505
        per-request statistics:
             min:                            0.0000s
             avg:                            0.0042s
             max:                            0.3217s
             approx.  95 percentile:         0.0118s
    
    arch: ia64
    pagesize: 16k
    blocksize: 4k
    Signed-off-by: default avatarHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarFelix Blyakher <felixb@sgi.com>
    bddaafa1
xfs_aops.c 39.6 KB