# 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