1. 27 11月, 2009 1 次提交
  2. 20 11月, 2009 2 次提交
    • R
      nilfs2: move out mark_inode_dirty calls from bmap routines · 9cb4e0d2
      Ryusuke Konishi 提交于
      Previously, nilfs_bmap_add_blocks() and nilfs_bmap_sub_blocks() called
      mark_inode_dirty() after they changed the number of data blocks.
      
      This moves these calls outside bmap outermost functions like
      nilfs_bmap_insert() or nilfs_bmap_truncate().
      
      This will mitigate overhead for truncate or delete operation since
      they repeatedly remove set of blocks.  Nearly 10 percent improvement
      was observed for removal of a large file:
      
       # dd if=/dev/zero of=/test/aaa bs=1M count=512
       # time rm /test/aaa
      
        real  2.968s -> 2.705s
      
      Further optimization may be possible by eliminating these
      mark_inode_dirty() uses though I avoid mixing separate changes here.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      9cb4e0d2
    • R
      nilfs2: remove buffer locking in nilfs_mark_inode_dirty · a49762fd
      Ryusuke Konishi 提交于
      This lock is eliminable because inodes on the buffer can be updated
      independently.  Although a log writer also fills in bmap data on the
      on-disk inodes, this update is exclusively done by a log writer lock.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      a49762fd
  3. 15 11月, 2009 1 次提交
  4. 29 9月, 2009 1 次提交
  5. 22 9月, 2009 1 次提交
  6. 14 9月, 2009 1 次提交
  7. 24 6月, 2009 1 次提交
  8. 10 6月, 2009 3 次提交
    • R
      nilfs2: support contiguous lookup of blocks · c3a7abf0
      Ryusuke Konishi 提交于
      Although get_block() callback function can return extent of contiguous
      blocks with bh->b_size, nilfs_get_block() function did not support
      this feature.
      
      This adds contiguous lookup feature to the block mapping codes of
      nilfs, and allows the nilfs_get_blocks() function to return the extent
      information by applying the feature.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      c3a7abf0
    • R
      nilfs2: enable sync_page method · e85dc1d5
      Ryusuke Konishi 提交于
      This adds a missing sync_page method which unplugs bio requests when
      waiting for page locks. This will improve read performance of nilfs.
      
      Here is a measurement result using dd command.
      
      Without this patch:
      
       # mount -t nilfs2 /dev/sde1 /test
       # dd if=/test/aaa of=/dev/null bs=512k
       1024+0 records in
       1024+0 records out
       536870912 bytes (537 MB) copied, 6.00688 seconds, 89.4 MB/s
      
      With this patch:
      
       # mount -t nilfs2 /dev/sde1 /test
       # dd if=/test/aaa of=/dev/null bs=512k
       1024+0 records in
       1024+0 records out
       536870912 bytes (537 MB) copied, 3.54998 seconds, 151 MB/s
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      e85dc1d5
    • H
      NILFS2: Pagecache usage optimization on NILFS2 · 258ef67e
      Hisashi Hifumi 提交于
      Hi,
      
      I introduced "is_partially_uptodate" aops for NILFS2.
      
      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.
      
      1 --file-block-size=8K --file-total-size=2G --file-test-mode=rndrw --file-fsync-freq=0 --fil
      e-rw-ratio=1 run
      
      -2.6.30-rc5
      
      Test execution summary:
          total time:                          151.2907s
          total number of events:              200000
          total time taken by event execution: 2409.8387
          per-request statistics:
               min:                            0.0000s
               avg:                            0.0120s
               max:                            0.9306s
               approx.  95 percentile:         0.0439s
      
      Threads fairness:
          events (avg/stddev):           12500.0000/238.52
          execution time (avg/stddev):   150.6149/0.01
      
      -2.6.30-rc5-patched
      
      Test execution summary:
          total time:                          140.8828s
          total number of events:              200000
          total time taken by event execution: 2240.8577
          per-request statistics:
               min:                            0.0000s
               avg:                            0.0112s
               max:                            0.8750s
               approx.  95 percentile:         0.0418s
      
      Threads fairness:
          events (avg/stddev):           12500.0000/218.43
          execution time (avg/stddev):   140.0536/0.01
      
      arch: ia64
      pagesize: 16k
      
      Thanks.
      Signed-off-by: NHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      258ef67e
  9. 07 4月, 2009 6 次提交