On Fri, 2023-08-25 at 16:11 +0800, Shawn Lin wrote: > > Hi Sharp, > > On 2023/8/25 15:10, Sharp Xia (夏宇彬) wrote: > > On Thu, 2023-08-24 at 12:55 +0200, Ulf Hansson wrote: > >> > >> External email : Please do not click links or open attachments > until > >> you have verified the sender or the content. > >> On Fri, 18 Aug 2023 at 04:45, <Sharp.Xia@xxxxxxxxxxxx> wrote: > >>> > >>> From: Sharp Xia <Sharp.Xia@xxxxxxxxxxxx> > >>> > >>> MMC does not set readahead and uses the default > VM_READAHEAD_PAGES > >>> resulting in slower reading speed. > >>> Use the max_req_size reported by host driver to set the optimal > >>> I/O size to improve performance. > >> > >> This seems reasonable to me. However, it would be nice if you > could > >> share some performance numbers too - comparing before and after > >> $subject patch. > >> > >> Kind regards > >> Uffe > >> > >>> > >>> Signed-off-by: Sharp Xia <Sharp.Xia@xxxxxxxxxxxx> > >>> --- > >>> drivers/mmc/core/queue.c | 1 + > >>> 1 file changed, 1 insertion(+) > >>> > >>> diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c > >>> index b396e3900717..fc83c4917360 100644 > >>> --- a/drivers/mmc/core/queue.c > >>> +++ b/drivers/mmc/core/queue.c > >>> @@ -359,6 +359,7 @@ static void mmc_setup_queue(struct mmc_queue > >> *mq, struct mmc_card *card) > >>> blk_queue_bounce_limit(mq->queue, > BLK_BOUNCE_HIGH); > >>> blk_queue_max_hw_sectors(mq->queue, > >>> min(host->max_blk_count, host->max_req_size / > >> 512)); > >>> + blk_queue_io_opt(mq->queue, host->max_req_size); > >>> if (host->can_dma_map_merge) > >>> WARN(!blk_queue_can_use_dma_map_merging(mq- > >queue, > >>> mmc_dev( > hos > >> t)), > >>> -- > >>> 2.18.0 > >>> > > > > I test this patch on internal platform(kernel-5.15). > > I patched this one and the test shows me a stable 11% performance > drop. > > Before: > echo 3 > proc/sys/vm/drop_caches && dd if=/data/1GB.img of=/dev/null > > 2048000+0 records in > 2048000+0 records out > 1048576000 bytes (0.9 G) copied, 3.912249 s, 256 M/s > > After: > echo 3 > proc/sys/vm/drop_caches && dd if=/data/1GB.img of=/dev/null > 2048000+0 records in > 2048000+0 records out > 1048576000 bytes (0.9 G) copied, 4.436271 s, 225 M/s > > > > > Before: > > console:/ # echo 3 > /proc/sys/vm/drop_caches > > console:/ # dd if=/mnt/media_rw/8031-130D/super.img of=/dev/null > > 4485393+1 records in > > 4485393+1 records out > > 2296521564 bytes (2.1 G) copied, 37.124446 s, 59 M/s > > console:/ # cat /sys/block/mmcblk0/queue/read_ahead_kb > > 128 > > > > After: > > console:/ # echo 3 > /proc/sys/vm/drop_caches > > console:/ # dd if=/mnt/media_rw/8031-130D/super.img of=/dev/null > > 4485393+1 records in > > 4485393+1 records out > > 2296521564 bytes (2.1 G) copied, 28.956049 s, 76 M/s > > console:/ # cat /sys/block/mmcblk0/queue/read_ahead_kb > > 1024 > > Hi Shawn, What is your readahead value before and after applying this patch?