Update DAMON design document for the access sample results filtering. Signed-off-by: SeongJae Park --- Documentation/mm/damon/design.rst | 42 +++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/design.rst index a21973b33bc3..9a4679de437f 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -146,12 +146,17 @@ do the access check using monitoring-purpose page fault events in a way similar to NUMA balancing hinting faults. When it is being used, ``paddr`` installs the page protection in a way similar to that of NUMA balancing hinting faults. Then the page fault handler reports the faults happend by the installed page -protection to DAMON core layer. +protection to DAMON core layer. Compared to the accessed-bit based one, this +approach gives more information to DAMON, such as the access-generated +CPU. ``paddr`` uses :ref:`accessed-bit based check ` by default, and users can change it to use this page faults based one, using :ref:`access sampling primitives -selection `. +selection `. Also, the addtional +information can be used for doing monitoring of only specific type accesses, +using :ref:`access sampling results filters +`. .. _damon_design_addr_unit: @@ -277,6 +282,39 @@ support from the operations set implementation for virtual address spaces At the moment, only exclusive use of the primitives is supported. +.. _damon_design_sampling_results_filters: + +Access Sampling Results Filter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Depending on the access sampling primitives that used, the sampling results +could inform more than whether an access is made, such as the CPU or the thread +the sampled access was made from, and whether the sampled access was for +writing or reading. By filtering the results based on the additional +information, DAMON can perform for more detailed access monitoring, such as +per-CPUs/threads or read/write-only monitoring. + +For such special types of monitoring, DAMON provides a feature called "sampling +results filter". The feature allows users to set an arbitrary number of +filters for the sampling results. Each of the filters specifies + +- a type of the additional information (``type``), +- whether it is for the sampling results of the type or all except the type + (``matching``), and +- whether it is to allow (include) or reject (exclude) consuming of the type of + sampling results. + +Each filter is applied in the order of the installation. Only sampling results +that allowed by previous filters are continue to be evaluated by the next +filters. If a sampling result is decided to be rejected by a filter, it is +just discarded and no later filter is applied. + +Below ``type`` of access sampling results filter are currently supported. + +- cpumask + - Whether the sampled access was generated by a cpu that included in a + given cpumask. + .. _damon_design_age_tracking: -- 2.47.3