GFS2: Pagecache usage optimization on GFS2

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Thursday, March 26, 2009 - 12:20 pm

Gitweb:     http://git.kernel.org/linus/229615def3f573fc448d20f62c6ec1bc9340cefb
Commit:     229615def3f573fc448d20f62c6ec1bc9340cefb
Parent:     02ab1721591f7ac1f632fc74b301513bd6f5849f
Author:     Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
AuthorDate: Tue Mar 3 11:45:20 2009 +0900
Committer:  Steven Whitehouse <steve@dolmen.chygwyn.com>
CommitDate: Tue Mar 24 11:21:25 2009 +0000

    GFS2: Pagecache usage optimization on GFS2
    
    I introduced "is_partially_uptodate" aops for GFS2.
    
    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=16 --max-requests=200000 --test=fileio --file-num=1
    --file-block-size=8K --file-total-size=2G --file-test-mode=rndrw --file-fsync-freq=0
    --file-rw-ratio=1 run
    
    -2.6.29-rc6
    Test execution summary:
        total time:                          202.6389s
        total number of events:              200000
        total time taken by event execution: 2580.0480
        per-request statistics:
             min:                            0.0000s
             avg:                            0.0129s
             max:                            49.5852s
             approx.  95 percentile:         0.0462s
    
    -2.6.29-rc6-patched
    Test execution summary:
        total time:                          177.8639s
        total number of events:              200000
        total time taken by event execution: 2419.0199
        per-request statistics:
             min:                            0.0000s
             avg:                            0.0121s
             max:                            52.4306s
             approx.  95 percentile:         0.0444s
    
    arch: ia64
    pagesize: 16k
    blocksize: 4k
    
    Signed-off-by: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
---
 fs/gfs2/ops_address.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
index a6d00e8..a6dde17 100644
--- a/fs/gfs2/ops_address.c
+++ b/fs/gfs2/ops_address.c
@@ -1096,6 +1096,7 @@ static const struct address_space_operations gfs2_writeback_aops = {
 	.releasepage = gfs2_releasepage,
 	.direct_IO = gfs2_direct_IO,
 	.migratepage = buffer_migrate_page,
+	.is_partially_uptodate = block_is_partially_uptodate,
 };
 
 static const struct address_space_operations gfs2_ordered_aops = {
@@ -1111,6 +1112,7 @@ static const struct address_space_operations gfs2_ordered_aops = {
 	.releasepage = gfs2_releasepage,
 	.direct_IO = gfs2_direct_IO,
 	.migratepage = buffer_migrate_page,
+	.is_partially_uptodate = block_is_partially_uptodate,
 };
 
 static const struct address_space_operations gfs2_jdata_aops = {
@@ -1125,6 +1127,7 @@ static const struct address_space_operations gfs2_jdata_aops = {
 	.bmap = gfs2_bmap,
 	.invalidatepage = gfs2_invalidatepage,
 	.releasepage = gfs2_releasepage,
+	.is_partially_uptodate = block_is_partially_uptodate,
 };
 
 void gfs2_set_aops(struct inode *inode)
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
GFS2: Pagecache usage optimization on GFS2, Linux Kernel Mailing ..., (Thu Mar 26, 12:20 pm)