1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunmenu "Data Access Monitoring" 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunconfig DAMON 6*4882a593Smuzhiyun bool "DAMON: Data Access Monitoring Framework" 7*4882a593Smuzhiyun help 8*4882a593Smuzhiyun This builds a framework that allows kernel subsystems to monitor 9*4882a593Smuzhiyun access frequency of each memory region. The information can be useful 10*4882a593Smuzhiyun for performance-centric DRAM level memory management. 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun See https://damonitor.github.io/doc/html/latest-damon/index.html for 13*4882a593Smuzhiyun more information. 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunconfig DAMON_KUNIT_TEST 16*4882a593Smuzhiyun bool "Test for damon" if !KUNIT_ALL_TESTS 17*4882a593Smuzhiyun depends on DAMON && KUNIT=y 18*4882a593Smuzhiyun default KUNIT_ALL_TESTS 19*4882a593Smuzhiyun help 20*4882a593Smuzhiyun This builds the DAMON Kunit test suite. 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun For more information on KUnit and unit tests in general, please refer 23*4882a593Smuzhiyun to the KUnit documentation. 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun If unsure, say N. 26*4882a593Smuzhiyun 27*4882a593Smuzhiyunconfig DAMON_VADDR 28*4882a593Smuzhiyun bool "Data access monitoring primitives for virtual address spaces" 29*4882a593Smuzhiyun depends on DAMON && MMU 30*4882a593Smuzhiyun select PAGE_IDLE_FLAG 31*4882a593Smuzhiyun help 32*4882a593Smuzhiyun This builds the default data access monitoring primitives for DAMON 33*4882a593Smuzhiyun that work for virtual address spaces. 34*4882a593Smuzhiyun 35*4882a593Smuzhiyunconfig DAMON_PADDR 36*4882a593Smuzhiyun bool "Data access monitoring primitives for the physical address space" 37*4882a593Smuzhiyun depends on DAMON && MMU 38*4882a593Smuzhiyun select PAGE_IDLE_FLAG 39*4882a593Smuzhiyun help 40*4882a593Smuzhiyun This builds the default data access monitoring primitives for DAMON 41*4882a593Smuzhiyun that works for the physical address space. 42*4882a593Smuzhiyun 43*4882a593Smuzhiyunconfig DAMON_VADDR_KUNIT_TEST 44*4882a593Smuzhiyun bool "Test for DAMON primitives" if !KUNIT_ALL_TESTS 45*4882a593Smuzhiyun depends on DAMON_VADDR && KUNIT=y 46*4882a593Smuzhiyun default KUNIT_ALL_TESTS 47*4882a593Smuzhiyun help 48*4882a593Smuzhiyun This builds the DAMON virtual addresses primitives Kunit test suite. 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun For more information on KUnit and unit tests in general, please refer 51*4882a593Smuzhiyun to the KUnit documentation. 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun If unsure, say N. 54*4882a593Smuzhiyun 55*4882a593Smuzhiyunconfig DAMON_DBGFS 56*4882a593Smuzhiyun bool "DAMON debugfs interface" 57*4882a593Smuzhiyun depends on DAMON_VADDR && DAMON_PADDR && DEBUG_FS 58*4882a593Smuzhiyun help 59*4882a593Smuzhiyun This builds the debugfs interface for DAMON. The user space admins 60*4882a593Smuzhiyun can use the interface for arbitrary data access monitoring. 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun If unsure, say N. 63*4882a593Smuzhiyun 64*4882a593Smuzhiyunconfig DAMON_DBGFS_KUNIT_TEST 65*4882a593Smuzhiyun bool "Test for damon debugfs interface" if !KUNIT_ALL_TESTS 66*4882a593Smuzhiyun depends on DAMON_DBGFS && KUNIT=y 67*4882a593Smuzhiyun default KUNIT_ALL_TESTS 68*4882a593Smuzhiyun help 69*4882a593Smuzhiyun This builds the DAMON debugfs interface Kunit test suite. 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun For more information on KUnit and unit tests in general, please refer 72*4882a593Smuzhiyun to the KUnit documentation. 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun If unsure, say N. 75*4882a593Smuzhiyun 76*4882a593Smuzhiyunconfig DAMON_RECLAIM 77*4882a593Smuzhiyun bool "Build DAMON-based reclaim (DAMON_RECLAIM)" 78*4882a593Smuzhiyun depends on DAMON_PADDR 79*4882a593Smuzhiyun help 80*4882a593Smuzhiyun This builds the DAMON-based reclamation subsystem. It finds pages 81*4882a593Smuzhiyun that not accessed for a long time (cold) using DAMON and reclaim 82*4882a593Smuzhiyun those. 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun This is suggested to be used as a proactive and lightweight 85*4882a593Smuzhiyun reclamation under light memory pressure, while the traditional page 86*4882a593Smuzhiyun scanning-based reclamation is used for heavy pressure. 87*4882a593Smuzhiyun 88*4882a593Smuzhiyunendmenu 89