| From: SeongJae Park <sj@kernel.org> |
| Subject: Docs/admin-guide/mm/damon/usage: add links to sysfs files hierarchy |
| Date: Wed, 13 Dec 2023 19:03:37 +0000 |
| |
| 'Sysfs Files Hierarchy' section of DAMON usage document shows whole |
| picture of the interface. Then sections for detailed explanation of the |
| files follow. Due to the amount of the files, navigating between the |
| whole picture and the section for specific files sometimes require no |
| subtle amount of scrolling. Add links from the whole picture to the |
| dedicated sections for making the navigation easier. |
| |
| Link: https://lkml.kernel.org/r/20231213190338.54146-6-sj@kernel.org |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| Documentation/admin-guide/mm/damon/usage.rst | 68 ++++++++++++----- |
| 1 file changed, 48 insertions(+), 20 deletions(-) |
| |
| --- a/Documentation/admin-guide/mm/damon/usage.rst~docs-admin-guide-mm-damon-usage-add-links-to-sysfs-files-hierarchy |
| +++ a/Documentation/admin-guide/mm/damon/usage.rst |
| @@ -59,43 +59,47 @@ Files Hierarchy |
| The files hierarchy of DAMON sysfs interface is shown below. In the below |
| figure, parents-children relations are represented with indentations, each |
| directory is having ``/`` suffix, and files in each directory are separated by |
| -comma (","). :: |
| +comma (","). |
| |
| - /sys/kernel/mm/damon/admin |
| - │ kdamonds/nr_kdamonds |
| - │ │ 0/state,pid |
| - │ │ │ contexts/nr_contexts |
| - │ │ │ │ 0/avail_operations,operations |
| - │ │ │ │ │ monitoring_attrs/ |
| +.. parsed-literal:: |
| + |
| + :ref:`/sys/kernel/mm/damon <sysfs_root>`/admin |
| + │ :ref:`kdamonds <sysfs_kdamonds>`/nr_kdamonds |
| + │ │ :ref:`0 <sysfs_kdamond>`/state,pid |
| + │ │ │ :ref:`contexts <sysfs_contexts>`/nr_contexts |
| + │ │ │ │ :ref:`0 <sysfs_context>`/avail_operations,operations |
| + │ │ │ │ │ :ref:`monitoring_attrs <sysfs_monitoring_attrs>`/ |
| │ │ │ │ │ │ intervals/sample_us,aggr_us,update_us |
| │ │ │ │ │ │ nr_regions/min,max |
| - │ │ │ │ │ targets/nr_targets |
| - │ │ │ │ │ │ 0/pid_target |
| - │ │ │ │ │ │ │ regions/nr_regions |
| - │ │ │ │ │ │ │ │ 0/start,end |
| + │ │ │ │ │ :ref:`targets <sysfs_targets>`/nr_targets |
| + │ │ │ │ │ │ :ref:`0 <sysfs_target>`/pid_target |
| + │ │ │ │ │ │ │ :ref:`regions <sysfs_regions>`/nr_regions |
| + │ │ │ │ │ │ │ │ :ref:`0 <sysfs_region>`/start,end |
| │ │ │ │ │ │ │ │ ... |
| │ │ │ │ │ │ ... |
| - │ │ │ │ │ schemes/nr_schemes |
| - │ │ │ │ │ │ 0/action,apply_interval_us |
| - │ │ │ │ │ │ │ access_pattern/ |
| + │ │ │ │ │ :ref:`schemes <sysfs_schemes>`/nr_schemes |
| + │ │ │ │ │ │ :ref:`0 <sysfs_scheme>`/action,apply_interval_us |
| + │ │ │ │ │ │ │ :ref:`access_pattern <sysfs_access_pattern>`/ |
| │ │ │ │ │ │ │ │ sz/min,max |
| │ │ │ │ │ │ │ │ nr_accesses/min,max |
| │ │ │ │ │ │ │ │ age/min,max |
| - │ │ │ │ │ │ │ quotas/ms,bytes,reset_interval_ms |
| + │ │ │ │ │ │ │ :ref:`quotas <sysfs_quotas>`/ms,bytes,reset_interval_ms |
| │ │ │ │ │ │ │ │ weights/sz_permil,nr_accesses_permil,age_permil |
| - │ │ │ │ │ │ │ │ goals/nr_goals |
| + │ │ │ │ │ │ │ │ :ref:`goals <sysfs_schemes_quota_goals>`/nr_goals |
| │ │ │ │ │ │ │ │ │ 0/target_value,current_value |
| - │ │ │ │ │ │ │ watermarks/metric,interval_us,high,mid,low |
| - │ │ │ │ │ │ │ filters/nr_filters |
| + │ │ │ │ │ │ │ :ref:`watermarks <sysfs_watermarks>`/metric,interval_us,high,mid,low |
| + │ │ │ │ │ │ │ :ref:`filters <sysfs_filters>`/nr_filters |
| │ │ │ │ │ │ │ │ 0/type,matching,memcg_id |
| - │ │ │ │ │ │ │ stats/nr_tried,sz_tried,nr_applied,sz_applied,qt_exceeds |
| - │ │ │ │ │ │ │ tried_regions/total_bytes |
| + │ │ │ │ │ │ │ :ref:`stats <sysfs_schemes_stats>`/nr_tried,sz_tried,nr_applied,sz_applied,qt_exceeds |
| + │ │ │ │ │ │ │ :ref:`tried_regions <sysfs_schemes_tried_regions>`/total_bytes |
| │ │ │ │ │ │ │ │ 0/start,end,nr_accesses,age |
| │ │ │ │ │ │ │ │ ... |
| │ │ │ │ │ │ ... |
| │ │ │ │ ... |
| │ │ ... |
| |
| +.. _sysfs_root: |
| + |
| Root |
| ---- |
| |
| @@ -104,6 +108,8 @@ has one directory named ``admin``. The |
| privileged user space programs' control of DAMON. User space tools or daemons |
| having the root permission could use this directory. |
| |
| +.. _sysfs_kdamonds: |
| + |
| kdamonds/ |
| --------- |
| |
| @@ -154,6 +160,8 @@ If the state is ``on``, reading ``pid`` |
| ``contexts`` directory contains files for controlling the monitoring contexts |
| that this kdamond will execute. |
| |
| +.. _sysfs_contexts: |
| + |
| kdamonds/<N>/contexts/ |
| ---------------------- |
| |
| @@ -214,6 +222,8 @@ writing to and rading from the files. |
| For more details about the intervals and monitoring regions range, please refer |
| to the Design document (:doc:`/mm/damon/design`). |
| |
| +.. _sysfs_targets: |
| + |
| contexts/<N>/targets/ |
| --------------------- |
| |
| @@ -221,6 +231,8 @@ In the beginning, this directory has onl |
| number (``N``) to the file creates the number of child directories named ``0`` |
| to ``N-1``. Each directory represents each monitoring target. |
| |
| +.. _sysfs_target: |
| + |
| targets/<N>/ |
| ------------ |
| |
| @@ -255,6 +267,8 @@ In the beginning, this directory has onl |
| number (``N``) to the file creates the number of child directories named ``0`` |
| to ``N-1``. Each directory represents each initial monitoring target region. |
| |
| +.. _sysfs_region: |
| + |
| regions/<N>/ |
| ------------ |
| |
| @@ -265,6 +279,8 @@ region by writing to and reading from th |
| Each region should not overlap with others. ``end`` of directory ``N`` should |
| be equal or smaller than ``start`` of directory ``N+1``. |
| |
| +.. _sysfs_schemes: |
| + |
| contexts/<N>/schemes/ |
| --------------------- |
| |
| @@ -276,6 +292,8 @@ In the beginning, this directory has onl |
| number (``N``) to the file creates the number of child directories named ``0`` |
| to ``N-1``. Each directory represents each DAMON-based operation scheme. |
| |
| +.. _sysfs_scheme: |
| + |
| schemes/<N>/ |
| ------------ |
| |
| @@ -310,6 +328,8 @@ Note that support of each action depends |
| The ``apply_interval_us`` file is for setting and getting the scheme's |
| :ref:`apply_interval <damon_design_damos>` in microseconds. |
| |
| +.. _sysfs_access_pattern: |
| + |
| schemes/<N>/access_pattern/ |
| --------------------------- |
| |
| @@ -323,6 +343,8 @@ to and reading from the ``min`` and ``ma |
| ``nr_accesses``, and ``age`` directories, respectively. Note that the ``min`` |
| and the ``max`` form a closed interval. |
| |
| +.. _sysfs_quotas: |
| + |
| schemes/<N>/quotas/ |
| ------------------- |
| |
| @@ -369,6 +391,8 @@ metrics for the values. Note that users |
| ``commit_schemes_quota_goals`` to the ``state`` file of the :ref:`kdamond |
| directory <sysfs_kdamond>` to pass the feedback to DAMON. |
| |
| +.. _sysfs_watermarks: |
| + |
| schemes/<N>/watermarks/ |
| ----------------------- |
| |
| @@ -388,6 +412,8 @@ as below. |
| |
| The ``interval`` should written in microseconds unit. |
| |
| +.. _sysfs_filters: |
| + |
| schemes/<N>/filters/ |
| -------------------- |
| |
| @@ -483,6 +509,8 @@ and query-like efficient data access mon |
| latter use case, in particular, users can set the ``action`` as ``stat`` and |
| set the ``access pattern`` as their interested pattern that they want to query. |
| |
| +.. _sysfs_schemes_tried_region: |
| + |
| tried_regions/<N>/ |
| ------------------ |
| |
| _ |