DAMON core assumes min_nr_regions parameter is respected by initial user
setup or the underlying operation set.  That is, users are supposed to
set up the initial monitoring regions to have more than min_nr_regions
regions.  When the virtual address operation set (vaddr) is used, users
can ask vaddr to do the setup entirely.  For the case, vaddr finds
regions for covering the current virtual address mappings, and split
regions to meet the min_nr_regions.  DAMON core therefore does nothing
for min_nr_regions at the beginning, and only avoids the number becoming
lower than min_nr_regions, by preventing regions merge operations when
needed.

The user setup requirement is somewhat too much, however, when the
min_nr_regions value is high.  Actually there was a report [1] of the
case.  Make below three changes for resolving the issue.

First (patch 1), drop the assumption and make DAMON core split regions
at the beginning for respecting the min_nr_regions.  Second (patch 2),
drop the vaddr's split operations and related code that are no more
needed.  Third (patch 3), add kunit test for the newly introduced
function.

[1] 
https://lore.kernel.org/CAC5umyjmJE9SBqjbetZZecpY54bHpn2AvCGNv3aF6J=1cfo...@mail.gmail.com

SeongJae Park (3):
  mm/damon/core: split regions for min_nr_regions at beginning
  mm/damon/vaddr: do not split regions for min_nr_regions
  mm/damon/test/core-kunit: add damon_apply_min_nr_regions() test

 mm/damon/core.c              | 39 ++++++++++++++++--
 mm/damon/tests/core-kunit.h  | 52 ++++++++++++++++++++++++
 mm/damon/tests/vaddr-kunit.h | 76 ------------------------------------
 mm/damon/vaddr.c             | 70 +--------------------------------
 4 files changed, 89 insertions(+), 148 deletions(-)


base-commit: b2e07b9d93a9696f78fb21f2260d5798c6040b28
-- 
2.47.3

Reply via email to