Page MenuHomeFreeBSD

defer inactive processing
AbandonedPublic

Authored by kmacy on Jan 25 2015, 11:44 PM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 23 2024, 10:33 AM
Unknown Object (File)
Nov 13 2023, 1:19 PM
Unknown Object (File)
Nov 6 2023, 9:05 AM
Unknown Object (File)
Oct 25 2023, 8:53 AM
Unknown Object (File)
Oct 13 2023, 7:00 PM
Unknown Object (File)
Oct 12 2023, 9:00 AM
Unknown Object (File)
Aug 10 2023, 8:29 AM
Unknown Object (File)
Aug 10 2023, 7:53 AM
Subscribers

Details

Reviewers
alc
Summary

Don't immediately enqueue pages to inactive list, instead place on a list protected by the page lock then move pages to inactive when scanning

Test Plan

stress2, buildworld, netflix deployment

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

kmacy retitled this revision from to defer inactive processing.
kmacy updated this object.
kmacy edited the test plan for this revision. (Show Details)
kmacy added a reviewer: alc.

In general, I'd like to see a little stricter fixup. Either wakeup the pagedaemon once the global deferred count crosses a threshold, or directly call fixup in the enqueue.
Other than that, this looks good to me.

sys/vm/vm_page.c
2121–2122

Since there is no lock order issue here, I'd like to see either a "forced" option to _fixup() to really collect if we are falling behind our target in the pagedaemon, or a secondary threshold that forces the consolidation (regardless of lock contention).

sys/vm/vm_pageout.c
1358–1362

Read v_inactive_deferred_count instead of looking at "merged"?

mlaier's comments were addressed by my latest commit: 09fe122