From: SeongJae Park <sj@kernel.org>
Cc: linux-damon@amazon.com, damon@lists.linux.dev,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
SeongJae Park <sj@kernel.org>
Subject: [RFC PATCH 3/3] mm/damon/paddr: Support DAMOS_COLD
Date: Fri, 13 May 2022 17:00:00 +0200 [thread overview]
Message-ID: <20220513150000.25797-4-sj@kernel.org> (raw)
In-Reply-To: <20220513150000.25797-1-sj@kernel.org>
DAMOS_COLD is currently supported by the virtual address spaces
monitoring operations set (vaddr). This commit adds support of the
action to the physical address space monitoring operations set (paddr).
Using this together with hot DAMOS action, users can proactively sort
LRU lists so that performance degradation under memory pressure can be
reduced.
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/paddr.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c
index 69980b922bf4..761b1580271c 100644
--- a/mm/damon/paddr.c
+++ b/mm/damon/paddr.c
@@ -249,6 +249,22 @@ static unsigned long damon_pa_mark_accessed(struct damon_region *r)
return applied * PAGE_SIZE;
}
+static unsigned long damon_pa_cold(struct damon_region *r)
+{
+ unsigned long addr, applied = 0;
+
+ for (addr = r->ar.start; addr < r->ar.end; addr += PAGE_SIZE) {
+ struct page *page = damon_get_page(PHYS_PFN(addr));
+
+ if (!page)
+ continue;
+ deactivate_page(page);
+ put_page(page);
+ applied++;
+ }
+ return applied * PAGE_SIZE;
+}
+
static unsigned long damon_pa_apply_scheme(struct damon_ctx *ctx,
struct damon_target *t, struct damon_region *r,
struct damos *scheme)
@@ -258,6 +274,8 @@ static unsigned long damon_pa_apply_scheme(struct damon_ctx *ctx,
return damon_pa_pageout(r);
case DAMOS_HOT:
return damon_pa_mark_accessed(r);
+ case DAMOS_COLD:
+ return damon_pa_cold(r);
default:
break;
}
@@ -273,6 +291,8 @@ static int damon_pa_scheme_score(struct damon_ctx *context,
return damon_pageout_score(context, r, scheme);
case DAMOS_HOT:
return damon_hot_score(context, r, scheme);
+ case DAMOS_COLD:
+ return damon_pageout_score(context, r, scheme);
default:
break;
}
--
2.17.1
prev parent reply other threads:[~2022-05-13 15:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 14:59 [RFC PATCH 0/3] mm/damon/schemes: Extend DAMOS for Proactive LRU-lists Sorting SeongJae Park
2022-05-13 14:59 ` [RFC PATCH 1/3] mm/damon/paddr: move DAMOS_PAGEOUT handling to a separate function SeongJae Park
2022-05-13 14:59 ` [RFC PATCH 2/3] mm/damon/schemes: Support 'hot' action SeongJae Park
2022-05-13 15:00 ` SeongJae Park [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220513150000.25797-4-sj@kernel.org \
--to=sj@kernel.org \
--cc=damon@lists.linux.dev \
--cc=linux-damon@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).