Thread (4 messages) 4 messages, 3 authors, 2023-07-07

Re: [PATCHv3] md/raid1: Avoid lock contention from wake_up()

From: Song Liu <song@kernel.org>
Date: 2023-07-07 09:12:04

On Thu, Jul 6, 2023 at 2:29 PM Jinpu Wang [off-list ref] wrote:
On Thu, Jul 6, 2023 at 8:14 AM Yu Kuai [off-list ref] wrote:
quoted
在 2023/07/05 19:32, Jack Wang 写道:
quoted
wake_up is called unconditionally in a few paths such as make_request(),
which cause lock contention under high concurrency workload like below
     raid1_end_write_request
      wake_up
       __wake_up_common_lock
        spin_lock_irqsave

Improve performance by only call wake_up() if waitqueue is not empty
LGTM

Reviewed-by: Yu Kuai <redacted>
Kuai,
Thank you very much for the review and suggestions!
quoted
quoted
Fio test script:

[global]
name=random reads and writes
ioengine=libaio
direct=1
readwrite=randrw
rwmixread=70
iodepth=64
buffered=0
filename=/dev/md0
size=1G
runtime=30
time_based
randrepeat=0
norandommap
refill_buffers
ramp_time=10
bs=4k
numjobs=400
group_reporting=1
[job1]

Test result with 2 ramdisk in raid1 on a Intel Broadwell 56 cores server.

      Before this patch       With this patch
      READ    BW=4621MB/s     BW=7337MB/s
      WRITE   BW=1980MB/s     BW=3144MB/s

The patch is inspired by Yu Kuai's change for raid10:
https://lore.kernel.org/r/20230621105728.1268542-1-yukuai1@huaweicloud.com (local)

Cc: Yu Kuai <redacted>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
Applied to md-next. Thanks!

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