Page MenuHomeFreeBSD

6/7 vfs: rework vnode list management
ClosedPublic

Authored by mjg on Jan 1 2020, 10:58 PM.
Tags
None
Referenced Files
F132344971: D22997.id66449.diff
Thu, Oct 16, 2:30 AM
F132344966: D22997.id66627.diff
Thu, Oct 16, 2:30 AM
F132344965: D22997.id66669.diff
Thu, Oct 16, 2:30 AM
F132297291: D22997.diff
Wed, Oct 15, 3:41 PM
F132285429: D22997.id66627.diff
Wed, Oct 15, 12:53 PM
Unknown Object (File)
Tue, Oct 14, 1:30 AM
Unknown Object (File)
Tue, Oct 7, 2:55 AM
Unknown Object (File)
Wed, Oct 1, 2:51 AM
Subscribers

Details

Summary

The current notion of an active vnode is eliminated.

Vnodes transition between 0<->1 hold counts all the time and the
associated traversal between different lists induces significant
scalability problems in certain workloads.

Introduce a global list containing all allocated vnodes. They get
unlinked only when UMA reclaims memory and are only requeued when
use hold count reaches 0.

Sample result from an incremental make -s -j 104 bzImage on tmpfs:
stock: 118.55s user 3649.73s system 7479% cpu 50.382 total
patched: 122.38s user 1780.45s system 6242% cpu 30.480 total

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

I see why my previous comments about list duplication were not totally germane because much of the duplicated code was removed by this diff.

mjg retitled this revision from 4/5 vfs: rework vnode list management to 6/7 vfs: rework vnode list management.Jan 5 2020, 4:07 AM
  • rebase
  • annotate freevnodes with __exclusive_cache_line
This revision is now accepted and ready to land.Jan 12 2020, 7:55 PM
This revision was automatically updated to reflect the committed changes.