Message ID | 20170510234816.3373-1-jaegeuk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Jaegeuk, On 2017/5/11 7:48, Jaegeuk Kim wrote: > This patch avoids to use f2fs_submit_merged_bio for read, which was the only > read case. This makes f2fs losing the chance to merge multiple pages into one bio during reading continuous physical blocks, it may cause potential performance regression, how about using a local bio in ra_meta_pages to cache more pages? Thanks, > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> > --- > fs/f2fs/checkpoint.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c > index ea9c317b5916..8d92f8249000 100644 > --- a/fs/f2fs/checkpoint.c > +++ b/fs/f2fs/checkpoint.c > @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, > } > > fio.page = page; > - fio.old_blkaddr = fio.new_blkaddr; > - f2fs_submit_page_mbio(&fio); > + f2fs_submit_page_bio(&fio); > f2fs_put_page(page, 0); > } > out: > - f2fs_submit_merged_bio(sbi, META, READ); > blk_finish_plug(&plug); > return blkno - start; > } >
On 2017/5/11 9:24, Chao Yu wrote: > Hi Jaegeuk, > > On 2017/5/11 7:48, Jaegeuk Kim wrote: >> This patch avoids to use f2fs_submit_merged_bio for read, which was the only >> read case. > > This makes f2fs losing the chance to merge multiple pages into one bio during > reading continuous physical blocks, it may cause potential performance > regression, how about using a local bio in ra_meta_pages to cache more pages? BTW, need to remove sbi->read_io as well? Thanks, > > Thanks, > >> >> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> >> --- >> fs/f2fs/checkpoint.c | 4 +--- >> 1 file changed, 1 insertion(+), 3 deletions(-) >> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >> index ea9c317b5916..8d92f8249000 100644 >> --- a/fs/f2fs/checkpoint.c >> +++ b/fs/f2fs/checkpoint.c >> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, >> } >> >> fio.page = page; >> - fio.old_blkaddr = fio.new_blkaddr; >> - f2fs_submit_page_mbio(&fio); >> + f2fs_submit_page_bio(&fio); >> f2fs_put_page(page, 0); >> } >> out: >> - f2fs_submit_merged_bio(sbi, META, READ); >> blk_finish_plug(&plug); >> return blkno - start; >> } >> > > > . >
On 05/11, Chao Yu wrote: > Hi Jaegeuk, > > On 2017/5/11 7:48, Jaegeuk Kim wrote: > > This patch avoids to use f2fs_submit_merged_bio for read, which was the only > > read case. > > This makes f2fs losing the chance to merge multiple pages into one bio during > reading continuous physical blocks, it may cause potential performance > regression, how about using a local bio in ra_meta_pages to cache more pages? This is a readahead flow, which is asynchronous and not a performance critical flow. And, I expect blk_plug is still able to merge them. We're using this in readahead of node blocks as well. Thanks, > > Thanks, > > > > > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> > > --- > > fs/f2fs/checkpoint.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c > > index ea9c317b5916..8d92f8249000 100644 > > --- a/fs/f2fs/checkpoint.c > > +++ b/fs/f2fs/checkpoint.c > > @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, > > } > > > > fio.page = page; > > - fio.old_blkaddr = fio.new_blkaddr; > > - f2fs_submit_page_mbio(&fio); > > + f2fs_submit_page_bio(&fio); > > f2fs_put_page(page, 0); > > } > > out: > > - f2fs_submit_merged_bio(sbi, META, READ); > > blk_finish_plug(&plug); > > return blkno - start; > > } > >
On 05/11, Chao Yu wrote: > On 2017/5/11 9:24, Chao Yu wrote: > > Hi Jaegeuk, > > > > On 2017/5/11 7:48, Jaegeuk Kim wrote: > >> This patch avoids to use f2fs_submit_merged_bio for read, which was the only > >> read case. > > > > This makes f2fs losing the chance to merge multiple pages into one bio during > > reading continuous physical blocks, it may cause potential performance > > regression, how about using a local bio in ra_meta_pages to cache more pages? > > BTW, need to remove sbi->read_io as well? Yup. > > Thanks, > > > > > Thanks, > > > >> > >> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> > >> --- > >> fs/f2fs/checkpoint.c | 4 +--- > >> 1 file changed, 1 insertion(+), 3 deletions(-) > >> > >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c > >> index ea9c317b5916..8d92f8249000 100644 > >> --- a/fs/f2fs/checkpoint.c > >> +++ b/fs/f2fs/checkpoint.c > >> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, > >> } > >> > >> fio.page = page; > >> - fio.old_blkaddr = fio.new_blkaddr; > >> - f2fs_submit_page_mbio(&fio); > >> + f2fs_submit_page_bio(&fio); > >> f2fs_put_page(page, 0); > >> } > >> out: > >> - f2fs_submit_merged_bio(sbi, META, READ); > >> blk_finish_plug(&plug); > >> return blkno - start; > >> } > >> > > > > > > . > >
On 2017/5/11 10:41, Jaegeuk Kim wrote: > On 05/11, Chao Yu wrote: >> Hi Jaegeuk, >> >> On 2017/5/11 7:48, Jaegeuk Kim wrote: >>> This patch avoids to use f2fs_submit_merged_bio for read, which was the only >>> read case. >> >> This makes f2fs losing the chance to merge multiple pages into one bio during >> reading continuous physical blocks, it may cause potential performance >> regression, how about using a local bio in ra_meta_pages to cache more pages? > > This is a readahead flow, which is asynchronous and not a performance critical > flow. And, I expect blk_plug is still able to merge them. We're using this in > readahead of node blocks as well. Confirmed, block plug can do the merge. :) Thanks, > > Thanks, > >> >> Thanks, >> >>> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> >>> --- >>> fs/f2fs/checkpoint.c | 4 +--- >>> 1 file changed, 1 insertion(+), 3 deletions(-) >>> >>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >>> index ea9c317b5916..8d92f8249000 100644 >>> --- a/fs/f2fs/checkpoint.c >>> +++ b/fs/f2fs/checkpoint.c >>> @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, >>> } >>> >>> fio.page = page; >>> - fio.old_blkaddr = fio.new_blkaddr; >>> - f2fs_submit_page_mbio(&fio); >>> + f2fs_submit_page_bio(&fio); >>> f2fs_put_page(page, 0); >>> } >>> out: >>> - f2fs_submit_merged_bio(sbi, META, READ); >>> blk_finish_plug(&plug); >>> return blkno - start; >>> } >>> > > . >
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index ea9c317b5916..8d92f8249000 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c @@ -207,12 +207,10 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, } fio.page = page; - fio.old_blkaddr = fio.new_blkaddr; - f2fs_submit_page_mbio(&fio); + f2fs_submit_page_bio(&fio); f2fs_put_page(page, 0); } out: - f2fs_submit_merged_bio(sbi, META, READ); blk_finish_plug(&plug); return blkno - start; }
This patch avoids to use f2fs_submit_merged_bio for read, which was the only read case. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- fs/f2fs/checkpoint.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)