Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp341071pxb; Thu, 21 Apr 2022 00:26:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyv4SSw/WCFFQaroGgeTcT+hHNAv4fo9mPI66szHDxoM1eYPYg9lLWS7BNMVuWJth6TFUXV X-Received: by 2002:a05:6402:7d3:b0:41d:9152:cad with SMTP id u19-20020a05640207d300b0041d91520cadmr27992560edy.370.1650525968959; Thu, 21 Apr 2022 00:26:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650525968; cv=none; d=google.com; s=arc-20160816; b=PxycQgxsi0eUPh+BeVyqdi4rDCV54faCkC/r0Rm4QRs0xL5VZJegO/2HL/VKTjzIHw WG8UMGRnpfy0Gc4ld2qCJgeKXpcnkPmWK6hZeQWtEJobBwPm/naVxjDDZ80U4kYJlssx Pox4AlmgBiwq88KaptFRzoH1GKzrIHiwYyMM5iX5hNd84DGEoFuHBH9w0No/YXqyuTTG Y8GeJagaHUSA3tkM1EcmDddG00gYwjyq85lqcynHQYkPEIYplytc+mg8tjmZ1CdNMp5U t0W22oaR5miKcLzAXgBbCTfKILvoGvN6QPTiuitVhrLY7IuxGxYkc3jxnZtb/OmpxYkk SBfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=ECM2wc8JXCnTE6oGrB79vBtHjRr5KdZQitQE/whOnY4=; b=ue+fbWYImKaxWTPszU1SeSc+Grbntf4OGplkVYkm8n2aLRbDsVRoMgmLV8OGQC5NQI ojG++h+uX+Hb1EBlViGzPtOcJ0i6TwRZznVb7rMhuIYCjBx6oM+HkcQl131XpUMLddTL UqoqREl13Owt7WVp6kDj+gOeJI8YiSc2JZjZGHXq36Lk+rLNUKFgdxgPrWRe8/eFWk72 5XrBJkI9v43OTuMgr6IhgUBXUSKTFGr4/hcWCMNPh9rHpjRy1jyqRaUXNbzdf6hFoQuO eo/UCtrFgc3GbKtdhvBcumVtYE6oMoD2JA7gK1ujBeYbHqLLqApO+6j5Ld997lNtbX0w aNmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=RzDioNeI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k12-20020a1709063e0c00b006e89f4793e2si3464305eji.71.2022.04.21.00.25.45; Thu, 21 Apr 2022 00:26:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=RzDioNeI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1383257AbiDTXiA (ORCPT + 99 others); Wed, 20 Apr 2022 19:38:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383253AbiDTXh6 (ORCPT ); Wed, 20 Apr 2022 19:37:58 -0400 Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45EB815827 for ; Wed, 20 Apr 2022 16:35:11 -0700 (PDT) Received: by mail-yb1-xb2b.google.com with SMTP id x39so5690340ybd.8 for ; Wed, 20 Apr 2022 16:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ECM2wc8JXCnTE6oGrB79vBtHjRr5KdZQitQE/whOnY4=; b=RzDioNeIShP/yGG2gscLGRAYk74YFjGOnKh3wdQyInMM7qMEjF631j27pEt+fjfopF bowM2rAIarYf0AGrONT1SjeUWU4kHgF1dTuca4WilRqnxbYec6UR9IcRdtJcj3p3Lr0m ZMuJPlZ9AFh0xKtPP4KJfH66OJvkFLymCb4FOSkFwvJ8W7aGowoJTe2vDKX9NwNXRj4I /URdjyeLiD87v+u1nGMwcY0B7zpGNqiOsMEuBbcBufSt/IxtmvYr9Y1Y6vrjxNDV3dNi m/VZh9PbkVtI6j164Doubmqg/yU0zdY5nc1Ml6TmbK6KmjoWNIviae2ETBEh4h4K6VlS KvLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ECM2wc8JXCnTE6oGrB79vBtHjRr5KdZQitQE/whOnY4=; b=aC++7EBVKeWGEOqbuFDiGNWY9/Gsww2yNWQYD4KNP3NGXUsEjt4nDZdb53zopTGl2f jo2l2Wh+JDU+mCCCdLUYWO1h7WTY/Cb6Wv3Chyd7MtJFnJOCzTN1rYGxhN67TNig0BBs d4BvYkIR0+mABcIc6t+GN+2bOaQyVvz0VRzA+t6to4w01EXOgz3ykBfTrEBpT+ikKeFp i0C1uabxLoudb7dYHt3XBfc9k5Hc3Dr1mi+1wt5fdNYKDIOJifgp1wc7UttiWG3oKiZE nDiEvRc1PKmZmm2IHjeTl1e8ufyZy8kJzWQdrVBpQHudU0SDaExYxR0017pm57mPn8Ji oVZw== X-Gm-Message-State: AOAM532K41WNBE1Kn5cTJ15elFUysULeu/0zXBDgjbyUuWtIZ2SHbHVQ V4DWOb0GJwjPH5LaMbNipeVO/mBBQXc+z3sdrdm92g== X-Received: by 2002:a05:6902:389:b0:633:31c1:d0f7 with SMTP id f9-20020a056902038900b0063331c1d0f7mr21883274ybs.543.1650497710318; Wed, 20 Apr 2022 16:35:10 -0700 (PDT) MIME-Version: 1.0 References: <20220420224356.322697-1-tuhailong@gmail.com> In-Reply-To: <20220420224356.322697-1-tuhailong@gmail.com> From: Suren Baghdasaryan Date: Wed, 20 Apr 2022 16:34:59 -0700 Message-ID: Subject: Re: [PATCH v2] mm/damon: Fix the timer always stays active To: Hailong Tu Cc: Andrew Morton , sj@kernel.org, Linus Torvalds , Greg Kroah-Hartman , linux-mm , LKML , tuhailong@oppo.com, lichunpeng@oppo.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 20, 2022 at 3:46 PM Hailong Tu wrote: > > The timer stays active even if the reclaim mechanism is never enabled. > It is unnecessary overhead can be completely avoided by using module_param_call() for enabled flag. > > Signed-off-by: Hailong Tu > --- > mm/damon/reclaim.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/mm/damon/reclaim.c b/mm/damon/reclaim.c > index e34c4d0c4d93..389c4be4f62b 100644 > --- a/mm/damon/reclaim.c > +++ b/mm/damon/reclaim.c > @@ -28,7 +28,6 @@ > * this. > */ > static bool enabled __read_mostly; > -module_param(enabled, bool, 0600); > > /* > * Time threshold for cold memory regions identification in microseconds. > @@ -358,11 +357,32 @@ static void damon_reclaim_timer_fn(struct work_struct *work) > enabled = last_enabled; > } > > - schedule_delayed_work(&damon_reclaim_timer, > + if (enabled) > + schedule_delayed_work(&damon_reclaim_timer, > msecs_to_jiffies(ENABLE_CHECK_INTERVAL_MS)); > } > static DECLARE_DELAYED_WORK(damon_reclaim_timer, damon_reclaim_timer_fn); > > +static int enabled_show(char *buffer, const struct kernel_param *kp) > +{ > + return sprintf(buffer, "%c\n", enabled ? 'Y' : 'N'); > +} > + > +static int enabled_store(const char *val, > + const struct kernel_param *kp) > +{ > + int rc = param_set_bool(val, kp); > + > + if (rc < 0) > + return rc; > + > + if (enabled) > + schedule_delayed_work(&damon_reclaim_timer, 0); > + > + return 0; > +} > +module_param_call(enabled, enabled_store, enabled_show, &enabled, 0600); As Matthew pointed out in the previous version, you can use param_get_bool instead of enabled_show here. > + > static int damon_reclaim_after_aggregation(struct damon_ctx *c) > { > struct damos *s; > -- > 2.25.1 >