Page MenuHomeFreeBSD

Launder VPO_NOSYNC pages upon vnode deactivation.
ClosedPublic

Authored by markj on Nov 25 2016, 9:01 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Apr 20, 2:34 PM
Unknown Object (File)
Sat, Apr 20, 2:04 PM
Unknown Object (File)
Tue, Apr 2, 10:56 PM
Unknown Object (File)
Jan 9 2024, 3:03 PM
Unknown Object (File)
Dec 27 2023, 7:43 PM
Unknown Object (File)
Dec 27 2023, 7:35 PM
Unknown Object (File)
Dec 22 2023, 9:46 PM
Unknown Object (File)
Dec 21 2023, 2:12 AM
Subscribers
None

Details

Summary

As of r234483, vnode deactivation causes only non-VPO_NOSYNC pages to be
laundered. This behaviour has two problems:

  1. Dirty VPO_NOSYNC pages must be laundered before the vnode can be reclaimed, and this work may be unfairly deferred to the vnlru process or another application when the system is under vnode pressure.
  2. Deactivation of a vnode with MAP_NOSYNC mappings requires a scan of the corresponding VM object's memq for non-VPO_NOSYNC dirty pages; if the laundry thread needs to launder pages from an unreferenced vnode, it will reactivate and deactivate the vnode with each laundering, resulting in a potentially large number of expensive scans.

Therefore, ensure that all dirty pages are laundered upon deactivation,
i.e., when all maps of the vnode are removed and all references are
released.

Diff Detail

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

Event Timeline

markj retitled this revision from to Launder VPO_NOSYNC pages upon vnode deactivation..
markj edited the test plan for this revision. (Show Details)
markj updated this object.
kib edited edge metadata.
This revision is now accepted and ready to land.Nov 25 2016, 9:23 PM
alc edited edge metadata.
This revision was automatically updated to reflect the committed changes.