Hi SeongJae! Nice idea for dynamic environments.
On 3/4/2026 7:41 AM, SeongJae Park wrote: > 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. I'm not sure "temporal" is the best name for this type of behaviour. How about "by_score?". For example, "damos_goal_tune_esz_bp_by_score" and DAMOS_QUOTA_GOAL_TUNER_BY_SCORE. > 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+kateitrwyz...@mail.gmail.com > [2] https://lore.kernel.org/[email protected] > > Changelog > ========= > > Changes from RFC v1 > (https://lore.kernel.org/[email protected]) > - 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 -- Asier Gutierrez Huawei

