mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 00:52:01 +00:00
Docs/mm/damon/design: add sections for advanced features of DAMOS
Add sections for advanced features of DAMOS including quotas, prioritization, watermarks, and filters of DAMOS on the design document. Link: https://lkml.kernel.org/r/20230525214314.5204-9-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
2dc4e6a509
commit
b138878609
@ -272,3 +272,89 @@ the access frequency, and the age. Users can describe their access pattern of
|
||||
interest by setting minimum and maximum values of the three properties. If a
|
||||
region's three properties are in the ranges, DAMOS classifies it as one of the
|
||||
regions that the scheme is having an interest in.
|
||||
|
||||
|
||||
Quotas
|
||||
~~~~~~
|
||||
|
||||
DAMOS upper-bound overhead control feature. DAMOS could incur high overhead if
|
||||
the target access pattern is not properly tuned. For example, if a huge memory
|
||||
region having the access pattern of interest is found, applying the scheme's
|
||||
action to all pages of the huge region could consume unacceptably large system
|
||||
resources. Preventing such issues by tuning the access pattern could be
|
||||
challenging, especially if the access patterns of the workloads are highly
|
||||
dynamic.
|
||||
|
||||
To mitigate that situation, DAMOS provides an upper-bound overhead control
|
||||
feature called quotas. It lets users specify an upper limit of time that DAMOS
|
||||
can use for applying the action, and/or a maximum bytes of memory regions that
|
||||
the action can be applied within a user-specified time duration.
|
||||
|
||||
|
||||
Prioritization
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
A mechanism for making a good decision under the quotas. When the action
|
||||
cannot be applied to all regions of interest due to the quotas, DAMOS
|
||||
prioritizes regions and applies the action to only regions having high enough
|
||||
priorities so that it will not exceed the quotas.
|
||||
|
||||
The prioritization mechanism should be different for each action. For example,
|
||||
rarely accessed (colder) memory regions would be prioritized for page-out
|
||||
scheme action. In contrast, the colder regions would be deprioritized for huge
|
||||
page collapse scheme action. Hence, the prioritization mechanisms for each
|
||||
action are implemented in each DAMON operations set, together with the actions.
|
||||
|
||||
Though the implementation is up to the DAMON operations set, it would be common
|
||||
to calculate the priority using the access pattern properties of the regions.
|
||||
Some users would want the mechanisms to be personalized for their specific
|
||||
case. For example, some users would want the mechanism to weigh the recency
|
||||
(``age``) more than the access frequency (``nr_accesses``). DAMOS allows users
|
||||
to specify the weight of each access pattern property and passes the
|
||||
information to the underlying mechanism. Nevertheless, how and even whether
|
||||
the weight will be respected are up to the underlying prioritization mechanism
|
||||
implementation.
|
||||
|
||||
|
||||
Watermarks
|
||||
~~~~~~~~~~
|
||||
|
||||
Conditional DAMOS (de)activation automation. Users might want DAMOS to run
|
||||
only under certain situations. For example, when a sufficient amount of free
|
||||
memory is guaranteed, running a scheme for proactive reclamation would only
|
||||
consume unnecessary system resources. To avoid such consumption, the user would
|
||||
need to manually monitor some metrics such as free memory ratio, and turn
|
||||
DAMON/DAMOS on or off.
|
||||
|
||||
DAMOS allows users to offload such works using three watermarks. It allows the
|
||||
users to configure the metric of their interest, and three watermark values,
|
||||
namely high, middle, and low. If the value of the metric becomes above the
|
||||
high watermark or below the low watermark, the scheme is deactivated. If the
|
||||
metric becomes below the mid watermark but above the low watermark, the scheme
|
||||
is activated. If all schemes are deactivated by the watermarks, the monitoring
|
||||
is also deactivated. In this case, the DAMON worker thread only periodically
|
||||
checks the watermarks and therefore incurs nearly zero overhead.
|
||||
|
||||
|
||||
Filters
|
||||
~~~~~~~
|
||||
|
||||
Non-access pattern-based target memory regions filtering. If users run
|
||||
self-written programs or have good profiling tools, they could know something
|
||||
more than the kernel, such as future access patterns or some special
|
||||
requirements for specific types of memory. For example, some users may know
|
||||
only anonymous pages can impact their program's performance. They can also
|
||||
have a list of latency-critical processes.
|
||||
|
||||
To let users optimize DAMOS schemes with such special knowledge, DAMOS provides
|
||||
a feature called DAMOS filters. The feature allows users to set an arbitrary
|
||||
number of filters for each scheme. Each filter specifies the type of target
|
||||
memory, and whether it should exclude the memory of the type (filter-out), or
|
||||
all except the memory of the type (filter-in).
|
||||
|
||||
As of this writing, anonymous page type and memory cgroup type are supported by
|
||||
the feature. Some filter target types can require additional arguments. For
|
||||
example, the memory cgroup filter type asks users to specify the file path of
|
||||
the memory cgroup for the filter. Hence, users can apply specific schemes to
|
||||
only anonymous pages, non-anonymous pages, pages of specific cgroups, all pages
|
||||
excluding those of specific cgroups, and any combination of those.
|
||||
|
Loading…
Reference in New Issue
Block a user