f2fs: improve write performance under frequent fsync calls
authorJaegeuk Kim <jaegeuk.kim@samsung.com>
Wed, 8 Jan 2014 01:09:51 +0000 (10:09 +0900)
committerJaegeuk Kim <jaegeuk.kim@samsung.com>
Wed, 8 Jan 2014 02:16:20 +0000 (11:16 +0900)
commitfb5566da9181d33ecdd9892e44f90320e7d4cc9f
treed3b1656ec7e454ea2d831f673a538f2f78d1f85a
parent04a17fb17fafada39f96bfb41ceb2dc1c11b2af6
f2fs: improve write performance under frequent fsync calls

When considering a bunch of data writes with very frequent fsync calls, we
are able to think the following performance regression.

N: Node IO, D: Data IO, IO scheduler: cfq

Issue    pending IOs
 D1 D2 D3 D4
 D1         D2 D3 D4 N1
 D2            D3 D4 N1 N2
 N1            D3 D4 N2 D1
 --> N1 can be selected by cfq becase of the same priority of N and D.
     Then D3 and D4 would be delayed, resuling in performance degradation.

So, when processing the fsync call, it'd better give higher priority to data IOs
than node IOs by assigning WRITE and WRITE_SYNC respectively.
This patch improves the random wirte performance with frequent fsync calls by up
to 10%.

Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/node.c
fs/f2fs/segment.c