It gets rolled up to the global when deferred requeueing is performed. A dedicated read routine makes sure to return a value only off by a certain amount.
This soothes a global serialisation point for all 0<->1 hold count transitions.
Differential D23235
vfs: distribute freevnodes counter per-cpu mjg on Jan 17 2020, 3:00 PM. Authored by Tags None Referenced Files
Subscribers
Details
It gets rolled up to the global when deferred requeueing is performed. A dedicated read routine makes sure to return a value only off by a certain amount. This soothes a global serialisation point for all 0<->1 hold count transitions. In my tests with kern.maxvnodes=5000 vnode reclamation stats were almost identical. On a bigger scale workload this gives the following after almost 9h: vfs.numvnodes: 5209396 vfs.freevnodes: 4790184 vfs.recycles: 93 vfs.recycles_free: 1019102 vfs.alloc_sleeps: 0 vfs.freevnode_fetches: 1800 that is, the per-cpu walk was almost never done despite reclamations being present
Diff Detail
Event Timeline
|