Drop unnecessary state_lock in ifs, which could improve some (~10%)
buffer write performance. I tested it through UnixBench on my x86 and
arm64 virtual machine with 50GB ramdisk & xfs filesystem, the results
shows below.
1. UnixBench Test on xfs:
./Run -i 1 -c 1 fstime-w
Before:
x86
File Write 1024 bufsize 2000 maxblocks 524708.0 KBps
arm64
File Write 1024 bufsize 2000 maxblocks 801965.0 KBps
After:
x86
File Write 1024 bufsize 2000 maxblocks 571315.0 KBps
arm64
File Write 1024 bufsize 2000 maxblocks 876077.0 KBps
2. Libmacro test in ext4:
Before:
Running: pwrite_u1k# bin/pwrite -E -C 200 -L -S -W -N pwrite_u1k -s 1k -I 500 -f /var/tmp/libmicro.1240/data
prc thr usecs/call samples errors cnt/samp size
pwrite_u1k 1 1 0.86016 167 0 200 1024
After:
Running: pwrite_u1k# bin/pwrite -E -C 200 -L -S -W -N pwrite_u1k -s 1k -I 500 -f /var/tmp/libmicro.1957/data
prc thr usecs/call samples errors cnt/samp size
pwrite_u1k 1 1 0.7699 190 0 200 1024
Thanks,
Yi.
Matthew Wilcox (Oracle) (2):
iomap: hold state_lock over call to ifs_set_range_uptodate()
iomap: protect read_bytes_pending with the state_lock
Zhang Yi (2):
iomap: drop unnecessary state_lock when setting ifs uptodate bits
iomap: drop unnecessary state_lock when changing ifs dirty bits
fs/iomap/buffered-io.c | 73 +++++++++++++++++++++++++-----------------
1 file changed, 43 insertions(+), 30 deletions(-)
--
2.39.2