From: SeongJae Park <sj@kernel.org>
To: SeongJae Park <sj@kernel.org>, Andrew Morton <akpm@linux-foundation.org>
Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH v2 03/11] mm/damon/reclaim: add a parameter called skip_anon for avoiding anonymous pages reclamation
Date: Wed, 30 Nov 2022 20:09:29 +0000 [thread overview]
Message-ID: <20221130200937.118005-4-sj@kernel.org> (raw)
In-Reply-To: <20221130200937.118005-1-sj@kernel.org>
In some cases, for example if users have confidence at anonymous pages
management or the swap device is too slow, users would want to avoid
DAMON_RECLAIM swapping the anonymous pages out. For such case, add yet
another DAMON_RECLAIM parameter, namely 'skip_anon'. When it is set as
'Y', DAMON_RECLAIM will avoid reclaiming anonymous pages using a DAMOS
filter.
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/reclaim.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/mm/damon/reclaim.c b/mm/damon/reclaim.c
index e82631f39481..648d2a85523a 100644
--- a/mm/damon/reclaim.c
+++ b/mm/damon/reclaim.c
@@ -98,6 +98,15 @@ module_param(monitor_region_start, ulong, 0600);
static unsigned long monitor_region_end __read_mostly;
module_param(monitor_region_end, ulong, 0600);
+/*
+ * Skip anonymous pages reclamation.
+ *
+ * If this parameter is set as ``Y``, DAMON_RECLAIM does not reclaim anonymous
+ * pages. By default, ``N``.
+ */
+static bool skip_anon __read_mostly;
+module_param(skip_anon, bool, 0600);
+
/*
* PID of the DAMON thread
*
@@ -142,6 +151,7 @@ static struct damos *damon_reclaim_new_scheme(void)
static int damon_reclaim_apply_parameters(void)
{
struct damos *scheme;
+ struct damos_filter *filter;
int err = 0;
err = damon_set_attrs(ctx, &damon_reclaim_mon_attrs);
@@ -152,6 +162,15 @@ static int damon_reclaim_apply_parameters(void)
scheme = damon_reclaim_new_scheme();
if (!scheme)
return -ENOMEM;
+ if (skip_anon) {
+ filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true);
+ if (!filter) {
+ /* Will be freed by next 'damon_set_schemes()' below */
+ damon_destroy_scheme(scheme);
+ return -ENOMEM;
+ }
+ damos_add_filter(scheme, filter);
+ }
damon_set_schemes(ctx, &scheme, 1);
return damon_set_region_biggest_system_ram_default(target,
--
2.25.1
next prev parent reply other threads:[~2022-11-30 20:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-30 20:09 [RFC PATCH v2 00/11] implement DAMOS filtering for anon pages and SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 01/11] mm/damon/core: implement damos filter SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 02/11] mm/damon/paddr: support DAMOS filters SeongJae Park
2022-11-30 20:09 ` SeongJae Park [this message]
2022-11-30 20:09 ` [RFC PATCH v2 04/11] Docs/admin-guide/damon/reclaim: document 'skip_anon' parameter SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 05/11] mm/damon/sysfs-schemes: implement filters directory SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 06/11] mm/damon/sysfs-schemes: implement filter directory SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 07/11] mm/damon/sysfs-schemes: connect filter directory and filters directory SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 08/11] mm/damon/sysfs-schemes: implement scheme filters SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 09/11] selftests/damon/sysfs: test filters directory SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 10/11] Docs/admin-guide/mm/damon/usage: document DAMOS filters of sysfs SeongJae Park
2022-11-30 20:09 ` [RFC PATCH v2 11/11] Docs/ABI/damon: document scheme filters files SeongJae Park
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=20221130200937.118005-4-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--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).