summaryrefslogtreecommitdiff
path: root/mm/damon
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2024-02-19 22:44:21 +0300
committerAndrew Morton <akpm@linux-foundation.org>2024-02-24 04:48:28 +0300
commit89d347a545a704e0bd4fc61f9aea956d71bc72d2 (patch)
treed50534c0c07b27546874b56bb4920a3f20ee5e28 /mm/damon
parent9e736fdffe527b25cdd8c5b019e88681796fdb6e (diff)
downloadlinux-89d347a545a704e0bd4fc61f9aea956d71bc72d2.tar.xz
mm/damon/core: remove ->goal field of damos_quota
DAMOS quota auto-tuning feature supports static signle goal and dynamic multiple goals via DAMON kernel API, specifically via ->goal and ->goals fields of damos_quota struct, respectively. All in-tree DAMOS kernel API users are using only the dynamic multiple goals now. Remove the unsued static single goal interface. Link: https://lkml.kernel.org/r/20240219194431.159606-11-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/damon')
-rw-r--r--mm/damon/core.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index b6cd99b64e85..7b06d926c552 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1130,10 +1130,6 @@ static unsigned long damos_quota_score(struct damos_quota *quota)
struct damos_quota_goal *goal;
unsigned long highest_score = 0;
- if (quota->goal.get_score)
- highest_score = quota->goal.get_score(
- quota->goal.get_score_arg);
-
damos_for_each_quota_goal(goal, quota)
highest_score = max(highest_score,
goal->get_score(goal->get_score_arg));
@@ -1142,21 +1138,19 @@ static unsigned long damos_quota_score(struct damos_quota *quota)
}
/*
- * Called only if quota->ms, quota->sz, or quota->goal.get_score are set, or
- * quota->goals is not empty
+ * Called only if quota->ms, or quota->sz are set, or quota->goals is not empty
*/
static void damos_set_effective_quota(struct damos_quota *quota)
{
unsigned long throughput;
unsigned long esz;
- if (!quota->ms && !quota->goal.get_score &&
- list_empty(&quota->goals)) {
+ if (!quota->ms && list_empty(&quota->goals)) {
quota->esz = quota->sz;
return;
}
- if (quota->goal.get_score || !list_empty(&quota->goals)) {
+ if (!list_empty(&quota->goals)) {
unsigned long score = damos_quota_score(quota);
quota->esz_bp = damon_feed_loop_next_input(
@@ -1171,7 +1165,7 @@ static void damos_set_effective_quota(struct damos_quota *quota)
quota->total_charged_ns;
else
throughput = PAGE_SIZE * 1024;
- if (quota->goal.get_score || !list_empty(&quota->goals))
+ if (!list_empty(&quota->goals))
esz = min(throughput * quota->ms, esz);
else
esz = throughput * quota->ms;
@@ -1191,8 +1185,7 @@ static void damos_adjust_quota(struct damon_ctx *c, struct damos *s)
unsigned long cumulated_sz;
unsigned int score, max_score = 0;
- if (!quota->ms && !quota->sz && !quota->goal.get_score &&
- list_empty(&quota->goals))
+ if (!quota->ms && !quota->sz && list_empty(&quota->goals))
return;
/* New charge window starts */