Thread (28 messages) 28 messages, 9 authors, 2022-03-30

Re: [PATCH] block: check more requests for multiple_queues in blk_attempt_plug_merge

From: Song Liu <song@kernel.org>
Date: 2022-03-10 07:24:16
Also in: linux-block, stable

On Wed, Mar 9, 2022 at 10:48 PM Christoph Hellwig [off-list ref] wrote:
On Tue, Mar 08, 2022 at 10:42:09PM -0800, Song Liu wrote:
quoted
RAID arrays check/repair operations benefit a lot from merging requests.
If we only check the previous entry for merge attempt, many merge will be
missed. As a result, significant regression is observed for RAID check
and repair.

Fix this by checking more than just the previous entry when
plug->multiple_queues == true.
But this also means really significant CPU overhead for all other
workloads.
Would the following check help with these workloads?

 if (!plug->multiple_queues)
              break;
quoted
This improves the check/repair speed of a 20-HDD raid6 from 19 MB/s to
103 MB/s.
What driver uses multiple queues for HDDs?

Can you explain the workload submitted by a md a bit better?  I wonder
if we can easily do the right thing straight in the md driver.
It is the md sync_thread doing check and repair. Basically, the md
thread reads all
the disks and computes parity from data.

Maybe we should add a new flag to struct blk_plug for this special case?

Song
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help