freebsd-dev/sys/fs
Mateusz Guzik 2e310f6f72 pseudofs: hashed vncache
Vast majority of uses the cache are just checking if there is an entry
present on process exit (and evicting it if so). Both checking and
eviction process are very expensive and put the lock protecting it high
up on the profile during poudriere -j 104.

Convert the linked list into a hash. This allows to almost always avoid
taking the lock in the first place (and consequently almost removes it
from the profile). Note only one lock is preserved as a split did not
meaningfully impact contention.

Should the cache be used for something it will still run into contention
issues. The code needs a rewrite, but should someone want to tidy it up
further the following can be done:

1) per-chain locks (or at least an array)
2) hashing by something else than just pid

Sponsored by:	The FreeBSD Foundation
2019-10-22 22:52:53 +00:00
..
autofs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
cd9660 cd9660: Remove redundant brelse() after r294954 2019-09-06 08:07:36 +00:00
cuse Free all allocated unit IDs in cuse(3) after the client character 2019-06-25 11:46:01 +00:00
deadfs Switch to use shared vnode locks for text files during image activation. 2019-05-05 11:20:43 +00:00
devfs devfs: use MNTK_NOMSYNC 2019-10-13 15:41:47 +00:00
ext2fs ext2fs: Remove redundant brelse() after r294954 2019-09-06 08:07:12 +00:00
fdescfs Ensure that directory entry padding bytes are zeroed. 2018-11-23 22:24:59 +00:00
fifofs fcntl: fix overflow when setting F_READAHEAD 2019-06-20 23:07:20 +00:00
fuse Fix an off-by-one error from r351961 2019-09-16 16:41:01 +00:00
msdosfs Plug the rest of undef behavior places that were missed in r337456. 2019-10-11 18:37:02 +00:00
nfs Fix interface between nfsclient and vnode pager. 2019-10-22 16:17:38 +00:00
nfsclient Fix interface between nfsclient and vnode pager. 2019-10-22 16:17:38 +00:00
nfsserver Delete the unused "nd" argument for nfsrv_proxyds(). 2019-09-05 22:25:19 +00:00
nullfs nullfs: use MNTK_NOMSYNC 2019-10-13 15:42:04 +00:00
procfs Define macro VM_MAP_ENTRY_FOREACH for enumerating the entries in a vm_map. 2019-10-08 07:14:21 +00:00
pseudofs pseudofs: hashed vncache 2019-10-22 22:52:53 +00:00
smbfs (4/6) Protect page valid with the busy lock. 2019-10-15 03:45:41 +00:00
tmpfs (4/6) Protect page valid with the busy lock. 2019-10-15 03:45:41 +00:00
udf Rework v_object lifecycle for vnodes. 2019-08-29 07:50:25 +00:00
unionfs vfs: add VOP_NEED_INACTIVE 2019-08-28 20:34:24 +00:00