[roll] Roll fuchsia [kernel][vm] Continuous eviction support

Add support for a continuous eviction thread which runs at low scheduler
priority, and attempts to maintain a certain number of free pages in the
PMM node. The MemoryWatchdog enables eviction at eviction-eligible
memory pressure levels, causing the eviction thread to run at fixed
intervals of 10s (10s is chosen to match the page queue rotation
interval). When the memory pressure subsides and eviction is no longer
required, the MemoryWatchdog disables eviction, causing the eviction
thread to block indefinitely (until the next time eviction is required
again).

Continuous eviction is disabled by default, and can be enabled with the
kernel cmdline option `kernel.oom.evict-continuous=true`. The cadence at
which the eviction thread runs can be configured by the option
`kernel.page-scanner.eviction-interval-seconds` (set to 10 by default).

Note that this commit does not alter existing eviction behavior which is
one-shot, only occurring at memory pressure level transitions. It does
however change the thread asynchronous one-shot eviction is performed
from; previously it was the scanner thread, after this change it is the
new eviction thread. This is an implementation detail and does not
really have an observable user effect.

Test: kernel-unittests

Original-Bug: 72412
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/521886
Original-Revision: ce28e2441fe0a7cf681ee6abee5a6ee5b8de796a
GitOrigin-RevId: 9d820be7fc876fc890aa0f495688c2023962b547
Change-Id: I419c977c73efc63a15ad9d61b091e566904a1207
1 file changed
tree: 52f59ee6513dfc2936023b258ddececcc929f101
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.