Skip to content

Remove reader optimistic spinning

Shaoying Xu stable 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest7 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7locking/rwsem: Better collate rwsem_read_trylock()kernel/locking/rwsem.c+8 -70 replies
2/7locking/rwsem: Introduce rwsem_write_trylock()kernel/locking/rwsem.c+16 -220 replies
3/7locking/rwsem: Fold __down_{read,write}*()kernel/locking/rwsem.c+23 -220 replies
4/7locking/rwsem: Pass the current atomic count to rwsem_down_read_slowpath()kernel/locking/rwsem.c+10 -80 replies
5/7locking/rwsem: Prevent potential lock starvationkernel/locking/rwsem.c+13 -20 replies
6/7locking/rwsem: Enable reader optimistic lock stealingkernel/locking/lock_events_list.h kernel/locking/rwsem.c+29 -00 replies
7/7locking/rwsem: Remove reader optimistic spinningkernel/locking/lock_events_list.h kernel/locking/rwsem.c+49 -2400 replies

Reviews trailers per patch

4 of 7 patches have a Reviewed-by or Acked-by.

PatchDavidlohr Bueso
1/7
2/7
3/7
4/7R-b
5/7R-b
6/7R-b
7/7R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH stable 5.10 0/7] Remove reader optimistic spinning

This patch series is to remove reader optimistic spinning in kernel 5.10 to improve the MongoDB performance. Performance measurements (10 times running average of overall throughput ops/sec) are using MongoDB 5.0.11 and YCSB [1] microbenchmark with workloadA [2] on AWS EC2 m5.4xlarge/m6g.4xlarge (16-vCPU 64GiB-memory) instances with a 512GB EBS IO1 drive disk with 5000 IOPS and separating MongoDB and YCSB load generator on 2 instances and setting recordcount=25000000 and operationcount=10000000 to see the impacts of these changes:

Before - v5.10.165 kernel in OS Amazon Linux 2
After - v5.10.165 kernel with reader spinning disabled in OS Amazon Linux 2

  | Arch    | Instance Type | Before  | After   |
  |---------+---------------+---------+---------|
  | x86_64  | m5.4xlarge    | 37365.4 | 42373.9 |
  |---------+---------------+---------+---------|
  | aarch64 | m6g.4xlarge   | 33823.1 | 43113.7 |
  |---------+---------------+---------+---------|

It can be seen that the MongoDB throughput can be improved around 13% in x86_64 and 27% in aarch64 after disabling reader optimistic spinning and these patches can be applied to 5.10 with no conflict so we wonder if it's possible to backport them to stable 5.10?

[1] https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
[2] https://github.com/brianfrankcooper/YCSB/blob/master/workloads/workloada

Thanks,
Shaoying

Peter Zijlstra (3):
locking/rwsem: Better collate rwsem_read_trylock() locking/rwsem: Introduce rwsem_write_trylock() locking/rwsem: Fold __down_{read,write}*()

Waiman Long (4):
locking/rwsem: Pass the current atomic count to
rwsem_down_read_slowpath()
locking/rwsem: Prevent potential lock starvation locking/rwsem: Enable reader optimistic lock stealing locking/rwsem: Remove reader optimistic spinning

 kernel/locking/lock_events_list.h |   6 +-
 kernel/locking/rwsem.c            | 359 +++++++++---------------------
 2 files changed, 106 insertions(+), 259 deletions(-)
Signature · 1 line
2.38.1