Lines Matching +full:monitor +full:- +full:interval +full:- +full:ms
1 /* SPDX-License-Identifier: GPL-2.0 */
18 /* Max priority score for DAMON-based operation schemes */
24 return l + prandom_u32_max(r - l); in damon_rand()
28 * struct damon_addr_range - Represents an address region of [@start, @end).
38 * struct damon_region - Represents a monitoring target region.
45 * @age is initially zero, increased for each aggregation interval, and reset
48 * region are set as region size-weighted average of those of the two regions.
62 * struct damon_target - Represents a monitoring target.
82 * enum damos_action - Represents an action of a Data Access Monitoring-based
102 * struct damos_quota - Controls the aggressiveness of the given scheme.
103 * @ms: Maximum milliseconds that the scheme can use.
105 * @reset_interval: Charge reset interval in milliseconds.
112 * &struct damos->action to large memory, DAMON allows users to set time and/or
113 * size quotas. The quotas can be set by writing non-zero values to &ms and
115 * &ms milliseconds within &reset_interval for applying the action. If the
124 * target memory regions using the &struct damon_primitive->get_scheme_score.
130 unsigned long ms; member
157 * enum damos_wmark_metric - Represents the watermark metric.
168 * struct damos_watermarks - Controls when a given scheme should be activated.
170 * @interval: Watermarks check time interval in microseconds.
178 * least every &interval microseconds and works as below.
186 unsigned long interval; member
196 * struct damos_stat - Statistics on a given scheme.
212 * struct damos - Represents a Data Access Monitoring-based Operation Scheme.
215 * @min_nr_accesses: Minimum ``->nr_accesses`` of target regions.
216 * @max_nr_accesses: Maximum ``->nr_accesses`` of target regions.
225 * For each aggregation interval, DAMON finds regions which fit in the
260 * struct damon_primitive - Monitoring primitives for given use cases.
262 * @init: Initialize primitive-internal data structures.
263 * @update: Update primitive-internal data structures.
268 * @apply_scheme: Apply a DAMON-based operation scheme.
281 * @init should initialize primitive-internal data structures. For example,
284 * @update should update the primitive-internal data structures. For example,
297 * DAMON-based operation scheme is found. It should apply the scheme's action
321 * struct damon_callback - Monitoring events notification callbacks.
340 * If any callback returns non-zero, monitoring stops.
352 * struct damon_ctx - Represents a context for each monitoring. This is the
357 * @aggr_interval: The time between monitor results aggregations.
365 * @primitive_update_interval. All time intervals are in micro-seconds.
379 * termination can also be explicitly requested by writing non-zero to
420 return container_of(r->list.next, struct damon_region, list); in damon_next_region()
425 return container_of(r->list.prev, struct damon_region, list); in damon_prev_region()
430 return list_last_entry(&t->regions_list, struct damon_region, list); in damon_last_region()
434 list_for_each_entry(r, &t->regions_list, list)
437 list_for_each_entry_safe(r, next, &t->regions_list, list)
440 list_for_each_entry(t, &(ctx)->adaptive_targets, list)
443 list_for_each_entry_safe(t, next, &(ctx)->adaptive_targets, list)
446 list_for_each_entry(s, &(ctx)->schemes, list)
449 list_for_each_entry_safe(s, next, &(ctx)->schemes, list)
462 __list_add(&r->list, &prev->list, &next->list); in damon_insert_region()
463 t->nr_regions++; in damon_insert_region()