This may or may not be an issue on Illumos. VFS_ROOT in the following code 
snippet in FreeBSD's lookup calls zfs_root:
https://github.com/freebsd/freebsd/blob/master/sys/kern/vfs_lookup.c#L970

Every call appears to serialize on getting a reference to the root vnode.

To exercise this issue in isolation I forked will-it-scale and added a test for 
this case as fstatat3.
https://github.com/mattmacy/will-it-scale

You can see flame graphs of UNHALTED_CORE_CYCLES for buildkernel, buildworld, 
and fstatat3
https://github.com/mattmacy/profiling/tree/master/2018.04.30

It seems like the easiest way to test this on Illumos is to build the will it 
scale benchmarks and run `fstatat3_processes -t <ncpu> -s <nsamples>`

If this isn't an issue FreeBSD could just keep persistent references to the 
root vnode from a lookup table and just free them after a quiescent period 
following an unmount.

Thanks.

-M
------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/discussions/Tf956cf09d0620bd5-M68a516e8db0b00c74117d392
Delivery options: https://openzfs.topicbox.com/groups

Reply via email to