```
commit 4988ddd9f529239ebb510ca8c5d05654f1ef9553
Author: Mateusz Guzik <mjg@FreeBSD.org>
Date: Tue Mar 7 20:56:54 2023 +0000
vm: read-locked fault handling for backing objects
This is almost the simplest patch which manages to avoid write locking
for backing objects, as a result mostly fixing vm object contention
problems.
What is not fixed:
1. cacheline ping pong due to read-locks
2. cacheline ping pong due to pip
3. cacheling ping pong due to object busying
4. write locking on first object
On top of it the use VM_OBJECT_UNLOCK instead of explicitly tracking the
state is slower multithreaded that it needs to be, done for simplicity
for the time being.
Sample lock profiling results doing -j 104 buildkernel on tmpfs:
before:
71446200 (rw:vmobject)
14689706 (sx:vm map (user))
4166251 (rw:pmap pv list)
2799924 (spin mutex:turnstile chain)
after:
19940411 (rw:vmobject)
8166012 (rw:pmap pv list)
6017608 (sx:vm map (user))
1151416 (sleep mutex:pipe mutex)
Reviewed by:
Differential Revision: https://reviews.freebsd.org/D38964
commit 388c60608388bbe484322fbd01f03551602f0db5
Author: Mateusz Guzik <mjg@FreeBSD.org>
Date: Tue Mar 7 20:47:44 2023 +0000
vm: add VM_OBJECT_UNLOCK
Reviewed by:
Differential Revision: https://reviews.freebsd.org/D38964
commit be2b02c0b73e1e46e0148ec0f825e902b62d3630
Author: Mateusz Guzik <mjg@FreeBSD.org>
Date: Sun Aug 7 13:05:47 2022 +0000
vm: move up object lock asserts in fault functions
No functional changes.
Reviewed by:
Differential Revision: https://reviews.freebsd.org/D38964
```
Replacement for D36038.