mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
Docs/mm/damon/design: document for intervals auto-tuning
Document the design of DAMON sampling and aggregation intervals auto-tuning. [sj@kernel.org: fix a typo on 'intervals auto-tuning' section] Link: https://lkml.kernel.org/r/20250305182744.56125-1-sj@kernel.org Link: https://lkml.kernel.org/r/20250303221726.484227-7-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
1077605396
commit
af03edb521
|
|
@ -313,6 +313,10 @@ sufficient for the given purpose, it shouldn't be unnecessarily further
|
|||
lowered. It is recommended to be set proportional to ``aggregation interval``.
|
||||
By default, the ratio is set as ``1/20``, and it is still recommended.
|
||||
|
||||
Based on the manual tuning guide, DAMON provides more intuitive knob-based
|
||||
intervals auto tuning mechanism. Please refer to :ref:`the design document of
|
||||
the feature <damon_design_monitoring_intervals_autotuning>` for detail.
|
||||
|
||||
Refer to below documents for an example tuning based on the above guide.
|
||||
|
||||
.. toctree::
|
||||
|
|
@ -321,6 +325,48 @@ Refer to below documents for an example tuning based on the above guide.
|
|||
monitoring_intervals_tuning_example
|
||||
|
||||
|
||||
.. _damon_design_monitoring_intervals_autotuning:
|
||||
|
||||
Monitoring Intervals Auto-tuning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
DAMON provides automatic tuning of the ``sampling interval`` and ``aggregation
|
||||
interval`` based on the :ref:`the tuning guide idea
|
||||
<damon_design_monitoring_params_tuning_guide>`. The tuning mechanism allows
|
||||
users to set the aimed amount of access events to observe via DAMON within
|
||||
given time interval. The target can be specified by the user as a ratio of
|
||||
DAMON-observed access events to the theoretical maximum amount of the events
|
||||
(``access_bp``) that measured within a given number of aggregations
|
||||
(``aggrs``).
|
||||
|
||||
The DAMON-observed access events are calculated in byte granularity based on
|
||||
DAMON :ref:`region assumption <damon_design_region_based_sampling>`. For
|
||||
example, if a region of size ``X`` bytes of ``Y`` ``nr_accesses`` is found, it
|
||||
means ``X * Y`` access events are observed by DAMON. Theoretical maximum
|
||||
access events for the region is calculated in same way, but replacing ``Y``
|
||||
with theoretical maximum ``nr_accesses``, which can be calculated as
|
||||
``aggregation interval / sampling interval``.
|
||||
|
||||
The mechanism calculates the ratio of access events for ``aggrs`` aggregations,
|
||||
and increases or decrease the ``sampleing interval`` and ``aggregation
|
||||
interval`` in same ratio, if the observed access ratio is lower or higher than
|
||||
the target, respectively. The ratio of the intervals change is decided in
|
||||
proportion to the distance between current samples ratio and the target ratio.
|
||||
|
||||
The user can further set the minimum and maximum ``sampling interval`` that can
|
||||
be set by the tuning mechanism using two parameters (``min_sample_us`` and
|
||||
``max_sample_us``). Because the tuning mechanism changes ``sampling interval``
|
||||
and ``aggregation interval`` in same ratio always, the minimum and maximum
|
||||
``aggregation interval`` after each of the tuning changes can automatically set
|
||||
together.
|
||||
|
||||
The tuning is turned off by default, and need to be set explicitly by the user.
|
||||
As a rule of thumbs and the Parreto principle, 4% access samples ratio target
|
||||
is recommended. Note that Parreto principle (80/20 rule) has applied twice.
|
||||
That is, assumes 4% (20% of 20%) DAMON-observed access events ratio (source)
|
||||
to capture 64% (80% multipled by 80%) real access events (outcomes).
|
||||
|
||||
|
||||
.. _damon_design_damos:
|
||||
|
||||
Operation Schemes
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user