linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 00/18] efficiently expose damos action tried regions information
@ 2022-10-19  0:12 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 17:32 ` [RFC PATCH 00/18] efficiently expose damos action tried regions information SeongJae Park
  0 siblings, 2 replies; 3+ messages in thread
From: SeongJae Park @ 2022-10-19  0:12 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet, SeongJae Park
  Cc: damon, linux-mm, linux-doc, linux-kernel

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [RFC PATCH 17/18] Docs/admin-guide/mm/damon/usage: document schemes/<s>/tried_regions directory
  2022-10-19  0:12 [RFC PATCH 00/18] efficiently expose damos action tried regions information SeongJae Park
@ 2022-10-19  0:13 ` SeongJae Park
  2022-10-19 17:32 ` [RFC PATCH 00/18] efficiently expose damos action tried regions information SeongJae Park
  1 sibling, 0 replies; 3+ messages in thread
From: SeongJae Park @ 2022-10-19  0:13 UTC (permalink / raw)
  To: SeongJae Park, Jonathan Corbet; +Cc: damon, linux-mm, linux-doc, linux-kernel

Document 'tried_regions' directory in DAMON sysfs interface usage in the
administrator guide.

Signed-off-by: SeongJae Park <sj@kernel.org>
---
 Documentation/admin-guide/mm/damon/usage.rst | 44 ++++++++++++++++++--
 1 file changed, 41 insertions(+), 3 deletions(-)

diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/admin-guide/mm/damon/usage.rst
index b47b0cbbd491..649d63ecf67f 100644
--- a/Documentation/admin-guide/mm/damon/usage.rst
+++ b/Documentation/admin-guide/mm/damon/usage.rst
@@ -88,6 +88,9 @@ comma (","). ::
     │ │ │ │ │ │ │ │ weights/sz_permil,nr_accesses_permil,age_permil
     │ │ │ │ │ │ │ watermarks/metric,interval_us,high,mid,low
     │ │ │ │ │ │ │ stats/nr_tried,sz_tried,nr_applied,sz_applied,qt_exceeds
+    │ │ │ │ │ │ │ tried_regions/
+    │ │ │ │ │ │ │ │ 0/start,end,nr_accesses,age
+    │ │ │ │ │ │ │ │ ...
     │ │ │ │ │ │ ...
     │ │ │ │ ...
     │ │ ...
@@ -125,7 +128,14 @@ in the state.  Writing ``commit`` to the ``state`` file makes kdamond reads the
 user inputs in the sysfs files except ``state`` file again.  Writing
 ``update_schemes_stats`` to ``state`` file updates the contents of stats files
 for each DAMON-based operation scheme of the kdamond.  For details of the
-stats, please refer to :ref:`stats section <sysfs_schemes_stats>`.
+stats, please refer to :ref:`stats section <sysfs_schemes_stats>`.  Writing
+``update_schemes_regions`` to ``state`` file updates the DAMON-based operation
+scheme action tried regions directory for each DAMON-based operation scheme of
+the kdamond.  Writing ``clear_schemes_regions`` to ``state`` file clears the
+DAMON-based operating scheme action tried regions directory for each
+DAMON-based operation scheme of the kdamond.  For details of the DAMON-based
+operation scheme action tried regions directory, please refer to
+:ref:tried_regions section <sysfs_schemes_tried_regions>`.
 
 If the state is ``on``, reading ``pid`` shows the pid of the kdamond thread.
 
@@ -166,6 +176,8 @@ You can set and get what type of monitoring operations DAMON will use for the
 context by writing one of the keywords listed in ``avail_operations`` file and
 reading from the ``operations`` file.
 
+.. _sysfs_monitoring_attrs:
+
 contexts/<N>/monitoring_attrs/
 ------------------------------
 
@@ -252,8 +264,9 @@ to ``N-1``.  Each directory represents each DAMON-based operation scheme.
 schemes/<N>/
 ------------
 
-In each scheme directory, four directories (``access_pattern``, ``quotas``,
-``watermarks``, and ``stats``) and one file (``action``) exist.
+In each scheme directory, five directories (``access_pattern``, ``quotas``,
+``watermarks``, ``stats``, and ``tried_regions``) and one file (``action``)
+exist.
 
 The ``action`` file is for setting and getting what action you want to apply to
 memory regions having specific access pattern of the interest.  The keywords
@@ -348,6 +361,31 @@ should ask DAMON sysfs interface to updte the content of the files for the
 stats by writing a special keyword, ``update_schemes_stats`` to the relevant
 ``kdamonds/<N>/state`` file.
 
+.. _sysfs_schemes_tried_regions:
+
+schemes/<N>/tried_regions/
+--------------------------
+
+When a special keyword, ``update_schemes_regions``, is written to the relevant
+``kdamonds/<N>/state`` file, DAMON creates directories named integer starting
+from ``0`` under this directory.  Each directory contains files exposing
+detailed information about each of the memory region that the corresponding
+scheme's ``action`` has tried to be applied under this directory, during next
+:ref:`aggregation interval <sysfs_monitoring_attrs>`.  The information includes
+address range, ``nr_accesses``, , and ``age`` of the region.
+
+The directories will be removed when another special keyword,
+``clear_schemes_regions``, is written to the relevant ``kdamonds/<N>/state``
+file.
+
+tried_regions/<N>/
+------------------
+
+In each region directory, you will find four files (``start``, ``end``,
+``nr_accesses``, and ``age``).  Reading the files will show the start and end
+addresses, ``nr_accesses``, and ``age`` of the region that corresponding
+DAMON-based operation scheme ``action`` has tried to be applied.
+
 Example
 ~~~~~~~
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [RFC PATCH 00/18] efficiently expose damos action tried regions information
  2022-10-19  0:12 [RFC PATCH 00/18] efficiently expose damos action tried regions information 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 17:32 ` SeongJae Park
  1 sibling, 0 replies; 3+ messages in thread
From: SeongJae Park @ 2022-10-19 17:32 UTC (permalink / raw)
  To: SeongJae Park
  Cc: Andrew Morton, Jonathan Corbet, damon, linux-mm, linux-doc,
	linux-kernel

On Wed, 19 Oct 2022 00:12:59 +0000 SeongJae Park <sj@kernel.org> wrote:

> 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.

I think this patchset is unnecessarily big due to the cleanups and
refactorings.  I added them in this patchset mainly because I found the messy
code while working for the feature.  However, now it looks like it would make
more sense to split them out into separate patchsets.

Just thinking loudly, but any input is welcome.


Thanks,
SJ
[...]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-10-19 17:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-19  0:12 [RFC PATCH 00/18] efficiently expose damos action tried regions information 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 17:32 ` [RFC PATCH 00/18] efficiently expose damos action tried regions information SeongJae Park

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).