]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: fix performance regression in writeback of random writes
authorJan Kara <jack@suse.cz>
Mon, 16 Sep 2013 12:24:26 +0000 (08:24 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 16 Sep 2013 12:24:26 +0000 (08:24 -0400)
commit2007717d6320e981b322cada88e4ae0d9d5cc357
tree4de915210213ff49efd637e35c176cd4e09d426d
parentc05a31d26a3de7a22979169e425d696d742baa8a
ext4: fix performance regression in writeback of random writes

The Linux Kernel Performance project guys have reported that commit
3bd2777b5f introduces a performance regression for the following fio
workload:

[global]
direct=0
ioengine=mmap
size=1500M
bs=4k
pre_read=1
numjobs=1
overwrite=1
loops=5
runtime=300
group_reporting
invalidate=0
directory=/mnt/
file_service_type=random:36
file_service_type=random:36

[job0]
startdelay=0
rw=randrw
filename=data0/f1:data0/f2

[job1]
startdelay=0
rw=randrw
filename=data0/f2:data0/f1
...

[job7]
startdelay=0
rw=randrw
filename=data0/f2:data0/f1

The culprit of the problem is that after the commit ext4_writepages()
are more aggressive in writing back pages. Thus we have less consecutive
dirty pages resulting in more seeking.

This increased aggressivity is caused by a bug in the condition
terminating ext4_writepages(). We start writing from the beginning of
the file even if we should have terminated ext4_writepages() because
wbc->nr_to_write <= 0.

After fixing the condition the throughput of the fio workload is about 20%
better than before writeback reorganization.

Reported-by: "Yan, Zheng" <zheng.z.yan@intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/inode.c