RE: [Non-DoD Source] [PATCH v3 15/15] md/raid5: Increase restriction on max segments per request

From: Finlayson, James M CIV (USA)
Date: Thu Jun 16 2022 - 17:33:39 EST


Innocent question from position of ignorance....I see these last 15 check-ins all as performance improvements. I tend to push hard on mdraid performance, but have RAID6 needs....are these some optimizations available for RAID6 and are they in process or did I just ask a silly question?

Regards,
Jim Finlayson
US Department of Defense

-----Original Message-----
From: Logan Gunthorpe <logang@xxxxxxxxxxxx>
Sent: Thursday, June 16, 2022 3:20 PM
To: linux-kernel@xxxxxxxxxxxxxxx; linux-raid@xxxxxxxxxxxxxxx; Song Liu <song@xxxxxxxxxx>
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>; Guoqing Jiang <guoqing.jiang@xxxxxxxxx>; Stephen Bates <sbates@xxxxxxxxxxxx>; Martin Oliveira <Martin.Oliveira@xxxxxxxxxxxxx>; David Sloan <David.Sloan@xxxxxxxxxxxxx>; Logan Gunthorpe <logang@xxxxxxxxxxxx>
Subject: [Non-DoD Source] [PATCH v3 15/15] md/raid5: Increase restriction on max segments per request

The block layer defaults the maximum segments to 128, which means requests tend to get split around the 512KB depending on how many pages can be merged. There's no such restriction in the raid5 code so increase the limit to USHRT_MAX so that larger requests can be sent as one.

Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
---
drivers/md/raid5.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index e48c16bfe657..5723a497108a 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -8005,6 +8005,9 @@ static int raid5_run(struct mddev *mddev)
*/
blk_queue_max_hw_sectors(mddev->queue,
RAID5_MAX_REQ_STRIPES << RAID5_STRIPE_SHIFT(conf));
+
+ /* No restrictions on the number of segments in the request */
+ blk_queue_max_segments(mddev->queue, USHRT_MAX);
}

if (log_init(conf, journal_dev, raid5_has_ppl(conf)))
--
2.30.2