1. 22 8月, 2014 4 次提交
  2. 20 8月, 2014 4 次提交
  3. 02 8月, 2014 1 次提交
  4. 31 7月, 2014 5 次提交
  5. 29 7月, 2014 4 次提交
  6. 12 7月, 2014 1 次提交
  7. 10 7月, 2014 4 次提交
    • G
      eee6160f
    • C
      f2fs: refactor flush_nat_entries codes for reducing NAT writes · aec71382
      Chao Yu 提交于
      Although building NAT journal in cursum reduce the read/write work for NAT
      block, but previous design leave us lower performance when write checkpoint
      frequently for these cases:
      1. if journal in cursum has already full, it's a bit of waste that we flush all
         nat entries to page for persistence, but not to cache any entries.
      2. if journal in cursum is not full, we fill nat entries to journal util
         journal is full, then flush the left dirty entries to disk without merge
         journaled entries, so these journaled entries may be flushed to disk at next
         checkpoint but lost chance to flushed last time.
      
      In this patch we merge dirty entries located in same NAT block to nat entry set,
      and linked all set to list, sorted ascending order by entries' count of set.
      Later we flush entries in sparse set into journal as many as we can, and then
      flush merged entries to disk. In this way we can not only gain in performance,
      but also save lifetime of flash device.
      
      In my testing environment, it shows this patch can help to reduce NAT block
      writes obviously. In hard disk test case: cost time of fsstress is stablely
      reduced by about 5%.
      
      1. virtual machine + hard disk:
      fsstress -p 20 -n 200 -l 5
      		node num	cp count	nodes/cp
      based		4599.6		1803.0		2.551
      patched		2714.6		1829.6		1.483
      
      2. virtual machine + 32g micro SD card:
      fsstress -p 20 -n 200 -l 1 -w -f chown=0 -f creat=4 -f dwrite=0
      -f fdatasync=4 -f fsync=4 -f link=0 -f mkdir=4 -f mknod=4 -f rename=5
      -f rmdir=5 -f symlink=0 -f truncate=4 -f unlink=5 -f write=0 -S
      
      		node num	cp count	nodes/cp
      based		84.5		43.7		1.933
      patched		49.2		40.0		1.23
      
      Our latency of merging op shows not bad when handling extreme case like:
      merging a great number of dirty nats:
      latency(ns)	dirty nat count
      3089219		24922
      5129423		27422
      4000250		24523
      
      change log from v1:
       o fix wrong logic in add_nat_entry when grab a new nat entry set.
       o swith to create slab cache in create_node_manager_caches.
       o use GFP_ATOMIC instead of GFP_NOFS to avoid potential long latency.
      
      change log from v2:
       o make comment position more appropriate suggested by Jaegeuk Kim.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      aec71382
    • J
      f2fs: clean up an unused parameter and assignment · a014e037
      Jaegeuk Kim 提交于
      This patch cleans up simple unnecessary codes.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      a014e037
    • J
      f2fs: introduce f2fs_do_tmpfile for code consistency · b97a9b5d
      Jaegeuk Kim 提交于
      This patch adds f2fs_do_tmpfile to eliminate the redundant init_inode_metadata
      flow.
      Throught this, we can provide the consistent lock usage, e.g., fi->i_sem,  and
      this will enable better debugging stuffs.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      b97a9b5d
  8. 09 7月, 2014 2 次提交
  9. 08 6月, 2014 1 次提交
  10. 04 6月, 2014 2 次提交
  11. 07 5月, 2014 10 次提交
  12. 07 4月, 2014 1 次提交
    • J
      f2fs: introduce f2fs_issue_flush to avoid redundant flush issue · 6b4afdd7
      Jaegeuk Kim 提交于
      Some storage devices show relatively high latencies to complete cache_flush
      commands, even though their normal IO speed is prettry much high. In such
      the case, it needs to merge cache_flush commands as much as possible to avoid
      issuing them redundantly.
      So, this patch introduces a mount option, "-o flush_merge", to mitigate such
      the overhead.
      
      If this option is enabled by user, F2FS merges the cache_flush commands and then
      issues just one cache_flush on behalf of them. Once the single command is
      finished, F2FS sends a completion signal to all the pending threads.
      
      Note that, this option can be used under a workload consisting of very intensive
      concurrent fsync calls, while the storage handles cache_flush commands slowly.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      6b4afdd7
  13. 01 4月, 2014 1 次提交