Message ID | 20230531125918.55609-1-frank.li@vivo.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fdb43e12e0c13cb0ef26c5018ae7f00c48e0a0b7 |
Headers | show |
Series | [f2fs-dev] f2fs: flag as supporting buffered async reads | expand |
Hi Yangtao, I remember hearing that f2fs can perform relatively poorly under io_uring, nice find. I suggest rewriting the commit message though. From the looks of it, it might suggest that FMODE_BUF_RASYNC is a magic flag that automatically improves performance that can be enabled willy nilly. How about something like: f2fs uses generic_file_buffered_read(), which supports buffered async reads since commit 1a0a7853b901 ("mm: support async buffered reads in generic_file_buffered_read()"). Match other file-systems and enable it. The read performance has been greatly improved under io_uring: 167M/s -> 234M/s, Increase ratio by 40% Test w/: ./fio --name=onessd --filename=/data/test/local/io_uring_test --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 --ioengine=io_uring --registerfiles --fixedbufs --gtod_reduce=1 --group_reporting --sqthread_poll=1 On Wed, May 31, 2023 at 10:01 PM Yangtao Li via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net> wrote: > > After enabling this feature, the read performance has been greatly > improved: > > 167M/s -> 234M/s, Increase ratio by 40% > > Test w/: > ./fio --name=onessd --filename=/data/test/local/io_uring_test > --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 > --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 > --ioengine=io_uring --registerfiles --fixedbufs > --gtod_reduce=1 --group_reporting --sqthread_poll=1 > > Signed-off-by: Lu Hongfei <luhongfei@vivo.com> > Signed-off-by: Yangtao Li <frank.li@vivo.com> > --- > fs/f2fs/file.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index 015ed274dc31..23c68ee946e5 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -546,7 +546,7 @@ static int f2fs_file_open(struct inode *inode, struct file *filp) > if (err) > return err; > > - filp->f_mode |= FMODE_NOWAIT; > + filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC; > > return dquot_file_open(inode, filp); > } > -- > 2.39.0 > > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
On 05/31, Juhyung Park wrote: > Hi Yangtao, > > I remember hearing that f2fs can perform relatively poorly under io_uring, > nice find. > > I suggest rewriting the commit message though. From the looks of it, it > might suggest that FMODE_BUF_RASYNC is a magic flag that automatically > improves performance that can be enabled willy nilly. > > How about something like: > > f2fs uses generic_file_buffered_read(), which supports buffered async > reads since commit 1a0a7853b901 ("mm: support async buffered reads in > generic_file_buffered_read()"). Thanks Juhyung, Applied with a minor motification based on yours. :) > > Match other file-systems and enable it. The read performance has been > greatly improved under io_uring: > > 167M/s -> 234M/s, Increase ratio by 40% > > Test w/: > ./fio --name=onessd --filename=/data/test/local/io_uring_test > --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 > --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 > --ioengine=io_uring --registerfiles --fixedbufs > --gtod_reduce=1 --group_reporting --sqthread_poll=1 > > On Wed, May 31, 2023 at 10:01 PM Yangtao Li via Linux-f2fs-devel > <linux-f2fs-devel@lists.sourceforge.net> wrote: > > > > After enabling this feature, the read performance has been greatly > > improved: > > > > 167M/s -> 234M/s, Increase ratio by 40% > > > > Test w/: > > ./fio --name=onessd --filename=/data/test/local/io_uring_test > > --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 > > --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 > > --ioengine=io_uring --registerfiles --fixedbufs > > --gtod_reduce=1 --group_reporting --sqthread_poll=1 > > > > Signed-off-by: Lu Hongfei <luhongfei@vivo.com> > > Signed-off-by: Yangtao Li <frank.li@vivo.com> > > --- > > fs/f2fs/file.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > > index 015ed274dc31..23c68ee946e5 100644 > > --- a/fs/f2fs/file.c > > +++ b/fs/f2fs/file.c > > @@ -546,7 +546,7 @@ static int f2fs_file_open(struct inode *inode, struct file *filp) > > if (err) > > return err; > > > > - filp->f_mode |= FMODE_NOWAIT; > > + filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC; > > > > return dquot_file_open(inode, filp); > > } > > -- > > 2.39.0 > > > > > > > > _______________________________________________ > > Linux-f2fs-devel mailing list > > Linux-f2fs-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
On 2023/6/6 3:48, Jaegeuk Kim wrote: > On 05/31, Juhyung Park wrote: >> Hi Yangtao, >> >> I remember hearing that f2fs can perform relatively poorly under io_uring, >> nice find. >> >> I suggest rewriting the commit message though. From the looks of it, it >> might suggest that FMODE_BUF_RASYNC is a magic flag that automatically >> improves performance that can be enabled willy nilly. >> >> How about something like: >> >> f2fs uses generic_file_buffered_read(), which supports buffered async >> reads since commit 1a0a7853b901 ("mm: support async buffered reads in >> generic_file_buffered_read()"). > > Thanks Juhyung, > > Applied with a minor motification based on yours. :) The version in dev-test branch looks good to me. Reviewed-by: Chao Yu <chao@kernel.org> Thanks, > >> >> Match other file-systems and enable it. The read performance has been >> greatly improved under io_uring: >> >> 167M/s -> 234M/s, Increase ratio by 40% >> >> Test w/: >> ./fio --name=onessd --filename=/data/test/local/io_uring_test >> --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 >> --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 >> --ioengine=io_uring --registerfiles --fixedbufs >> --gtod_reduce=1 --group_reporting --sqthread_poll=1 >> >> On Wed, May 31, 2023 at 10:01 PM Yangtao Li via Linux-f2fs-devel >> <linux-f2fs-devel@lists.sourceforge.net> wrote: >>> >>> After enabling this feature, the read performance has been greatly >>> improved: >>> >>> 167M/s -> 234M/s, Increase ratio by 40% >>> >>> Test w/: >>> ./fio --name=onessd --filename=/data/test/local/io_uring_test >>> --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 >>> --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 >>> --ioengine=io_uring --registerfiles --fixedbufs >>> --gtod_reduce=1 --group_reporting --sqthread_poll=1 >>> >>> Signed-off-by: Lu Hongfei <luhongfei@vivo.com> >>> Signed-off-by: Yangtao Li <frank.li@vivo.com> >>> --- >>> fs/f2fs/file.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c >>> index 015ed274dc31..23c68ee946e5 100644 >>> --- a/fs/f2fs/file.c >>> +++ b/fs/f2fs/file.c >>> @@ -546,7 +546,7 @@ static int f2fs_file_open(struct inode *inode, struct file *filp) >>> if (err) >>> return err; >>> >>> - filp->f_mode |= FMODE_NOWAIT; >>> + filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC; >>> >>> return dquot_file_open(inode, filp); >>> } >>> -- >>> 2.39.0 >>> >>> >>> >>> _______________________________________________ >>> Linux-f2fs-devel mailing list >>> Linux-f2fs-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Hello: This patch was applied to jaegeuk/f2fs.git (dev) by Jaegeuk Kim <jaegeuk@kernel.org>: On Wed, 31 May 2023 20:59:18 +0800 you wrote: > After enabling this feature, the read performance has been greatly > improved: > > 167M/s -> 234M/s, Increase ratio by 40% > > Test w/: > ./fio --name=onessd --filename=/data/test/local/io_uring_test > --size=256M --rw=randread --bs=4k --direct=0 --overwrite=0 > --numjobs=1 --iodepth=1 --time_based=0 --runtime=10 > --ioengine=io_uring --registerfiles --fixedbufs > --gtod_reduce=1 --group_reporting --sqthread_poll=1 > > [...] Here is the summary with links: - [f2fs-dev] f2fs: flag as supporting buffered async reads https://git.kernel.org/jaegeuk/f2fs/c/fdb43e12e0c1 You are awesome, thank you!
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 015ed274dc31..23c68ee946e5 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -546,7 +546,7 @@ static int f2fs_file_open(struct inode *inode, struct file *filp) if (err) return err; - filp->f_mode |= FMODE_NOWAIT; + filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC; return dquot_file_open(inode, filp); }