Lines Matching +full:high +full:- +full:quality
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
99 mapping is not strictly required but could even incur a high overhead in some
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 ----------
154 To know how user-space can set the attributes via :ref:`DAMON sysfs interface
169 clears the results. This can be described in below simple pseudo-code::
200 minimum and the maximum number of regions for the trade-off.
202 This scheme, however, cannot preserve the quality of the output if the
214 monitoring quality. To keep the assumption as much as possible, DAMON
223 threshold until the upper-limit of the number of regions is met, or 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.
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
263 User-space can get the monitoring results via DAMON sysfs interface and/or
290 monitoring purpose too high. For such cases, the target amount of access to
316 Based on the manual tuning guide, DAMON provides more intuitive knob-based
330 Monitoring Intervals Auto-tuning
338 DAMON-observed access events to the theoretical maximum amount of the events
342 The DAMON-observed access events are calculated in byte granularity based on
366 That is, assumes 4% (20% of 20%) DAMON-observed access events ratio (source)
369 To know how user-space can use this feature via :ref:`DAMON sysfs interface
377 -----------------
379 One common purpose of data access monitoring is access-aware system efficiency
386 using THP for memory regions that are larger than 2 MiB and showing a high
389 One straightforward approach for such schemes would be profile-guided
406 works, DAMON provides a feature called Data Access Monitoring-based Operation
407 Schemes (DAMOS). It lets users specify their desired schemes at a high
409 the access pattern of interest, and applies the user-desired operation actions
410 to the regions, for every user-specified time interval called
413 To know how user-space can set ``apply_interval`` via :ref:`DAMON sysfs
440 - ``willneed``: Call ``madvise()`` for the region with ``MADV_WILLNEED``.
442 - ``cold``: Call ``madvise()`` for the region with ``MADV_COLD``.
444 - ``pageout``: Reclaim the region.
446 - ``hugepage``: Call ``madvise()`` for the region with ``MADV_HUGEPAGE``.
448 - ``nohugepage``: Call ``madvise()`` for the region with ``MADV_NOHUGEPAGE``.
450 - ``lru_prio``: Prioritize the region on its LRU lists.
452 - ``lru_deprio``: Deprioritize the region on its LRU lists.
454 - ``migrate_hot``: Migrate the regions prioritizing warmer regions.
456 - ``migrate_cold``: Migrate the regions prioritizing colder regions.
458 - ``stat``: Do nothing but count the statistics.
465 To know how user-space can set the action via :ref:`DAMON sysfs interface
482 To know how user-space can set the access pattern via :ref:`DAMON sysfs
492 DAMOS upper-bound overhead control feature. DAMOS could incur high overhead if
500 To mitigate that situation, DAMOS provides an upper-bound overhead control
503 the action can be applied within a user-specified time duration.
505 To know how user-space can set the basic quotas via :ref:`DAMON sysfs interface
517 prioritizes regions and applies the action to only regions having high enough
521 rarely accessed (colder) memory regions would be prioritized for page-out
536 To know how user-space can set the prioritization weights via :ref:`DAMON sysfs
543 Aim-oriented Feedback-driven Auto-tuning
546 Automatic feedback-driven quota tuning. Instead of setting the absolute quota
554 ``target_value``, ``current_value`` and ``nid``. The auto-tuning mechanism
558 - ``user_input``: User-provided value. Users could use any metric that they
564 - ``some_mem_psi_us``: System-wide ``some`` memory pressure stall information
567 set by users at the initial time. In other words, DAMOS does self-feedback.
568 - ``node_mem_used_bp``: Specific NUMA node's used memory ratio in bp (1/10,000).
569 - ``node_mem_free_bp``: Specific NUMA node's free memory ratio in bp (1/10,000).
574 To know how user-space can set the tuning goal metric, the target value, and/or
593 namely high, middle, and low. If the value of the metric becomes above the
594 high watermark or below the low watermark, the scheme is deactivated. If the
600 To know how user-space can set the watermarks via :ref:`DAMON sysfs interface
610 Non-access pattern-based target memory regions filtering. If users run
611 self-written programs or have good profiling tools, they could know something
615 have a list of latency-critical processes.
621 - a type of memory (``type``),
622 - whether it is for the memory of the type or all except the type
624 - whether it is to allow (include) or reject (exclude) applying
630 case of the core layer-handled filters, the memory regions that excluded by the
632 a memory regions is filtered by an operations set layer-handled filter, it is
648 young or not, since it matches with the first allow-filter. If the page is
650 second reject-filter blocks it. If the page is neither anonymous nor young,
656 - Core layer handled
657 - addr
658 - Applied to pages that belonging to a given address range.
659 - target
660 - Applied to pages that belonging to a given DAMON monitoring target.
661 - Operations layer handled, supported by only ``paddr`` operations set.
662 - anon
663 - Applied to pages that containing data that not stored in files.
664 - active
665 - Applied to active pages.
666 - memcg
667 - Applied to pages that belonging to a given cgroup.
668 - young
669 - Applied to pages that are accessed after the last access check from the
671 - hugepage_size
672 - Applied to pages that managed in a given size range.
673 - unmapped
674 - Applied to pages that unmapped.
676 To know how user-space can set the filters via :ref:`DAMON sysfs interface
691 - ``nr_tried``: Total number of regions that the scheme is tried to be applied.
692 - ``sz_trtied``: Total size of regions that the scheme is tried to be applied.
693 - ``sz_ops_filter_passed``: Total bytes that passed operations set
694 layer-handled DAMOS filters.
695 - ``nr_applied``: Total number of regions that the scheme is applied.
696 - ``sz_applied``: Total size of regions that the scheme is applied.
697 - ``qt_exceeds``: Total number of times the quota of the scheme has exceeded.
719 To know how user-space can read the stats via :ref:`DAMON sysfs interface
736 ---------------------------------
738 The programming interface for kernel space data access-aware applications.
741 access-aware applications using DAMON's core features. For this, DAMON exposes
756 for general purpose DAMON control and special purpose data access-aware system
758 user space. The user space can build their efficient data access-aware
763 --------------------------------------
772 requested via the DAMON API, and return the results to the user-space.
776 user space tools. One such Python-written user space tool is available at
779 (https://packages.fedoraproject.org/pkgs/python-damo/damo/).
786 Special-Purpose Access-aware Kernel Modules
787 -------------------------------------------
792 runtime. For each special-purpose system-wide data access-aware system
795 extended for boot-time and even compile time control. Default values of DAMON
803 (:doc:`/admin-guide/mm/damon/reclaim` and
804 :doc:`/admin-guide/mm/damon/lru_sort`).