Lines Matching full:scheme

321 	struct damos *scheme;  in damon_new_scheme()  local
323 scheme = kmalloc(sizeof(*scheme), GFP_KERNEL); in damon_new_scheme()
324 if (!scheme) in damon_new_scheme()
326 scheme->pattern = *pattern; in damon_new_scheme()
327 scheme->action = action; in damon_new_scheme()
328 scheme->apply_interval_us = apply_interval_us; in damon_new_scheme()
334 scheme->next_apply_sis = 0; in damon_new_scheme()
335 INIT_LIST_HEAD(&scheme->filters); in damon_new_scheme()
336 scheme->stat = (struct damos_stat){}; in damon_new_scheme()
337 INIT_LIST_HEAD(&scheme->list); in damon_new_scheme()
339 scheme->quota = *(damos_quota_init_priv(quota)); in damon_new_scheme()
341 scheme->wmarks = *wmarks; in damon_new_scheme()
342 scheme->wmarks.activated = true; in damon_new_scheme()
344 return scheme; in damon_new_scheme()
824 * @s: The scheme to be applied.
826 * If a quota of a scheme has exceeded in a quota charge window, the scheme's
828 * regions. To avoid applying the scheme action to only already applied
829 * regions, DAMON skips applying the scheme action to the regions that charged
1396 * Returns zero if the scheme is active. Else, returns time to wait for next
1399 static unsigned long damos_wmark_wait_us(struct damos *scheme) in damos_wmark_wait_us() argument
1403 if (scheme->wmarks.metric == DAMOS_WMARK_NONE) in damos_wmark_wait_us()
1406 metric = damos_wmark_metric_value(scheme->wmarks.metric); in damos_wmark_wait_us()
1408 if (metric > scheme->wmarks.high || scheme->wmarks.low > metric) { in damos_wmark_wait_us()
1409 if (scheme->wmarks.activated) in damos_wmark_wait_us()
1410 pr_debug("deactivate a scheme (%d) for %s wmark\n", in damos_wmark_wait_us()
1411 scheme->action, in damos_wmark_wait_us()
1412 metric > scheme->wmarks.high ? in damos_wmark_wait_us()
1414 scheme->wmarks.activated = false; in damos_wmark_wait_us()
1415 return scheme->wmarks.interval; in damos_wmark_wait_us()
1419 if ((scheme->wmarks.high >= metric && metric >= scheme->wmarks.mid) && in damos_wmark_wait_us()
1420 !scheme->wmarks.activated) in damos_wmark_wait_us()
1421 return scheme->wmarks.interval; in damos_wmark_wait_us()
1423 if (!scheme->wmarks.activated) in damos_wmark_wait_us()
1424 pr_debug("activate a scheme (%d)\n", scheme->action); in damos_wmark_wait_us()
1425 scheme->wmarks.activated = true; in damos_wmark_wait_us()
1471 struct damos *scheme; in kdamond_init_intervals_sis() local
1478 damon_for_each_scheme(scheme, ctx) { in kdamond_init_intervals_sis()
1479 apply_interval = scheme->apply_interval_us ? in kdamond_init_intervals_sis()
1480 scheme->apply_interval_us : ctx->attrs.aggr_interval; in kdamond_init_intervals_sis()
1481 scheme->next_apply_sis = apply_interval / sample_interval; in kdamond_init_intervals_sis()