From: SeongJae Park <sj@kernel.org>
To: Jonghyeon Kim <tome01@ajou.ac.kr>
Cc: akpm@linux-foundation.org, Jonathan.Cameron@Huawei.com,
amit@kernel.org, benh@kernel.crashing.org, corbet@lwn.net,
david@redhat.com, dwmw@amazon.com, elver@google.com,
foersleo@amazon.de, gthelen@google.com, markubo@amazon.de,
rientjes@google.com, shakeelb@google.com, shuah@kernel.org,
linux-damon@amazon.com, linux-mm@kvack.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH v1 2/3] mm/damon/core: Add damon_start_one()
Date: Tue, 22 Feb 2022 09:53:28 +0000 [thread overview]
Message-ID: <20220222095328.7962-1-sj@kernel.org> (raw)
In-Reply-To: <20220218102611.31895-3-tome01@ajou.ac.kr>
Hello Jonghyeon,
On Fri, 18 Feb 2022 19:26:10 +0900 Jonghyeon Kim <tome01@ajou.ac.kr> wrote:
> damon_start() function is designed to start multiple damon monitoring
> contexts. But, sometimes we need to start monitoring one context.
> Although __damon_start() could be considered to start for one monitoring
> context, it seems reasonable to adopt a new function that does not need
> to handle 'damon_lock' from the caller.
>
> Signed-off-by: Jonghyeon Kim <tome01@ajou.ac.kr>
> ---
> include/linux/damon.h | 1 +
> mm/damon/core.c | 25 +++++++++++++++++++++++++
> 2 files changed, 26 insertions(+)
>
> diff --git a/include/linux/damon.h b/include/linux/damon.h
> index c0adf1566603..069577477662 100644
> --- a/include/linux/damon.h
> +++ b/include/linux/damon.h
> @@ -511,6 +511,7 @@ int damon_register_ops(struct damon_operations *ops);
> int damon_select_ops(struct damon_ctx *ctx, enum damon_ops_id id);
>
> int damon_start(struct damon_ctx **ctxs, int nr_ctxs);
> +int damon_start_one(struct damon_ctx *ctx);
> int damon_stop(struct damon_ctx **ctxs, int nr_ctxs);
>
> #endif /* CONFIG_DAMON */
> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index 290c9c0535ee..e43f138a3489 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c
> @@ -466,6 +466,31 @@ int damon_start(struct damon_ctx **ctxs, int nr_ctxs)
> return err;
> }
>
> +/**
> + * damon_start_one() - Starts the monitorings for one context.
> + * @ctx: monitoring context
> + *
> + * This function starts one monitoring thread for only one monitoring context
> + * handling damon_lock.
> + *
> + * Return: 0 on success, negative error code otherwise.
> + */
> +int damon_start_one(struct damon_ctx *ctx)
> +{
> + int err = 0;
> +
> + mutex_lock(&damon_lock);
> + err = __damon_start(ctx);
> + if (err) {
> + mutex_unlock(&damon_lock);
> + return err;
> + }
> + nr_running_ctxs++;
> + mutex_unlock(&damon_lock);
> +
> + return err;
> +}
> +
IMHO, this looks like an unnecessary duplication of code. Unless this is
needed for a real usecase, this change might unnecessarily make the code only a
little bit more complicated. And to my understanding of the next patch, this
is not really needed for this patchset. I will left comments on the patch. If
I'm missing something, please clarify why this is really needed.
Furthermore, damon_start() starts a set of DAMON contexts in exclusive manner,
to ensure there will be no interference. This patch breaks the assumption.
That is, contexts that started with damon_start() could be interfered by other
contexts that started with damon_start_one(). I have a plan to make
damon_start() also work for non-exclusive contexts group[1], though.
[1] https://lore.kernel.org/linux-mm/20220217161938.8874-3-sj@kernel.org/
Thanks,
SJ
> /*
> * __damon_stop() - Stops monitoring of given context.
> * @ctx: monitoring context
> --
> 2.17.1
>
next prev parent reply other threads:[~2022-02-22 9:53 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-18 10:26 [RFC PATCH v1 0/3] Rebase DAMON_RECALIM for NUMA system Jonghyeon Kim
2022-02-18 10:26 ` [RFC PATCH v1 1/3] mm/damon: Rebase damos watermarks for NUMA systems Jonghyeon Kim
2022-02-22 9:53 ` SeongJae Park
[not found] ` <20220223051056.GA3502@swarm08>
2022-02-23 7:10 ` Jonghyeon Kim
2022-02-18 10:26 ` [RFC PATCH v1 2/3] mm/damon/core: Add damon_start_one() Jonghyeon Kim
2022-02-22 9:53 ` SeongJae Park [this message]
[not found] ` <20220223051113.GA3535@swarm08>
2022-02-23 7:11 ` Jonghyeon Kim
2022-02-18 10:26 ` [RFC PATCH v1 3/3] mm/damon/reclaim: Add per NUMA node proactive reclamation by DAMON_RECLAIM Jonghyeon Kim
2022-02-22 9:53 ` SeongJae Park
[not found] ` <20220223051127.GA3588@swarm08>
2022-02-23 7:12 ` Jonghyeon Kim
2022-02-22 9:53 ` [RFC PATCH v1 0/3] Rebase DAMON_RECALIM for NUMA system SeongJae Park
[not found] ` <20220223051146.GA4530@swarm08>
2022-02-23 7:12 ` Jonghyeon Kim
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=20220222095328.7962-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=Jonathan.Cameron@Huawei.com \
--cc=akpm@linux-foundation.org \
--cc=amit@kernel.org \
--cc=benh@kernel.crashing.org \
--cc=corbet@lwn.net \
--cc=david@redhat.com \
--cc=dwmw@amazon.com \
--cc=elver@google.com \
--cc=foersleo@amazon.de \
--cc=gthelen@google.com \
--cc=linux-damon@amazon.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=markubo@amazon.de \
--cc=rientjes@google.com \
--cc=shakeelb@google.com \
--cc=shuah@kernel.org \
--cc=tome01@ajou.ac.kr \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.