| # SPDX-License-Identifier: GPL-2.0-only |
| |
| menu "Data Access Monitoring" |
| |
| config DAMON |
| bool "DAMON: Data Access Monitoring Framework" |
| help |
| This builds a framework that allows kernel subsystems to monitor |
| access frequency of each memory region. The information can be useful |
| for performance-centric DRAM level memory management. |
| |
| See https://www.kernel.org/doc/html/latest/mm/damon/index.html for |
| more information. |
| |
| config DAMON_KUNIT_TEST |
| bool "Test for damon" if !KUNIT_ALL_TESTS |
| depends on DAMON && KUNIT=y |
| default KUNIT_ALL_TESTS |
| help |
| This builds the DAMON Kunit test suite. |
| |
| For more information on KUnit and unit tests in general, please refer |
| to the KUnit documentation. |
| |
| If unsure, say N. |
| |
| config DAMON_VADDR |
| bool "Data access monitoring operations for virtual address spaces" |
| depends on DAMON && MMU |
| select PAGE_IDLE_FLAG |
| help |
| This builds the default data access monitoring operations for DAMON |
| that work for virtual address spaces. |
| |
| config DAMON_PADDR |
| bool "Data access monitoring operations for the physical address space" |
| depends on DAMON && MMU |
| select PAGE_IDLE_FLAG |
| help |
| This builds the default data access monitoring operations for DAMON |
| that works for the physical address space. |
| |
| config DAMON_VADDR_KUNIT_TEST |
| bool "Test for DAMON operations" if !KUNIT_ALL_TESTS |
| depends on DAMON_VADDR && KUNIT=y |
| default KUNIT_ALL_TESTS |
| help |
| This builds the DAMON virtual addresses operations Kunit test suite. |
| |
| For more information on KUnit and unit tests in general, please refer |
| to the KUnit documentation. |
| |
| If unsure, say N. |
| |
| config DAMON_SYSFS |
| bool "DAMON sysfs interface" |
| depends on DAMON && SYSFS |
| help |
| This builds the sysfs interface for DAMON. The user space can use |
| the interface for arbitrary data access monitoring. |
| |
| config DAMON_SYSFS_KUNIT_TEST |
| bool "Test for damon debugfs interface" if !KUNIT_ALL_TESTS |
| depends on DAMON_SYSFS && KUNIT=y |
| default KUNIT_ALL_TESTS |
| help |
| This builds the DAMON sysfs interface Kunit test suite. |
| |
| For more information on KUnit and unit tests in general, please refer |
| to the KUnit documentation. |
| |
| If unsure, say N. |
| |
| config DAMON_DBGFS_DEPRECATED |
| bool "DAMON debugfs interface (DEPRECATED!)" |
| depends on DAMON_VADDR && DAMON_PADDR && DEBUG_FS |
| help |
| This builds the debugfs interface for DAMON. The user space admins |
| can use the interface for arbitrary data access monitoring. |
| |
| If unsure, say N. |
| |
| This is deprecated, so users should move to the sysfs interface |
| (DAMON_SYSFS). If you depend on this and cannot move, please report |
| your usecase to damon@lists.linux.dev and linux-mm@kvack.org. |
| |
| config DAMON_DBGFS |
| bool |
| default y |
| depends on DAMON_DBGFS_DEPRECATED |
| |
| config DAMON_DBGFS_KUNIT_TEST |
| bool "Test for damon debugfs interface" if !KUNIT_ALL_TESTS |
| depends on DAMON_DBGFS && KUNIT=y |
| default KUNIT_ALL_TESTS |
| help |
| This builds the DAMON debugfs interface Kunit test suite. |
| |
| For more information on KUnit and unit tests in general, please refer |
| to the KUnit documentation. |
| |
| If unsure, say N. |
| |
| config DAMON_RECLAIM |
| bool "Build DAMON-based reclaim (DAMON_RECLAIM)" |
| depends on DAMON_PADDR |
| help |
| This builds the DAMON-based reclamation subsystem. It finds pages |
| that not accessed for a long time (cold) using DAMON and reclaim |
| those. |
| |
| This is suggested to be used as a proactive and lightweight |
| reclamation under light memory pressure, while the traditional page |
| scanning-based reclamation is used for heavy pressure. |
| |
| config DAMON_LRU_SORT |
| bool "Build DAMON-based LRU-lists sorting (DAMON_LRU_SORT)" |
| depends on DAMON_PADDR |
| help |
| This builds the DAMON-based LRU-lists sorting subsystem. It tries to |
| protect frequently accessed (hot) pages while rarely accessed (cold) |
| pages reclaimed first under memory pressure. |
| |
| endmenu |