Lines Matching +full:monitor +full:- +full:interval +full:- +full:ms
1 .. SPDX-License-Identifier: GPL-2.0
13 The monitoring-related information including the monitoring request
14 specification and DAMON-based operation schemes are stored in a data structure
19 To know how user-space can do the configurations and start/stop DAMON, refer to
28 - :ref:`Operations Set <damon_operations_set>`: Implements fundamental
30 address-space and available set of software/hardware primitives,
31 - :ref:`Core <damon_core_logic>`: Implements core logics including monitoring
32 overhead/accuracy control and access-aware system operations on top of the
34 - :ref:`Modules <damon_modules>`: Implements kernel modules for various
49 monitoring are address-space dependent.
73 - vaddr: Monitor virtual address spaces of specific processes
74 - fvaddr: Monitor fixed virtual address ranges
75 - paddr: Monitor the physical address space of the system
77 To know how user-space can do the configuration via :ref:`DAMON sysfs interface
84 VMA-based Target Address Range Construction
85 -------------------------------------------
95 Only small parts in the super-huge virtual address space of the processes are
107 heap and the uppermost mmap()-ed region, and the gap between the lowermost
108 mmap()-ed region and the stack in most of the cases. Because these gaps are
110 to make a reasonable trade-off. Below shows this in detail::
114 <uppermost mmap()-ed region>
115 (small mmap()-ed regions and munmap()-ed regions)
116 <lowermost mmap()-ed region>
121 PTE Accessed-bit Based Access Check
122 -----------------------------------
125 Accessed-bit for basic access checks. Only one difference is the way of
147 ----------
150 monitoring attributes, ``sampling interval``, ``aggregation interval``,
151 ``update interval``, ``minimum number of regions``, and ``maximum number of
154 To know how user-space can set the attributes via :ref:`DAMON sysfs interface
164 ``sampling interval`` and ``aggregation interval``. In detail, DAMON checks
165 access to each page per ``sampling interval`` and aggregates the results. In
167 ``aggregation interval`` passes, DAMON calls callback functions that previously
169 clears the results. This can be described in below simple pseudo-code::
180 sleep(sampling interval)
195 interval``, DAMON randomly picks one page in each region, waits for one
196 ``sampling interval``, checks whether the page is accessed meanwhile, and
200 minimum and the maximum number of regions for the trade-off.
217 For each ``aggregation interval``, it compares the access frequencies
223 threshold until the upper-limit of the number of regions is met, or the
224 threshold becomes higher than possible maximum value (``aggregation interval``
225 divided by ``sampling interval``). Then, after it reports and clears the
227 three regions if the total number of regions will not exceed the user-specified
230 In this way, DAMON provides its best-effort quality and minimal overhead while
231 keeping the bounds users set for their trade-off.
245 interval``, DAMON checks if the region's size and access frequency
255 be hot-plugged.
259 and applies it to monitoring operations-related data structures such as the
260 abstracted monitoring target memory area only for each of a user-specified time
261 interval (``update interval``).
263 User-space can get the monitoring results via DAMON sysfs interface and/or
274 In short, set ``aggregation interval`` to capture meaningful amount of accesses
277 default value of the interval, ``100ms``, turns out to be too short in many
278 cases. Set ``sampling interval`` proportional to ``aggregation interval``. By
281 ``Aggregation interval`` should be set as the time interval that the workload
282 can make an amount of accesses for the monitoring purpose, within the interval.
283 If the interval is too short, only small number of accesses are captured. As a
291 capture per ``aggregation interval`` should carefully reconsidered. Also, note
297 Hence the optimum value of ``aggregation interval`` depends on the access
298 intensiveness of the workload. The user should tune the interval based on the
302 Note that the default value of the interval is 100 milliseconds, which is too
305 ``Sampling interval`` defines the resolution of each aggregation. If it is set
309 useless in many use cases. If ``sampling interval`` is too small, it will not
313 lowered. It is recommended to be set proportional to ``aggregation interval``.
327 -----------------
329 One common purpose of data access monitoring is access-aware system efficiency
339 One straightforward approach for such schemes would be profile-guided
356 works, DAMON provides a feature called Data Access Monitoring-based Operation
359 the access pattern of interest, and applies the user-desired operation actions
360 to the regions, for every user-specified time interval called
363 To know how user-space can set ``apply_interval`` via :ref:`DAMON sysfs
390 - ``willneed``: Call ``madvise()`` for the region with ``MADV_WILLNEED``.
392 - ``cold``: Call ``madvise()`` for the region with ``MADV_COLD``.
394 - ``pageout``: Reclaim the region.
396 - ``hugepage``: Call ``madvise()`` for the region with ``MADV_HUGEPAGE``.
398 - ``nohugepage``: Call ``madvise()`` for the region with ``MADV_NOHUGEPAGE``.
400 - ``lru_prio``: Prioritize the region on its LRU lists.
402 - ``lru_deprio``: Deprioritize the region on its LRU lists.
404 - ``migrate_hot``: Migrate the regions prioritizing warmer regions.
406 - ``migrate_cold``: Migrate the regions prioritizing colder regions.
408 - ``stat``: Do nothing but count the statistics.
415 To know how user-space can set the action via :ref:`DAMON sysfs interface
432 To know how user-space can set the access pattern via :ref:`DAMON sysfs
442 DAMOS upper-bound overhead control feature. DAMOS could incur high overhead if
450 To mitigate that situation, DAMOS provides an upper-bound overhead control
453 the action can be applied within a user-specified time duration.
455 To know how user-space can set the basic quotas via :ref:`DAMON sysfs interface
471 rarely accessed (colder) memory regions would be prioritized for page-out
486 To know how user-space can set the prioritization weights via :ref:`DAMON sysfs
493 Aim-oriented Feedback-driven Auto-tuning
496 Automatic feedback-driven quota tuning. Instead of setting the absolute quota
504 ``target_value``, and ``current_value``. The auto-tuning mechanism tries to
508 - ``user_input``: User-provided value. Users could use any metric that they
514 - ``some_mem_psi_us``: System-wide ``some`` memory pressure stall information
517 set by users at the initial time. In other words, DAMOS does self-feedback.
519 To know how user-space can set the tuning goal metric, the target value, and/or
533 need to manually monitor some metrics such as free memory ratio, and turn
545 To know how user-space can set the watermarks via :ref:`DAMON sysfs interface
555 Non-access pattern-based target memory regions filtering. If users run
556 self-written programs or have good profiling tools, they could know something
560 have a list of latency-critical processes.
566 - a type of memory (``type``),
567 - whether it is for the memory of the type or all except the type
569 - whether it is to allow (include) or reject (exclude) applying
582 young or not, since it matches with the first allow-filter. If the page is
584 second reject-filter blocks it. If the page is neither anonymous nor young,
589 filter-allowed or filters evaluation stage passed. It means that installing
590 allow-filters at the end of the list makes no practical change but only
591 filters-checking overhead.
596 case of the core layer-handled filters, the memory regions that excluded by the
598 a memory regions is filtered by an operations set layer-handled filter, it is
603 - anonymous page
604 - Applied to pages that containing data that not stored in files.
605 - Handled by operations set layer. Supported by only ``paddr`` set.
606 - memory cgroup
607 - Applied to pages that belonging to a given cgroup.
608 - Handled by operations set layer. Supported by only ``paddr`` set.
609 - young page
610 - Applied to pages that are accessed after the last access check from the
612 - Handled by operations set layer. Supported by only ``paddr`` set.
613 - address range
614 - Applied to pages that belonging to a given address range.
615 - Handled by the core logic.
616 - DAMON monitoring target
617 - Applied to pages that belonging to a given DAMON monitoring target.
618 - Handled by the core logic.
620 To know how user-space can set the watermarks via :ref:`DAMON sysfs interface
635 - ``nr_tried``: Total number of regions that the scheme is tried to be applied.
636 - ``sz_trtied``: Total size of regions that the scheme is tried to be applied.
637 - ``sz_ops_filter_passed``: Total bytes that passed operations set
638 layer-handled DAMOS filters.
639 - ``nr_applied``: Total number of regions that the scheme is applied.
640 - ``sz_applied``: Total size of regions that the scheme is applied.
641 - ``qt_exceeds``: Total number of times the quota of the scheme has exceeded.
663 To know how user-space can read the stats via :ref:`DAMON sysfs interface
680 ---------------------------------
682 The programming interface for kernel space data access-aware applications.
685 access-aware applications using DAMON's core features. For this, DAMON exposes
700 for general purpose DAMON control and special purpose data access-aware system
702 user space. The user space can build their efficient data access-aware
707 --------------------------------------
716 requested via the DAMON API, and return the results to the user-space.
720 user space tools. One such Python-written user space tool is available at
723 (https://packages.fedoraproject.org/pkgs/python-damo/damo/).
730 Special-Purpose Access-aware Kernel Modules
731 -------------------------------------------
736 runtime. For each special-purpose system-wide data access-aware system
739 extended for boot-time and even compile time control. Default values of DAMON
747 (:doc:`/admin-guide/mm/damon/reclaim` and
748 :doc:`/admin-guide/mm/damon/lru_sort`).