It causes signification contention under load. null_nodeget handles shared routines just fine by upgrading internally. This can be augmented to retry the call.
90 minutes of poudriere -j 104:
| before | after |
| 2166701312 (lockmgr:zfs) | 1342718342 (sx:proctree) |
| 1129032848 (sleep mutex:vm reserv domain) | 1096197132 (sleep mutex:vm reserv domain) |
| 1103242960 (sx:proctree) | 865508704 (rw:pmap pv list) |
| 811216368 (rw:pmap pv list) | 785291794 (rw:vm object) |
| 795941429 (rw:vm object) | 638809521 (sleep mutex:vm active pagequeue) |
| 655162024 (sleep mutex:vm active pagequeue) | 570326117 (sx:vm map (user)) |
| 633134542 (sx:vm map (user)) | 506366332 (sleep mutex:process lock) |
| 492951491 (sleep mutex:process lock) | 301431921 (sx:allproc) |
| 249325948 (spin mutex:sleepq chain) | 283324092 (lockmgr:zfs) |