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.