b8ee5575f7
damon_sysfs_set_targets() had a bug that can result in unexpected memory usage and monitoring overhead increase. The bug has fixed by a previous commit. Add a unit test for avoiding a similar bug of future. Link: https://lkml.kernel.org/r/20231022210735.46409-3-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Brendan Higgins <brendanhiggins@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
120 lines
3.7 KiB
Plaintext
120 lines
3.7 KiB
Plaintext
# 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://damonitor.github.io/doc/html/latest-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
|
|
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_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
|