In message: [linux-yocto][v5.15/standard/base][PATCH] squashfs: provide backing_dev_info in order to disable read-ahead on 08/12/2022 He Zhe wrote:
> From: Zheng Liang <zhenglia...@huawei.com> > > commit 9eec1d897139e5de287af5d559a02b811b844d82 upstream. > > Commit c1f6925e1091 ("mm: put readahead pages in cache earlier") causes > the read performance of squashfs to deteriorate.Through testing, we find > that the performance will be back by closing the readahead of squashfs. > > So we want to learn the way of ubifs, provides backing_dev_info and > disable read-ahead > > We tested the following data by fio. > squashfs image blocksize=128K > test command: > > fio --name basic --bs=? --filename="/mnt/test_file" --rw=? --iodepth=1 > --ioengine=psync --runtime=200 --time_based > > turn on squashfs readahead in 5.10 kernel > bs(k) read/randread MB/s > 4 randread 271 > 128 randread 231 > 1024 randread 246 > 4 read 310 > 128 read 245 > 1024 read 247 > > turn off squashfs readahead in 5.10 kernel > bs(k) read/randread MB/s > 4 randread 293 > 128 randread 330 > 1024 randread 363 > 4 read 338 > 128 read 360 > 1024 read 365 > > turn on squashfs readahead and revert the > commit c1f6925e1091("mm: put readahead > pages in cache earlier") in 5.10 kernel > bs(k) read/randread MB/s > 4 randread 289 > 128 randread 306 > 1024 randread 335 > 4 read 337 > 128 read 336 > 1024 read 338 > > Link: > https://lkml.kernel.org/r/20211116113141.1391026-1-zhenglia...@huawei.com > Signed-off-by: Zheng Liang <zhenglia...@huawei.com> > Reviewed-by: Phillip Lougher <phil...@squashfs.org.uk> > Cc: Zhang Yi <yi.zh...@huawei.com> > Cc: Hou Tao <hout...@huawei.com> > Cc: Miao Xie <miao...@huawei.com> > Signed-off-by: Andrew Morton <a...@linux-foundation.org> > Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> > > This patch can fix a severe disk read degradation on squashfs, which is > observed > in our customer's environment. merged. Bruce > > Signed-off-by: He Zhe <zhe...@windriver.com> > --- > fs/squashfs/super.c | 33 +++++++++++++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > > diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c > index 60d6951915f4..4e5d3ec0a521 100644 > --- a/fs/squashfs/super.c > +++ b/fs/squashfs/super.c > @@ -28,6 +28,7 @@ > #include <linux/module.h> > #include <linux/magic.h> > #include <linux/xattr.h> > +#include <linux/backing-dev.h> > > #include "squashfs_fs.h" > #include "squashfs_fs_sb.h" > @@ -111,6 +112,24 @@ static const struct squashfs_decompressor > *supported_squashfs_filesystem( > return decompressor; > } > > +static int squashfs_bdi_init(struct super_block *sb) > +{ > + int err; > + unsigned int major = MAJOR(sb->s_dev); > + unsigned int minor = MINOR(sb->s_dev); > + > + bdi_put(sb->s_bdi); > + sb->s_bdi = &noop_backing_dev_info; > + > + err = super_setup_bdi_name(sb, "squashfs_%u_%u", major, minor); > + if (err) > + return err; > + > + sb->s_bdi->ra_pages = 0; > + sb->s_bdi->io_pages = 0; > + > + return 0; > +} > > static int squashfs_fill_super(struct super_block *sb, struct fs_context *fc) > { > @@ -126,6 +145,20 @@ static int squashfs_fill_super(struct super_block *sb, > struct fs_context *fc) > > TRACE("Entered squashfs_fill_superblock\n"); > > + /* > + * squashfs provides 'backing_dev_info' in order to disable read-ahead. > For > + * squashfs, I/O is not deferred, it is done immediately in readpage, > + * which means the user would always have to wait their own I/O. So the > effect > + * of readahead is very weak for squashfs. squashfs_bdi_init will set > + * sb->s_bdi->ra_pages and sb->s_bdi->io_pages to 0 and close readahead > for > + * squashfs. > + */ > + err = squashfs_bdi_init(sb); > + if (err) { > + errorf(fc, "squashfs init bdi failed"); > + return err; > + } > + > sb->s_fs_info = kzalloc(sizeof(*msblk), GFP_KERNEL); > if (sb->s_fs_info == NULL) { > ERROR("Failed to allocate squashfs_sb_info\n"); > -- > 2.17.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#12016): https://lists.yoctoproject.org/g/linux-yocto/message/12016 Mute This Topic: https://lists.yoctoproject.org/mt/95533649/21656 Group Owner: linux-yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-