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 emptyLGTM 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