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) |