diff options
author | Jack Wang <[email protected]> | 2023-07-05 13:32:27 +0200 |
---|---|---|
committer | Song Liu <[email protected]> | 2023-07-27 00:13:30 -0700 |
commit | 21bd9a68fef47c4f0e951be9a6fac9745cee1bab (patch) | |
tree | d69ed66090a034c81c0cd33713f1aa44f735db1d /lib/test_fortify/write_overflow-strncpy-src.c | |
parent | e24ed04389f9619e0aaef615a8948633c182a8b0 (diff) |
md/raid1: Avoid lock contention from wake_up()
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
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/[email protected]
Cc: Yu Kuai <[email protected]>
Signed-off-by: Jack Wang <[email protected]>
Reviewed-by: Yu Kuai <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Song Liu <[email protected]>
Diffstat (limited to 'lib/test_fortify/write_overflow-strncpy-src.c')
0 files changed, 0 insertions, 0 deletions