From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B92D7C83F1B for ; Thu, 17 Jul 2025 05:55:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE5B06B00A1; Thu, 17 Jul 2025 01:54:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D97AD6B00A3; Thu, 17 Jul 2025 01:54:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CD35E6B00A5; Thu, 17 Jul 2025 01:54:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C04356B00A1 for ; Thu, 17 Jul 2025 01:54:59 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 772A7C0601 for ; Thu, 17 Jul 2025 05:54:59 +0000 (UTC) X-FDA: 83672693118.03.EFDC373 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf07.hostedemail.com (Postfix) with ESMTP id D3F3A40005 for ; Thu, 17 Jul 2025 05:54:57 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=epeUbFmQ; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752731698; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gYRlhV48Gdj+Og1+O/T3wr/eIxOHm4ZZ5ZZ8ym71d2U=; b=eAxR2ooJodqt4jUl6RcKl6d8ZvWCcqYFotMaxUSTt4CoHvi1aGWFwqWcP14gl08Yk7jVbM tPd4n3TQMRqlLHsKPB6+ru7RQDi/1Y0y0vbsMquF8Q2U0AvFAuUEAqO3sgfjpOBm4etpfp XRTZK5Y4Kmfs2U5iAwp/90TPDItVbqs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752731698; a=rsa-sha256; cv=none; b=pujztye1x7hBs+dXrWpO5LfNxphBE2oDpAK+bupUQAbqvoOV4VDS+UL/phHsPqMU4X/T3n v/U+vbvXXWqmpS+VyNRP6Jn2PpGcI0GPMNoGE+rEZj55IaZYfJIsSm2s/I7ElQOxmTeQoo YmXLF63XvIOrnAP22xisLFVOXSPFUcs= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=epeUbFmQ; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id DB9DE46034; Thu, 17 Jul 2025 05:54:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 927DCC4CEF4; Thu, 17 Jul 2025 05:54:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752731696; bh=SptuOd03XywpvQiMEZUPNF5dCaw77lP6zwsmYKtYbTs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=epeUbFmQ/7+SSVln4QiwhyN1jZn33rPK4DSg8dSVxBGz87hk/upvmFtYLkVyj5vBq R+l7NeFDJvd5GJLAkTa+BlXOSoO28WutL8vQtQNYJGACPAqhIUN/cMFFSIFb/Z5c+5 /uKomWllkvdnojOjc4RZyXY7wKlS5X/lFUiLY3DiPmQg4Tk4X/bwbpiiByP+tl2Gnh RgSwXBQ1we83v60SEVAfBAOAgY9zTJiZT13CZMjDZcayFK7RRU7Po4hywBnheuQ8z6 23bzkUToskFOZ+kYVtQd8eVGK/94u/vPTOzYccbA0GWznnPF+SyLpQtROGq1sY2qh6 UyF9c7QnpBdfw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/4] mm/damon/sysfs: implement refresh_ms file internal work Date: Wed, 16 Jul 2025 22:54:46 -0700 Message-Id: <20250717055448.56976-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250717055448.56976-1-sj@kernel.org> References: <20250717055448.56976-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: rrg1adwwn3nydk6kgeyefpz1ifzkrt4z X-Rspamd-Queue-Id: D3F3A40005 X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1752731697-406737 X-HE-Meta: U2FsdGVkX1+etkLtkEvTQPWpX4KjDACqeOAujEB4oy568rbfEbGaBjYsKddMr9a+vMrWJifE5XQjzBdNTq6cD9XltA/9yt+kNw0cAM4ge05o0ZQ3qsMKOxaw4Q1ehNUFSrzp9iXOE9Yuio5RJVI8IN63Df5zlMiTRoscXcbBGKe4HGeZD4cMEh4YfkNaXc0GQRMxDgEMPnULj0oahPZQ3tt3A3wDpiu92LGh6UZcXUNrMV4BH6RbLueBeHY5U2yQlDHWZoyiDgj3bcM9eae8UoeOECDYHQhYtGfXd2ofTotnS0v5WsAGF7QmfbItdLfRWdVsA9H3L6OsBf7CNeqzYmN/DZBDQyHP691Qpnlk3aC5iRmyjibhZxDEBU+XKo8WGcn7MNDJlRPixJvQtFxLDIpBgCNAMui+zy+LmNk9cCmC+wI8TJF+gnJd3PwQ8fF2mXgQVzyRFCL/FuiSpl1pYPJZJsi7UylXxVN9U8SD5qbrMxw9xNg88uPjr8s735EAMpBOrh36845BVa7vOtc6HLEWNHGFpWYJIYeAwPQIG4AShvVKlu7SMS8+axbI+NTj9AhlbSHUrOUx0Yz6fiOTByq+lWtMcnQCIn9eSBrGqlJuqBkGH6vMqn9ETNkjojepaEo4W/3KYrdPxtz5tmWBV00vubO/fxdpK2ycdOLG8veAySVDr/tC1Dm5/uI8gOEZEPK96KJl+p5lxV4RJ1Y2+sA3n+pAoKQN6hxqNjhC+I3sdEgfYKxXPGQYpHb+1GKNTQjnjupn4w1ZJvX00UdumAV6cnO0vM1M255jKpqDzeadAC6F+a/8CzBMlDcWpBJCADqRITRzDo2PaStXMv6BKey6AkWhFT8OeuTcwuSyxcgdCc83Rfn8zOelCVGdK/+hFya270hxxW1saTmnN/FX6rzji9JZymgVHaxLfMtZxK1sGrV10aKDPmZIZZ4qMnRmVOL1AMmBnrqD1Bct+8E 188fAlrM 05a/imw9PAXGa+P7cmquFeYWLJrTh+Ei47yQgY0rs6engbnKDZQoUDnvh1atO6Nkr2+tZrV6ANZP+S12G2u29k7VajIiSAhK2yh3lxLfLvlzAmz4YVQCi2+DL7lZV+vXd2ltDWBpL39a0CLCxbZexzSlsRHcFgZIAB3QMyh01gijCHgKn7KsX5mNd6N+vNxTHypQ3L10Udq98lCrl0Yz8ow5XsKf7UQD9Bl0GJKkm5MKJIZWnliWP0VFe2QhkBAE4GbX1xsH8shnrFJEGB72cEHz1b4UTuF0LSk0QdNfRmsVEcMzlGt/9lHS3mQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Only minimum file operations for refresh_ms file is implemented. Further implement its designed behavior, the periodic essential files content update, using repeat mode damon_call(). If non-zero value is written to the file, update DAMON sysfs files for auto-tuned monitoring intervals, DAMOS stats, and auto-tuned DAMOS quota values, which are essential to be monitored in most DAMON use cases. The user-written non-zero value becomes the time delay between the update. If zero is written to the file, the periodic refresh is disabled. Signed-off-by: SeongJae Park --- mm/damon/sysfs.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index 4296dc201f4d..6d2b0dab50cb 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -1509,6 +1509,32 @@ static struct damon_ctx *damon_sysfs_build_ctx( return ctx; } +static int damon_sysfs_repeat_call_fn(void *data) +{ + struct damon_sysfs_kdamond *sysfs_kdamond = data; + static unsigned long next_update_jiffies; + + if (!sysfs_kdamond->refresh_ms) + return 0; + if (time_before(jiffies, next_update_jiffies)) + return 0; + next_update_jiffies = jiffies + + msecs_to_jiffies(sysfs_kdamond->refresh_ms); + + if (!mutex_trylock(&damon_sysfs_lock)) + return 0; + damon_sysfs_upd_tuned_intervals(sysfs_kdamond); + damon_sysfs_upd_schemes_stats(sysfs_kdamond); + damon_sysfs_upd_schemes_effective_quotas(sysfs_kdamond); + mutex_unlock(&damon_sysfs_lock); + return 0; +} + +static struct damon_call_control damon_sysfs_repeat_call_control = { + .fn = damon_sysfs_repeat_call_fn, + .repeat = true, +}; + static int damon_sysfs_turn_damon_on(struct damon_sysfs_kdamond *kdamond) { struct damon_ctx *ctx; @@ -1533,6 +1559,9 @@ static int damon_sysfs_turn_damon_on(struct damon_sysfs_kdamond *kdamond) return err; } kdamond->damon_ctx = ctx; + + damon_sysfs_repeat_call_control.data = kdamond; + damon_call(ctx, &damon_sysfs_repeat_call_control); return err; } -- 2.39.5