SJ Park
unread,Sep 28, 2026, 5:33:54 AM (4 days ago) Sep 28Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to SJ Park, Liam R. Howlett, Andrew Morton, Brendan Higgins, David Gow, David Hildenbrand, Jonathan Corbet, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Randy Dunlap, Shuah Khan, Shuah Khan, Suren Baghdasaryan, Vlastimil Babka, da...@lists.linux.dev, kuni...@googlegroups.com, linu...@vger.kernel.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, linu...@kvack.org
Patches Sequence
================
Patch 1 introduces the quota goal complement flag API and implements its
behavior. Patch 2 updates damos_new_quota_goal() to receive the flag.
Patch 3 update DAMON sysfs interface to support the complement flag.
Patches 4 and 5 extend existing kunit and kselftest to cover the new
flag. Patches 6-8 update design, usage and ABI documents for the new
feature.
Note: Below is additional information that is not intended to be added
to the final commit message.
Test
====
I tested this feature using the latest version of DAMON user-space tool,
damo [1], as below.
On an idle system having 10 GiB single node memory (node id 0), fill up
80% of memory with page cache.
$ dd if=/dev/zero of=foo bs=1M count=$((1024*8))
Run DAMOS with pageout action for 80% of free memory, but using
node_mem_used_bp metric like below.
$ sudo ./damo start --damos_action pageout \
--damos_quota_space 100M --damos_quota_interval 1s \
--damos_quota_fail_charge_ratio 1 4096 \
--damos_quota_goal_tuner temporal \
--damos_quota_goal node_mem_used_bp 20% 0
Because the system has more than 20% node 0 memory utilization, DAMOS
does nothing, as expected.
Run DAMOS with pageout action for 80% of free memory, using
node_mem_used_bp metrics with complement flag like below.
$ sudo ./damo start --damos_action pageout \
--damos_quota_space 100M --damos_quota_interval 1s \
--damos_quota_fail_charge_ratio 1 4096 \
--damos_quota_goal_tuner temporal \
--damos_quota_goal node_mem_used_bp 80% complement 0
Because the complement flag is given, it is effectively the same as
node_mem_freepbp metrics with a target of 80%. DAMOS reclaims the page
cache ~100 MiB per second, until the free memory ratio (complemented
memory utilization ratio) reaches the goal, 80%.
Changes from RFC v4
- RFC v4:
https://lore.kernel.org/202609271205...@kernel.org
- Fix a typo in test code (s/complementfalse/complement/).
- Extend sysfs.sh DAMON selftest for complement flag sysfs file.
Changes from RFC v3
- RFC v3:
https://lore.kernel.org/202609231014...@kernel.org
- Rebase to the latest mm-new.
- Add tests done to the cover letter.
Changes from RFC v2
- RFC v2:
https://lore.kernel.org/202609190113...@kernel.org
- Avoid quota goal value underflow for some_mem_psi.
- Handle complement flag for psi goal with unset last_psi_total.
- Pass complement argument to damos_new_quota_goal() from core and
core-kunit.
- Explicitly document no-op complement behavior for user_input.
Changes from RFC
- RFC:
https://lore.kernel.org/202609181428...@kernel.org
- Avoid quota goal value underflow.
- Fix usage doc for number of files in each goal directory.
- Rebase to the latest mm-new.
[1]
https://github.com/damonitor/damo
SJ Park (8):
mm/damon/core: introduce damos_quota_goal->complement
mm/damon/core: add complement argument to damos_new_quota_goal()
mm/damon/sysfs-schemes: support quota goal complement flag
mm/damon/tests/core-kunit: test quota_goal->complement commit
selftests/damon/sysfs.sh: test quota goal complement flag file
Docs/mm/damon/design: document damos quota goal complement flag
Docs/admin-guide/mm/damon/usage: update for quota goal complement file
Docs/ABI/damon: update for quota goal metric complement sysfs file
.../ABI/testing/sysfs-kernel-mm-damon | 6 ++++
Documentation/admin-guide/mm/damon/usage.rst | 15 +++++----
Documentation/mm/damon/design.rst | 15 ++++++---
include/linux/damon.h | 4 ++-
mm/damon/core.c | 33 ++++++++++++++++---
mm/damon/lru_sort.c | 5 +--
mm/damon/reclaim.c | 5 +--
mm/damon/sysfs-schemes.c | 30 +++++++++++++++++
mm/damon/tests/core-kunit.h | 3 ++
samples/damon/mtier.c | 2 +-
tools/testing/selftests/damon/sysfs.sh | 3 ++
11 files changed, 100 insertions(+), 21 deletions(-)
base-commit: f3528689602b1d578d582cb060e89fa25516fd67
--
2.47.3