The patch titled Subject: Docs/mm/damon/design: add 'statistics' section has been added to the -mm mm-unstable branch. Its filename is docs-mm-damon-design-add-statistics-section.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/docs-mm-damon-design-add-statistics-section.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: SeongJae Park <sj@xxxxxxxxxx> Subject: Docs/mm/damon/design: add 'statistics' section Date: Mon, 6 Jan 2025 11:33:47 -0800 DAMOS stats are important feature for tuning of DAMOS-based access-aware system operation, and efficient access pattern monitoring. But not well documented on the design document. Add a section on the document. Link: https://lkml.kernel.org/r/20250106193401.109161-3-sj@xxxxxxxxxx Signed-off-by: SeongJae Park <sj@xxxxxxxxxx> Cc: Jonathan Corbet <corbet@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Documentation/mm/damon/design.rst | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) --- a/Documentation/mm/damon/design.rst~docs-mm-damon-design-add-statistics-section +++ a/Documentation/mm/damon/design.rst @@ -539,6 +539,44 @@ To know how user-space can set the water <sysfs_interface>`, refer to :ref:`filters <sysfs_filters>` part of the documentation. +Statistics +~~~~~~~~~~ + +The statistics of DAMOS behaviors that designed to help monitoring, tuning and +debugging of DAMOS. + +DAMOS accounts below statistics for each scheme, from the beginning of the +scheme's execution. + +- ``nr_tried``: Total number of regions that the scheme is tried to be applied. +- ``sz_trtied``: Total size of regions that the scheme is tried to be applied. +- ``nr_applied``: Total number of regions that the scheme is applied. +- ``sz_applied``: Total size of regions that the scheme is applied. +- ``qt_exceeds``: Total number of times the quota of the scheme has exceeded. + +"A scheme is tried to be applied to a region" means DAMOS core logic determined +the region is eligible to apply the scheme's :ref:`action +<damon_design_damos_action>`. The :ref:`access pattern +<damon_design_damos_access_pattern>`, :ref:`quotas +<damon_design_damos_quotas>`, :ref:`watermarks +<damon_design_damos_watermarks>`, and :ref:`filters +<damon_design_damos_filters>` that handled on core logic could affect this. +The core logic will only ask the underlying :ref:`operation set +<damon_operations_set>` to do apply the action to the region, so whether the +action is really applied or not is unclear. That's why it is called "tried". + +"A scheme is applied to a region" means the :ref:`operation set +<damon_operations_set>` has applied the action to at least a part of the +region. The :ref:`filters <damon_design_damos_filters>` that handled by the +operation set, and the types of the :ref:`action <damon_design_damos_action>` +and the pages of the region can affect this. For example, if a filter is set +to exclude anonymous pages and the region has only anonymous pages, or if the +action is ``pageout`` while all pages of the region are unreclaimable, applying +the action to the region will fail. + +To know how user-space can read the stats via :ref:`DAMON sysfs interface +<sysfs_interface>`, refer to :ref:s`stats <sysfs_stats>` part of the +documentation. Regions Walking ~~~~~~~~~~~~~~~ _ Patches currently in -mm which might be from sj@xxxxxxxxxx are samples-add-a-skeleton-of-a-sample-damon-module-for-working-set-size-estimation.patch samples-damon-wsse-start-and-stop-damon-as-the-user-requests.patch samples-damon-wsse-implement-working-set-size-estimation-and-logging.patch samples-damon-introduce-a-skeleton-of-a-smaple-damon-module-for-proactive-reclamation.patch samples-damon-prcl-implement-schemes-setup.patch replace-free-hugepage-folios-after-migration-fix-2.patch docs-admin-guide-mm-damon-usage-remove-damon-debugfs-interface-documentation.patch docs-mm-damon-design-update-for-removal-of-damon-debugfs-interface.patch selftests-damon-config-remove-configs-for-damon-debugfs-interface-selftests.patch selftests-damon-remove-tests-for-damon-debugfs-interface.patch kunit-configs-remove-configs-for-damon-debugfs-interface-tests.patch mm-damon-remove-damon-debugfs-interface-kunit-tests.patch mm-damon-remove-damon-debugfs-interface.patch mm-damon-sysfs-schemes-remove-unnecessary-schemes-existence-check-in-damon_sysfs_schemes_clear_regions.patch mm-damon-sysfs-handle-clear_schemes_tried_regions-from-damon-sysfs-context.patch mm-damon-core-introduce-damon_call.patch mm-damon-sysfs-use-damon_call-for-update_schemes_stats.patch mm-damon-sysfs-use-damon_call-for-commit_schemes_quota_goals.patch mm-damon-sysfs-use-damon_call-for-update_schemes_effective_quotas.patch mm-damon-core-implement-damos_walk.patch docs-mm-damon-design-document-damos-regions-walking.patch mm-damon-sysfs-use-damos_walk-for-update_schemes_tried_bytesregions.patch mm-damon-sysfs-remove-unused-code-for-schemes-tried-regions-update.patch mm-damon-clarify-trying-vs-applying-on-damos_stat-kernel-doc-comment.patch docs-mm-damon-design-add-statistics-section.patch docs-admin-guide-mm-damon-usage-link-damos-stat-design-doc.patch mm-damon-ask-apply_scheme-to-report-filter-passed-region-internal-bytes.patch mm-damon-paddr-report-filter-passed-bytes-back-for-normal-actions.patch mm-damon-paddr-report-filter-passed-bytes-back-for-damos_stat-action.patch mm-damon-core-implement-per-scheme-ops-handled-filter-passed-bytes-stat.patch mm-damon-syfs-schemes-implement-per-scheme-filter-passed-bytes-stat.patch docs-mm-damon-design-document-sz_ops_filter_passed.patch docs-admin-guide-mm-damon-usage-document-sz_ops_filter_passed.patch docs-abi-damon-document-per-scheme-filter-passed-bytes-stat-file.patch mm-damon-core-pass-per-region-filter-passed-bytes-to-damos_walk_control-walk_fn.patch mm-damon-sysfs-schemes-expose-per-region-filter-passed-bytes.patch docs-mm-damon-design-document-per-region-sz_filter_passed-stat.patch docs-admin-guide-mm-damon-usage-document-sz_filtered_out-of-scheme-tried-region-directories.patch docs-abi-damon-document-per-region-damos-filter-passed-bytes-stat-file.patch