Re: [PATCH v10 0/1] bio: limit bio max size

From: Changheun Lee
Date: Fri May 14 2021 - 02:51:11 EST


> FYI, I still think this whole limit is a bad idea, and instead we
> need to fix the algorithms to not waste time iterating over the bios
> again and again in non-optimal ways. I still haven't seen an answer
> if your original latency problems are reproducable with the iomap
> direct I/O implementation, and we've also not even started the work on
> making some of the common iterators less stupid.

Sorry. I missed your request.
Actually iomap direct I/O implementaion in f2fs, or do_direct_IO() is not
easy to me. So I tested it on ext4 environment. iomap is applied in ext4
already. As a result, same performance degradation is reproduced.

I tested 512MB file read with direct I/O. and chunk size is 64MB.
- on SCSI disk, with no limit of bio max size(4GB) : avg. 630 MB/s
- on SCSI disk, with limit bio max size to 1MB : avg. 645 MB/s
- on ramdisk, with no limit of bio max size(4GB) : avg. 2749 MB/s
- on ramdisk, with limit bio max size to 1MB : avg. 3068 MB/s

I set ramdisk environment as below.
- dd if=/dev/zero of=/mnt/ramdisk.img bs=$((1024*1024)) count=1024
- mkfs.ext4 /mnt/ramdisk.img
- mkdir /mnt/ext4ramdisk
- mount -o loop /mnt/ramdisk.img /mnt/ext4ramdisk

With low performance disk, bio submit delay caused by large bio size is
not big protion. So it can't be feel easily. But it will be shown in high
performance disk.

Limit bio size is not affact to stacked driver. it's for physical disk
driver. As your advise, algorithm fixing to remove waste time is needed for
each module. I agree with you. But I think it might be good submitting bio
when bio size is over than disk transfer size logically too.

Thanks,
Changheun Lee.