52 lines
1.8 KiB
Plaintext
52 lines
1.8 KiB
Plaintext
# Copyright (c) 2020 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Demand paging sample eviction algorithms
|
|
|
|
choice EVICTION_CHOICE
|
|
prompt "Page frame eviction algorithms"
|
|
default EVICTION_LRU if ARM64
|
|
default EVICTION_NRU
|
|
depends on DEMAND_PAGING
|
|
|
|
config EVICTION_CUSTOM
|
|
bool "Custom eviction algorithm"
|
|
help
|
|
This option is chosen when the eviction algorithm will be implemented
|
|
by the application, instead of using one included in Zephyr.
|
|
|
|
config EVICTION_NRU
|
|
bool "Not Recently Used (NRU) page eviction algorithm"
|
|
help
|
|
This implements a Not Recently Used page eviction algorithm.
|
|
A periodic timer will clear the accessed state of all virtual pages.
|
|
When a page frame needs to be evicted, the algorithm will prefer to
|
|
evict page frames using an ascending order of priority:
|
|
|
|
- recently accessed, dirty
|
|
- recently accessed, clean
|
|
- not recently accessed, dirty
|
|
- not recently accessed, clean
|
|
|
|
config EVICTION_LRU
|
|
bool "Least Recently Used (LRU) page eviction algorithm"
|
|
help
|
|
This implements a Least Recently Used page eviction algorithm.
|
|
Usage is tracked based on MMU protection making pages unaccessible
|
|
and causing a fault when actually used, using such event to reorder
|
|
the page eviction queue. This is more efficient than the NRU
|
|
algorithm: all operations are O(1), the accessed flag is cleared on
|
|
one page at a time and only when there is a page eviction request.
|
|
|
|
endchoice
|
|
|
|
if EVICTION_NRU
|
|
config EVICTION_NRU_PERIOD
|
|
int "Recently accessed period, in milliseconds"
|
|
default 100
|
|
help
|
|
A periodic timer will fire that clears the accessed state of all virtual
|
|
pages that are capable of being paged out. At eviction time, if a page
|
|
still has the accessed property, it will be considered as recently used.
|
|
endif # EVICTION_NRU
|