From: SeongJae Park <sj@kernel.org>
Cc: SeongJae Park <sj@kernel.org>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Lorenzo Stoakes <ljs@kernel.org>, Michal Hocko <mhocko@suse.com>,
Mike Rapoport <rppt@kernel.org>, Shuah Khan <shuah@kernel.org>,
Shuah Khan <skhan@linuxfoundation.org>,
Suren Baghdasaryan <surenb@google.com>,
Vlastimil Babka <vbabka@kernel.org>,
damon@lists.linux.dev, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org
Subject: [RFC PATCH v2 00/10] mm/damon: support multiple goal-based quota tuning algorithms
Date: Tue, 3 Mar 2026 20:41:09 -0800 [thread overview]
Message-ID: <20260304044122.79394-1-sj@kernel.org> (raw)
Aim-oriented DAMOS quota auto-tuning uses a single tuning algorithm.
The algorithm is designed to find a quota value that should be
consistently kept for achieving the aimed goal for long term. It is
useful and reliable at automatically operating systems that have dynamic
environments in the long term.
As always, however, no single algorithm fits all. When the environment
has static characteristics or there are control towers in not only the
kernel space but also the user space, the algorithm shows some
limitations. In such environments, users want kernel work in a more
short term deterministic way. Actually there were at least two reports
[1,2] of such cases.
Extend DAMOS quotas goal to support multiple quota tuning algorithms
that users can select. Keep the current algorithm as the default one,
to not break the old users. Also give it a name, "consist", as it is
designed to "consistently" apply the DAMOS action. And introduce a new
tuning algorithm, namely "temporal". It is designed to apply the DAMOS
action only temporally, in a deterministic way. In more detail, as long
as the goal is under-achieved, it uses the maximum quota available.
Once the goal is over-achieved, it sets the quota zero.
Tests
=====
I confirmed the feature is working as expected using the latest version
of DAMON user-space tool, like below.
$ # start DAMOS for reclaiming memory aiming 30% free memory
$ sudo ./damo/damo start --damos_action pageout \
--damos_quota_goal_tuner temporal \
--damos_quota_goal node_mem_free_bp 30% 0 \
--damos_quota_interval 1s \
--damos_quota_space 100M
Note that >=3.1.8 version of DAMON user-space tool supports this feature
(--damos_quota_goal_tuner). As expected, DAMOS stops reclaiming memory
as soon as the goal amount of free memory is made. When 'consist' tuner
is used, the reclamation was continued even after the goal amount of
free memory is made, resulting in more than goal amount of free memory,
as expected.
Patch Sequence
==============
First four patches implement the features. Patch 1 extends core API to
allow multiple tuners and make the current tuner as the default and only
available tuner, namely 'consist'. Patch 2 allows future tuners setting
zero effective quota. Patch 3 introduces the second tuner, namely
'temporal'. Patch 4 further extends DAMON sysfs API to let users use
that.
Three following patches (patches 5-7) update design, usage, and ABI
documents, respectively.
Final three patches (patches 8-10) are for adding selftests. The eighth
and the ninth patches extend the testing-purpose DAMON sysfs control
helper and DAMON status dumping tool to support the newly added feature.
The tenth patch extends the existing online commit test to cover the new
feature.
References
==========
[1] https://lore.kernel.org/CALa+Y17__d=ZsM1yX+MXx0ozVdsXnFqF4p0g+kATEitrWyZFfg@mail.gmail.com
[2] https://lore.kernel.org/20260204022537.814-1-yunjeong.mun@sk.com
Changelog
=========
Changes from RFC v1
(https://lore.kernel.org/20260212062314.69961-1-sj@kernel.org)
- Add selftest for goal_tuner commitment.
- Set goal tuner inside damon_new_scheme().
- Allow zero size effective size quota.
- Update the ABI document.
- Wordsmith change descriptions.
SeongJae Park (10):
mm/damon/core: introduce damos_quota_goal_tuner
mm/damon/core: allow quota goals set zero effective size quota
mm/damon/core: introduce DAMOS_QUOTA_GOAL_TUNER_TEMPORAL
mm/damon/sysfs-schemes: implement quotas->goal_tuner file
Docs/mm/damon/design: document the goal-based quota tuner selections
Docs/admin-guide/mm/damon/usage: document goal_tuner sysfs file
Docs/ABI/damon: update for goal_tuner
selftests/damon/_damon_sysfs: support goal_tuner setup
selftests/damon/drgn_dump_damon_status: support quota goal_tuner
dumping
selftests/damon/sysfs.py: test goal_tuner commit
.../ABI/testing/sysfs-kernel-mm-damon | 6 ++
Documentation/admin-guide/mm/damon/usage.rst | 16 +++--
Documentation/mm/damon/design.rst | 12 ++++
include/linux/damon.h | 11 ++++
mm/damon/core.c | 60 +++++++++++++++----
mm/damon/sysfs-schemes.c | 58 ++++++++++++++++++
tools/testing/selftests/damon/_damon_sysfs.py | 12 +++-
.../selftests/damon/drgn_dump_damon_status.py | 1 +
tools/testing/selftests/damon/sysfs.py | 7 +++
9 files changed, 166 insertions(+), 17 deletions(-)
base-commit: bbba4ca6322dd5c4f66fe31b1b374f77a8d2b2e5
--
2.47.3
next reply other threads:[~2026-03-04 4:41 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 4:41 SeongJae Park [this message]
2026-03-04 4:41 ` [RFC PATCH v2 01/10] mm/damon/core: introduce damos_quota_goal_tuner SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 02/10] mm/damon/core: allow quota goals set zero effective size quota SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 03/10] mm/damon/core: introduce DAMOS_QUOTA_GOAL_TUNER_TEMPORAL SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 04/10] mm/damon/sysfs-schemes: implement quotas->goal_tuner file SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 05/10] Docs/mm/damon/design: document the goal-based quota tuner selections SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 06/10] Docs/admin-guide/mm/damon/usage: document goal_tuner sysfs file SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 07/10] Docs/ABI/damon: update for goal_tuner SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 08/10] selftests/damon/_damon_sysfs: support goal_tuner setup SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 09/10] selftests/damon/drgn_dump_damon_status: support quota goal_tuner dumping SeongJae Park
2026-03-04 4:41 ` [RFC PATCH v2 10/10] selftests/damon/sysfs.py: test goal_tuner commit SeongJae Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260304044122.79394-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=corbet@lwn.net \
--cc=damon@lists.linux.dev \
--cc=david@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=rppt@kernel.org \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox