From: SeongJae Park <sj@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
Jonathan Corbet <corbet@lwn.net>, SeongJae Park <sj@kernel.org>
Cc: damon@lists.linux.dev, linux-mm@kvack.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH 00/18] efficiently expose damos action tried regions information
Date: Wed, 19 Oct 2022 00:12:59 +0000 [thread overview]
Message-ID: <20221019001317.104270-1-sj@kernel.org> (raw)
DAMON users can retrieve the monitoring results via 'after_aggregation'
callbacks if the user is using the kernel API, or 'damon_aggregated'
tracepoint if the user is in the user space. Those are useful if full
monitoring results are necessary. However, if the user has interest in
only some regions having specific access pattern, the interfaces could
be inefficient. For example, some DAMOS users might want to know
exactly what regions were identified as fulfilling the access pattern of
the scheme, for a debugging or a tuning.
This patchset implements DAMON kernel API callbacks and sysfs directory
for efficient exposure of the information. The new callback will be
called for each region before specific DAMOS action is gonna tried to be
applied. The sysfs directory will be called 'tried_regions' and placed
under each scheme sysfs directory. User can write a special keyworkd,
'update_schemes_regions' to the 'state' file of a kdamond sysfs
directory. Then, DAMON sysfs interface will fill the directory with the
information of regions that corresponding scheme action was tried to be
applied for one aggregation interval.
Patches Sequence
----------------
First five patches (1-5) clean up and refactor code that following patch
will touch, and the following one (patch 6) implements the DAMON
callback for DAMON kernel API users.
Following six patches (7-12) clean up and refactor the sysfs interface
before the new sysfs directory introduction. Following two patches (13
and 14) implement the sysfs directories, and successing two patches (15
and 16) implement the special keyword for 'state' to fill and clean up
the directories.
Finally, two more patches (17 and 18) for the documentation of the usage
and ABI follow.
Assembled Tree
--------------
This patchset is based on the latest mm-unstable tree[1]. Assembled
tree is also available at the damon/next tree[2].
[1] https://git.kernel.org/akpm/mm/h/mm-unstable
[2] https://git.kernel.org/sj/h/damon/next
SeongJae Park (18):
mm/damon/modules: deduplicate init steps for DAMON context setup
mm/damon/core: split out DAMOS-charged region skip logic into a new
function
mm/damon/core: split damos application logic into a new function
mm/damon/core: split out scheme stat update logic into a new function
mm/damon/core: split out scheme quota adjustment logic into a new
function
mm/damon/core: add a DAMON callback for scheme target regions check
mm/damon/sysfs: Use damon_addr_range for regions' start and end values
mm/damon/sysfs: remove parameters of damon_sysfs_region_alloc()
mm/damon/sysfs: move sysfs_lock to common module
mm/damon/sysfs: move unsigned long range directory to common module
mm/damon/sysfs: split out kdamond-independent schemes stats update
logic into a new function
mm/damon/sysfs: move schemes directory implementation to separate
module
mm/damon/sysfs-schemes: implement schemes/tried_regions directory
mm/damon/sysfs-schemes: implement scheme region directory
mm/damon/sysfs: implement DAMOS-tried regions update command
mm/damon/sysfs-schemes: implement DAMOS tried regions clear command
Docs/admin-guide/mm/damon/usage: document schemes/<s>/tried_regions
directory
Docs/ABI/damon: document 'schemes/<s>/tried_regions' directory
.../ABI/testing/sysfs-kernel-mm-damon | 32 +
Documentation/admin-guide/mm/damon/usage.rst | 44 +-
include/linux/damon.h | 5 +
mm/damon/Makefile | 6 +-
mm/damon/core.c | 259 ++--
mm/damon/lru_sort.c | 17 +-
mm/damon/modules-common.c | 42 +
mm/damon/modules-common.h | 3 +
mm/damon/reclaim.c | 17 +-
mm/damon/sysfs-common.c | 107 ++
mm/damon/sysfs-common.h | 56 +
mm/damon/sysfs-schemes.c | 1281 +++++++++++++++++
mm/damon/sysfs.c | 1224 ++--------------
13 files changed, 1813 insertions(+), 1280 deletions(-)
create mode 100644 mm/damon/modules-common.c
create mode 100644 mm/damon/sysfs-common.c
create mode 100644 mm/damon/sysfs-common.h
create mode 100644 mm/damon/sysfs-schemes.c
--
2.25.1
next reply other threads:[~2022-10-19 0:13 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-19 0:12 SeongJae Park [this message]
2022-10-19 0:13 ` [RFC PATCH 01/18] mm/damon/modules: deduplicate init steps for DAMON context setup SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 02/18] mm/damon/core: split out DAMOS-charged region skip logic into a new function SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 03/18] mm/damon/core: split damos application " SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 04/18] mm/damon/core: split out scheme stat update " SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 05/18] mm/damon/core: split out scheme quota adjustment " SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 06/18] mm/damon/core: add a DAMON callback for scheme target regions check SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 07/18] mm/damon/sysfs: Use damon_addr_range for regions' start and end values SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 08/18] mm/damon/sysfs: remove parameters of damon_sysfs_region_alloc() SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 09/18] mm/damon/sysfs: move sysfs_lock to common module SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 10/18] mm/damon/sysfs: move unsigned long range directory " SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 11/18] mm/damon/sysfs: split out kdamond-independent schemes stats update logic into a new function SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 12/18] mm/damon/sysfs: move schemes directory implementation to separate module SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 13/18] mm/damon/sysfs-schemes: implement schemes/tried_regions directory SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 14/18] mm/damon/sysfs-schemes: implement scheme region directory SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 15/18] mm/damon/sysfs: implement DAMOS-tried regions update command SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 16/18] mm/damon/sysfs-schemes: implement DAMOS tried regions clear command SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 17/18] Docs/admin-guide/mm/damon/usage: document schemes/<s>/tried_regions directory SeongJae Park
2022-10-19 0:13 ` [RFC PATCH 18/18] Docs/ABI/damon: document 'schemes/<s>/tried_regions' directory SeongJae Park
2022-10-19 17:32 ` [RFC PATCH 00/18] efficiently expose damos action tried regions information 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=20221019001317.104270-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=corbet@lwn.net \
--cc=damon@lists.linux.dev \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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