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