xref: /linux/mm/damon/Kconfig (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
12224d848SSeongJae Park# SPDX-License-Identifier: GPL-2.0-only
22224d848SSeongJae Park
32224d848SSeongJae Parkmenu "Data Access Monitoring"
42224d848SSeongJae Park
52224d848SSeongJae Parkconfig DAMON
62224d848SSeongJae Park	bool "DAMON: Data Access Monitoring Framework"
72224d848SSeongJae Park	help
82224d848SSeongJae Park	  This builds a framework that allows kernel subsystems to monitor
92224d848SSeongJae Park	  access frequency of each memory region. The information can be useful
102224d848SSeongJae Park	  for performance-centric DRAM level memory management.
112224d848SSeongJae Park
126901cf55SDiederik de Haas	  See https://www.kernel.org/doc/html/latest/mm/damon/index.html for
132224d848SSeongJae Park	  more information.
142224d848SSeongJae Park
15*62f05828SSeongJae Parkconfig DAMON_DEBUG_SANITY
16*62f05828SSeongJae Park	bool "Check sanity of DAMON code"
17*62f05828SSeongJae Park	depends on DAMON
18*62f05828SSeongJae Park	help
19*62f05828SSeongJae Park	  This enables additional DAMON debugging-purpose sanity checks in
20*62f05828SSeongJae Park	  DAMON code.  This can be useful for finding bugs, but impose
21*62f05828SSeongJae Park	  additional overhead.  This is therefore recommended to be enabled on
22*62f05828SSeongJae Park	  only development and test setups.
23*62f05828SSeongJae Park
24*62f05828SSeongJae Park	  If unsure, say N.
25*62f05828SSeongJae Park
2617ccae8bSSeongJae Parkconfig DAMON_KUNIT_TEST
2717ccae8bSSeongJae Park	bool "Test for damon" if !KUNIT_ALL_TESTS
2817ccae8bSSeongJae Park	depends on DAMON && KUNIT=y
2917ccae8bSSeongJae Park	default KUNIT_ALL_TESTS
3017ccae8bSSeongJae Park	help
3117ccae8bSSeongJae Park	  This builds the DAMON Kunit test suite.
3217ccae8bSSeongJae Park
3317ccae8bSSeongJae Park	  For more information on KUnit and unit tests in general, please refer
3417ccae8bSSeongJae Park	  to the KUnit documentation.
3517ccae8bSSeongJae Park
3617ccae8bSSeongJae Park	  If unsure, say N.
3717ccae8bSSeongJae Park
383f49584bSSeongJae Parkconfig DAMON_VADDR
39f7d911c3SSeongJae Park	bool "Data access monitoring operations for virtual address spaces"
403f49584bSSeongJae Park	depends on DAMON && MMU
413f49584bSSeongJae Park	select PAGE_IDLE_FLAG
420acfc656SSeongJae Park	default DAMON
433f49584bSSeongJae Park	help
44f7d911c3SSeongJae Park	  This builds the default data access monitoring operations for DAMON
45f24b0626SGeert Uytterhoeven	  that work for virtual address spaces.
463f49584bSSeongJae Park
47a28397beSSeongJae Parkconfig DAMON_PADDR
48f7d911c3SSeongJae Park	bool "Data access monitoring operations for the physical address space"
49a28397beSSeongJae Park	depends on DAMON && MMU
50a28397beSSeongJae Park	select PAGE_IDLE_FLAG
510acfc656SSeongJae Park	default DAMON
52a28397beSSeongJae Park	help
53f7d911c3SSeongJae Park	  This builds the default data access monitoring operations for DAMON
54a28397beSSeongJae Park	  that works for the physical address space.
55a28397beSSeongJae Park
5617ccae8bSSeongJae Parkconfig DAMON_VADDR_KUNIT_TEST
57f7d911c3SSeongJae Park	bool "Test for DAMON operations" if !KUNIT_ALL_TESTS
5817ccae8bSSeongJae Park	depends on DAMON_VADDR && KUNIT=y
5917ccae8bSSeongJae Park	default KUNIT_ALL_TESTS
6017ccae8bSSeongJae Park	help
61f7d911c3SSeongJae Park	  This builds the DAMON virtual addresses operations Kunit test suite.
6217ccae8bSSeongJae Park
6317ccae8bSSeongJae Park	  For more information on KUnit and unit tests in general, please refer
6417ccae8bSSeongJae Park	  to the KUnit documentation.
6517ccae8bSSeongJae Park
6617ccae8bSSeongJae Park	  If unsure, say N.
6717ccae8bSSeongJae Park
68c951cd3bSSeongJae Parkconfig DAMON_SYSFS
69c951cd3bSSeongJae Park	bool "DAMON sysfs interface"
70c951cd3bSSeongJae Park	depends on DAMON && SYSFS
710acfc656SSeongJae Park	default DAMON
72c951cd3bSSeongJae Park	help
73c951cd3bSSeongJae Park	  This builds the sysfs interface for DAMON.  The user space can use
74c951cd3bSSeongJae Park	  the interface for arbitrary data access monitoring.
75c951cd3bSSeongJae Park
76b8ee5575SSeongJae Parkconfig DAMON_SYSFS_KUNIT_TEST
7712d02165SSeongJae Park	bool "Test for damon sysfs interface" if !KUNIT_ALL_TESTS
78b8ee5575SSeongJae Park	depends on DAMON_SYSFS && KUNIT=y
79b8ee5575SSeongJae Park	default KUNIT_ALL_TESTS
80b8ee5575SSeongJae Park	help
81b8ee5575SSeongJae Park	  This builds the DAMON sysfs interface Kunit test suite.
82b8ee5575SSeongJae Park
83b8ee5575SSeongJae Park	  For more information on KUnit and unit tests in general, please refer
84b8ee5575SSeongJae Park	  to the KUnit documentation.
85b8ee5575SSeongJae Park
86b8ee5575SSeongJae Park	  If unsure, say N.
87b8ee5575SSeongJae Park
8843b0536cSSeongJae Parkconfig DAMON_RECLAIM
8943b0536cSSeongJae Park	bool "Build DAMON-based reclaim (DAMON_RECLAIM)"
9043b0536cSSeongJae Park	depends on DAMON_PADDR
9143b0536cSSeongJae Park	help
9243b0536cSSeongJae Park	  This builds the DAMON-based reclamation subsystem.  It finds pages
9343b0536cSSeongJae Park	  that not accessed for a long time (cold) using DAMON and reclaim
9443b0536cSSeongJae Park	  those.
9543b0536cSSeongJae Park
9643b0536cSSeongJae Park	  This is suggested to be used as a proactive and lightweight
9743b0536cSSeongJae Park	  reclamation under light memory pressure, while the traditional page
9843b0536cSSeongJae Park	  scanning-based reclamation is used for heavy pressure.
9943b0536cSSeongJae Park
10040e983ccSSeongJae Parkconfig DAMON_LRU_SORT
10140e983ccSSeongJae Park	bool "Build DAMON-based LRU-lists sorting (DAMON_LRU_SORT)"
10240e983ccSSeongJae Park	depends on DAMON_PADDR
10340e983ccSSeongJae Park	help
10440e983ccSSeongJae Park	  This builds the DAMON-based LRU-lists sorting subsystem.  It tries to
10540e983ccSSeongJae Park	  protect frequently accessed (hot) pages while rarely accessed (cold)
10640e983ccSSeongJae Park	  pages reclaimed first under memory pressure.
10740e983ccSSeongJae Park
108369c415eSSeongJae Parkconfig DAMON_STAT
109369c415eSSeongJae Park	bool "Build data access monitoring stat (DAMON_STAT)"
110369c415eSSeongJae Park	depends on DAMON_PADDR
111369c415eSSeongJae Park	help
112369c415eSSeongJae Park	  This builds the DAMON-based access monitoring statistics subsystem.
113369c415eSSeongJae Park	  It runs DAMON and expose access monitoring results in simple stat
114369c415eSSeongJae Park	  metrics.
115369c415eSSeongJae Park
116369c415eSSeongJae Parkconfig DAMON_STAT_ENABLED_DEFAULT
117369c415eSSeongJae Park	bool "Enable DAMON_STAT by default"
1184e915656SEnze Li	depends on DAMON_STAT
119369c415eSSeongJae Park	default DAMON_STAT
120369c415eSSeongJae Park	help
121369c415eSSeongJae Park	  Whether to enable DAMON_STAT by default.  Users can disable it in
122369c415eSSeongJae Park	  boot or runtime using its 'enabled' parameter.
123369c415eSSeongJae Park
1242224d848SSeongJae Parkendmenu
125