Page MenuHomeFreeBSD

Start implementing queue state updates using fcmpset loops. [4/5]
ClosedPublic

Authored by markj on Dec 12 2019, 12:52 AM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 28 2023, 9:27 PM
Unknown Object (File)
Dec 28 2023, 3:05 PM
Unknown Object (File)
Dec 20 2023, 2:53 AM
Unknown Object (File)
Dec 12 2023, 5:53 PM
Unknown Object (File)
Dec 1 2023, 10:56 PM
Unknown Object (File)
Nov 29 2023, 3:15 PM
Unknown Object (File)
Nov 8 2023, 8:35 PM
Unknown Object (File)
Oct 31 2023, 8:28 AM
Subscribers
None

Details

Reviewers
alc
kib
jeff
Summary

Convert the inactive queue scan. Recall that the inactive queue scan,
unlike active and laundry queue scans, speculatively dequeues pages
before examining them.

As in the active queue scan, update act_count and potentially activate
or requeue the page if references were discovered.

Also modify vm_pageout_reinsert_inactive(), which requeues pages that
were found to be busy. Simplify it so that it is not reimplementing
portions of vm_pqbatch_process_page(). In particular, if PGA_REQUEUE or
PGA_REQUEUE_HEAD is set, let that be handled during batch processing or
by the page daemon during a subsequent scan.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 28260
Build 26378: arc lint + arc unit

Event Timeline

This is nearly identical to the code in launder. Can we combine them with a return code that indicates what label/loop/etc. condition to follow?

In D22773#499689, @jeff wrote:

This is nearly identical to the code in launder. Can we combine them with a return code that indicates what label/loop/etc. condition to follow?

They diverge further in subsequent patches, but I will see if I can combine them cleanly.

Rename the next_page target to skip_page, and unbusy the page at the end
of the loop instead of having lots of inline calls to vm_page_xunbusy().

This revision is now accepted and ready to land.Dec 20 2019, 11:06 PM