From patchwork Thu Feb 13 01:44:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972681 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 48BF8C021A4 for ; Thu, 13 Feb 2025 01:44:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D5CB36B0092; Wed, 12 Feb 2025 20:44:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D0DB16B0093; Wed, 12 Feb 2025 20:44:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B86FC280001; Wed, 12 Feb 2025 20:44:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 97C016B0092 for ; Wed, 12 Feb 2025 20:44:56 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 4EDCAA1610 for ; Thu, 13 Feb 2025 01:44:56 +0000 (UTC) X-FDA: 83113227792.10.DD7C923 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf07.hostedemail.com (Postfix) with ESMTP id 923CA40006 for ; Thu, 13 Feb 2025 01:44:54 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XuYKw5jJ; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411094; 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=I8US4+ID6KQvu2uiduRB9+/luQSRWI5F0noZR15Hz6c=; b=XEDNQVBWU2r/a/Qm6LJqQmJ0qDVmTEyk/sMg9PsqdBqIdfItetCMDaf9bbj6rxPwemY0jL imAo6dvqgh2P3VT9QDHFEY4Xv6KpEQI2m8nkWLSF5wKsfX90nsfe3QI/87igpPpvvijaPG FqthdUTcEWovH//zvLR7teSV2C6K0D0= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XuYKw5jJ; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411094; a=rsa-sha256; cv=none; b=ojjM3R1s2w9CPPt8d6cmExL/vbQaksTvQMAGaRxCyLzOTQ7d21bMUajqY3ASsEVIMxrVXk tFVgK38+pcF//WNov3XE6HgRQfRo8eFSg+sJajQQ0mUKkY04E3VVkwZsko+bS0suydvish q6gX1G5yjzIbVcLpMOBQD7qJqVTohrE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 593A95C6357; Thu, 13 Feb 2025 01:44:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4ADF7C4CEDF; Thu, 13 Feb 2025 01:44:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411093; bh=arXNwNIDEYcgGA/brmhPPjep2BFLaCq5xAx61jsI2xQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XuYKw5jJlR25muh8wVK2pry1wN4l/DWJ0jtawj7gFkgmiL+9dbg3kS4tD/lHB1rel 7kq7C6/8kMhiA2OW/vK+4lROGpGPBv4kJ0lVnV1bt/CASC7pqe3V8yjG6FevH9lbRX K+pluuuu9jAhKIXzxdrOb2t5vgUO6BEwOm05c3TTyg7Q7wezO9eK3utE/YJTuLNsKh +LPYAzkfy6FJXvkr5JiTQIJDC3hD+9YHzWFkPAucTJjcZ+LJWCcdyQHqsysw1q4p2c bkZ2DbeNjpxcWj1zbsJmWshpOLEqeXX8e8hnxZOFw81uFpbrpy8DweK1URE57qInHV ou8me2kx3aAwg== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 1/8] mm/damon: add data structure for monitoring intervals auto-tuning Date: Wed, 12 Feb 2025 17:44:31 -0800 Message-Id: <20250213014438.145611-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 923CA40006 X-Stat-Signature: redokxhig3q833ynta71mosfosbyrufw X-HE-Tag: 1739411094-784944 X-HE-Meta: U2FsdGVkX19YnI+2sONU7VhPB2M0ev9cQwuQW+ojcLqc6tk+fkGpHXBkLBcUPp3VIRr9trpZGQMUkXB7BlDu7BHGoMHBtnjNGYHXWyW8gbCgdfKWCkLcrdte0BpOkXKPdZaBzpYwYzFqcToP6I8aL/H0K1bX2EbSUx8GXv1ZTNB7w94aPTBuZoUxCu6T057d0/uU+EBg2pf3Zy3HKQhCFRq+cO9qyj/tWsdBHHlJUOCECDD8ay59jX2R5SlLToW/PvlDizwY04Q4M1hrv91sDxpn2w+VvHBRYKOin+wup2tiKQox/2DUkCWlJoqBxv3G4OoHYcDBbBJnmIDdtoksU+QDmpItF2dwd8k7KN32AK5dIAGgXbtR6FsLT1SNLvcVxZ6ZS1fvauYZRohDsBNcQUyeh1xn75Dfy53KRfjBuu384c1ohOjCmR4ziPm2CKGRxGgOh8VPJ8Sihq+NwhgtvbjZaH694l7dIwYE9oACRPe98mpKeVz5iZY+LYtDF0g9kIin+qcbeav4XfzCk80QAqcWXN+D3N7GUG0EMlmSZxQwQOmnmDVlz1M985e//s/NLGAmtie+lNHUfPnn26C9Q3ojc+5He8rK7D0tMaoacr4wgTal2Z02A5FzqTT9aEqPh+tHaxeCgX54kFguTo+E6ZIZEztLuis7JIeAh1301fPgElDdlYu8FB8mdjdwFXfBCYbWXcJZXW6S6KpIiZuo+AOG0tMfkoQ5xS+TSl1OCs3mU1Mlskyr7PYY2zrsjZktKyyUdz9B3tD+bKq+jQS7aZeA+cOoHOaq7ieGIcVQGK9TUfFSsIsVwyeu6gHXvd7dEdogrivZtCzp6h7L47UD/eJWkuHUG1FQh17w71lJKu/4GuJDsBmlChiNLAfXfxTH5Nq+OjiRo12mWkMwCKARR+ldDu94EIRpfM+QxCv5nmLzvx/G/G2c3plz7m3zOouNFcv5nEOGD90kGzBnYGu yN5AgShM LDoW+AjuaI16D8WxRE5yMi7lF1seU6C3DrnhQxB132cHCNPRGZqAu0zGvFzmY17v3+uyu8ZFAZ3LfBCnVaaKpBKAFYNMiR+BzeKDukcb3GIjrFb7PA6VnQElCvLtyn6gMTcTGv4LMCL6rbeJz7kVYaesM9qnyDcILZjn24MAmwSQ5ZrmCDDot/XIYSAVzjReiUaZrdajFF952Hd+BvBuTDFp/g0MwgoWF6VV12lX83XcdEjE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.003074, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add data structures for using DAMON sampling and aggregation intervals automatic tuning aiming specific amount of access events per snapshot. Specificaslly, define a data structure to define the tuning goal, namely target ratio of positive access check samples, link it to monitoring attributes data structure so that DAMON kernel API users can make the request, and update parameters setup DAMON function to respect the new data. Signed-off-by: SeongJae Park --- include/linux/damon.h | 27 +++++++++++++++++++++++++++ mm/damon/core.c | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 0adfc2f4ca75..4368ba1a942f 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -651,12 +651,38 @@ struct damon_call_control { bool canceled; }; +/** + * struct damon_intervals_goal - Monitoring intervals auto-tuning goal. + * + * @samples_bp: Positive access check samples ratio to achieve. + * @aggrs: Number of aggregations to acheive @samples_bp within. + * @min_sample_us: Minimum resulting sampling interval in microseconds. + * @max_sample_us: Maximum resulting sampling interval in microseconds. + * + * DAMON automatically tunes &damon_attrs->sample_interval and + * &damon_attrs->aggr_interval aiming the ratio in bp (1/10,000) of access + * check samples that shown positive result (was accessed) to total samples + * within @aggrs aggregations be same to @samples_bp. The logic increases + * &damon_attrs->aggr_interval and &damon_attrs->sampling_interval in same + * ratio if the current positive access samples ratio is lower than the target + * for each @aggrs aggregations, and vice versa. + * + * If @aggrs is zero, the tuning is disabled and hence this struct is ignored. + */ +struct damon_intervals_goal { + unsigned long samples_bp; + unsigned long aggrs; + unsigned long min_sample_us; + unsigned long max_sample_us; +}; + /** * struct damon_attrs - Monitoring attributes for accuracy/overhead control. * * @sample_interval: The time between access samplings. * @aggr_interval: The time between monitor results aggregations. * @ops_update_interval: The time between monitoring operations updates. + * @intervals_goal: Intervals auto-tuning goal. * @min_nr_regions: The minimum number of adaptive monitoring * regions. * @max_nr_regions: The maximum number of adaptive monitoring @@ -676,6 +702,7 @@ struct damon_attrs { unsigned long sample_interval; unsigned long aggr_interval; unsigned long ops_update_interval; + struct damon_intervals_goal intervals_goal; unsigned long min_nr_regions; unsigned long max_nr_regions; }; diff --git a/mm/damon/core.c b/mm/damon/core.c index 38f545fea585..2fad800271a4 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -614,6 +614,25 @@ static void damon_update_monitoring_results(struct damon_ctx *ctx, r, old_attrs, new_attrs); } +/* + * damon_valid_intervals_goal() - return if the intervals goal of @attrs is + * valid. + */ +static bool damon_valid_intervals_goal(struct damon_attrs *attrs) +{ + struct damon_intervals_goal *goal = &attrs->intervals_goal; + + /* tuning is disabled */ + if (!goal->aggrs) + return true; + if (goal->min_sample_us > goal->max_sample_us) + return false; + if (attrs->sample_interval < goal->min_sample_us || + goal->max_sample_us < attrs->sample_interval) + return false; + return true; +} + /** * damon_set_attrs() - Set attributes for the monitoring. * @ctx: monitoring context @@ -634,6 +653,9 @@ int damon_set_attrs(struct damon_ctx *ctx, struct damon_attrs *attrs) attrs->sample_interval : 1; struct damos *s; + if (!damon_valid_intervals_goal(attrs)) + return -EINVAL; + if (attrs->min_nr_regions < 3) return -EINVAL; if (attrs->min_nr_regions > attrs->max_nr_regions) From patchwork Thu Feb 13 01:44:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972682 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 C66BCC021A0 for ; Thu, 13 Feb 2025 01:44:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 128766B0093; Wed, 12 Feb 2025 20:44:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D88A280001; Wed, 12 Feb 2025 20:44:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E94BE6B0096; Wed, 12 Feb 2025 20:44:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C705D6B0093 for ; Wed, 12 Feb 2025 20:44:57 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 903C6B2341 for ; Thu, 13 Feb 2025 01:44:57 +0000 (UTC) X-FDA: 83113227834.01.F91E5E0 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf07.hostedemail.com (Postfix) with ESMTP id 0A79E4000E for ; Thu, 13 Feb 2025 01:44:55 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Jw5STQf0; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411096; a=rsa-sha256; cv=none; b=t/Y+gP/f41KL1i6YkLkFO2ELRazUT7cCCkh/aU/0bGn5OQgS1Lh6oC0v7YODwodBRm/R41 zMMxTOwUSIab9Se3nP44pp2fxP5FI6z+++H+LL1iAH4LQFefI68+8MmZk1drzO0dfKh8Ig DY7vdOANlI3g5zs1pC7o9m3hGXffHa8= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Jw5STQf0; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 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=1739411096; 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=KNHfuXhHWN/YQGe3CPiDVN3CXvZT2r2ybj8BPwUi1Co=; b=7U+mv2SAW3mIjx1zeVwSkZbxskank514r5qPK1WZ1ltEu/BpJ7uNdLpmCZuTbDkKbPatv/ kDalnjXYacVClm0NHruBqPbDo3XQRQXZlRF++pvPYAi0hJULD7DEk5ckUNIaC1WmZsmOTh An4vqpXGXtjnLV+0zUl/HAqqsxVoufY= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id E251FA41C4C; Thu, 13 Feb 2025 01:43:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7F5CC4CEDF; Thu, 13 Feb 2025 01:44:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411094; bh=W/Z4Pz7/0rKa1NitqjDRMCIfBla8IOcoTknAAfohU00=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jw5STQf0kp1MAge7MPXqyEykadpvLLsK9LJzEH3HX/d5PDfTYcUUAcSYKI2bzds0S Ics9c0nN69O9/PqA6WGdmU5mXEBSiGYvCUDE1qRPQj+LFaHTLwcsPYyAmUYIV9Jq5x lRwuo/Mw1/V21QX1zkJT4bmAk2jxFgJH26tSPEXEWgfxoMi6VPv5D9qVVUaX/rs/y8 ++2bmuXGygdL7Jcgn/pkwtAu3t8uzFMpIJl8csUcEtF+zvdtaQTLLHSa9BXPNGcy0s CYerbKo85s0tLT7IFeR4YF2cBVmkQYKGeaBGcZNY1dBJfx/ubtXdlQWCrlrHfp0JUC mIo6KqW1VDLsQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 2/8] mm/damon/core: implement intervals auto-tuning Date: Wed, 12 Feb 2025 17:44:32 -0800 Message-Id: <20250213014438.145611-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 0A79E4000E X-Rspamd-Server: rspam12 X-Stat-Signature: c8fwdeo7mt8wkw5pif6ypr17grcu5o1z X-HE-Tag: 1739411095-975283 X-HE-Meta: U2FsdGVkX1+PUKpjVydsJNgMuhaEP8K0TSyLQG7ejUCms2Qr3PCA1ypq7kiwbAHgm9pOf8J6GHoH8gOs0H0+aivqO3NAJ3giRycKf+27nSCrL98QBnFB5CT8NPWScbP/D9KaPhjPYqmVM3sPGbb5hb80rHVsydiJDlCuSuwK6wZ4mCeTTyYSc1NtioKIvKrcYcwgp6R48Qx0/1SeEmCg5NSHhc/gJeZ/0yDNEPlt7Xm2tlHTQHGSobbvCrAUxQ0fZAHRihuKllT8bVAzPLRPVYF93wzkV142/xpyQ3du/ENKnMFAk52QIlKUF49KVewRmJXXpM3YkU+no/PPotKYrG/jJsH2LiRlvuRlFfeekfsQ4nlITsjz6+jZY4oKZgxqs7W9LdCyn7PtYFZV6E991pqpXpJ8ecudJvJWY4R8FdcGxS7/QiyDkKROCnSsBGbpdcFBwwPlVy6IxPrMy9cy418U4il1qrEhS9PXV4hadtDu6SeMgTqHNZs1htD0siI53M/hf6SotcS7P81XpOwzY+C6y0AZI18uuQUky5HAfpVTdK0pko0u08wI5a3tdsXXMYreL5/9JJYH8N+0ZGWaA+EsMPUCYpaEthHw1vC+mSWe+H++OYNYORwi1APUugoRkl+9vxwGqhhO9EvsWq3jvy3nkdbLxLsAgEgJGz0r6MxyTBHZtV0CGFOwL0DzteBwSFcWipcxi9FB4wGvSqJ8tu1AIElxN3+6YeYqotC/kQY+F6coFemxPOKcz8h3p8ozsXgkVhThMmLRyQKNBhjZhseiWd1bgVcZuO+FII2PfEDQJWtUXtpGJckOpdhDPfRRsGHEUBunDE8+xGprVCSAWLj4DcBPvueJKlbMM3ZMlHERfw+uYUAg0WkFkU6ZQ7JUhID9U4OV7XCTcExP9ZJHfHVasKd5N5wLEtGrrtfZJvPyDm3wtbBuFTp4uGM/NOXksq1Ey+MvbvC3daCHldj 3QpFT7rr 8UP92cvyoLuMaHvG2cmZNfSucT23RYtsgHDuWG/JHv/wl2WC9dfSyQlsq1Z6n+UlKA6rwqlcYjyzLqBgsJCYUmXNhSsuzDFNmGHulrrba3pBaGy0SrmqlCiAdqeEjP2/EhA68Fs1lW/dTR96pZBBCHqtJzdW9PdqBj5RmamQQSyPF9BATqcIsNowM8/cozmfUMb/lZduOPx+eqpL2tgNaWkNx8rdZR4lTtqmEO7ZYKPPQ1ro= 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: Implement the DAMON sampling and aggregation intervals auto-tuning mechanism as designed on the cover letter of this patch series. The mechanism reuses the feedback loop function for DAMOS quotas auto-tuning. Unlike the DAMOS quotas auto-tuning use case, limit the maximum decreasing amount after the adjustment to 50% of the current value. This is because the intervals have no good merits at rapidly reducing, and it is assumed the user will set the range of tunable values not very wide. Signed-off-by: SeongJae Park --- include/linux/damon.h | 16 ++++++++++ mm/damon/core.c | 68 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 4368ba1a942f..a205843fcf5a 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -705,6 +705,17 @@ struct damon_attrs { struct damon_intervals_goal intervals_goal; unsigned long min_nr_regions; unsigned long max_nr_regions; +/* private: internal use only */ + /* + * @aggr_interval to @sample_interval ratio. + * Core-external components call damon_set_attrs() with &damon_attrs + * that this field is unset. In the case, damon_set_attrs() sets this + * field of resulting &damon_attrs. Core-internal components such as + * kdamond_tune_intervals() calls damon_set_attrs() with &damon_attrs + * that this field is set. In the case, damon_set_attrs() just keep + * it. + */ + unsigned long aggr_samples; }; /** @@ -753,6 +764,11 @@ struct damon_ctx { * update */ unsigned long next_ops_update_sis; + /* + * number of sample intervals that should be passed before next + * intervals tuning + */ + unsigned long next_intervals_tune_sis; /* for waiting until the execution of the kdamond_fn is started */ struct completion kdamond_started; /* for scheme quotas prioritization */ diff --git a/mm/damon/core.c b/mm/damon/core.c index 2fad800271a4..227bdb856157 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -663,6 +663,10 @@ int damon_set_attrs(struct damon_ctx *ctx, struct damon_attrs *attrs) if (attrs->sample_interval > attrs->aggr_interval) return -EINVAL; + /* calls from core-external doesn't set this. */ + if (!attrs->aggr_samples) + attrs->aggr_samples = attrs->aggr_interval / sample_interval; + ctx->next_aggregation_sis = ctx->passed_sample_intervals + attrs->aggr_interval / sample_interval; ctx->next_ops_update_sis = ctx->passed_sample_intervals + @@ -1300,6 +1304,60 @@ static void kdamond_reset_aggregated(struct damon_ctx *c) } } +static unsigned long damon_feed_loop_next_input(unsigned long last_input, + unsigned long score); + +static unsigned long damon_get_intervals_adaptation_bp(struct damon_ctx *c) +{ + struct damon_target *t; + struct damon_region *r; + unsigned long nr_regions = 0, access_samples = 0; + struct damon_intervals_goal *goal = &c->attrs.intervals_goal; + unsigned long max_samples, target_samples, score_bp; + unsigned long adaptation_bp; + + damon_for_each_target(t, c) { + nr_regions = damon_nr_regions(t); + damon_for_each_region(r, t) + access_samples += r->nr_accesses; + } + max_samples = nr_regions * c->attrs.aggr_samples; + target_samples = max_samples * goal->samples_bp / 10000; + score_bp = access_samples * 10000 / target_samples; + adaptation_bp = damon_feed_loop_next_input(100000000, score_bp) / + 10000; + /* + * adaptaion_bp ranges from 1 to 20,000. Avoid too rapid reduction of + * the intervals by rescaling [1,10,000] to [5000, 10,000]. + */ + if (adaptation_bp <= 10000) + adaptation_bp = 5000 + adaptation_bp / 2; + + return adaptation_bp; +} + +static void kdamond_tune_intervals(struct damon_ctx *c) +{ + unsigned long adaptation_bp; + struct damon_attrs new_attrs; + struct damon_intervals_goal *goal; + + adaptation_bp = damon_get_intervals_adaptation_bp(c); + if (adaptation_bp == 10000) + return; + + new_attrs = c->attrs; + goal = &c->attrs.intervals_goal; + new_attrs.sample_interval = min( + c->attrs.sample_interval * adaptation_bp / 10000, + goal->max_sample_us); + new_attrs.sample_interval = max(new_attrs.sample_interval, + goal->min_sample_us); + new_attrs.aggr_interval = new_attrs.sample_interval * + c->attrs.aggr_samples; + damon_set_attrs(c, &new_attrs); +} + static void damon_split_region_at(struct damon_target *t, struct damon_region *r, unsigned long sz_r); @@ -2204,6 +2262,8 @@ static void kdamond_init_intervals_sis(struct damon_ctx *ctx) ctx->next_aggregation_sis = ctx->attrs.aggr_interval / sample_interval; ctx->next_ops_update_sis = ctx->attrs.ops_update_interval / sample_interval; + ctx->next_intervals_tune_sis = ctx->next_aggregation_sis * + ctx->attrs.intervals_goal.aggrs; damon_for_each_scheme(scheme, ctx) { apply_interval = scheme->apply_interval_us ? @@ -2290,6 +2350,14 @@ static int kdamond_fn(void *data) if (ctx->passed_sample_intervals >= next_aggregation_sis) { ctx->next_aggregation_sis = next_aggregation_sis + ctx->attrs.aggr_interval / sample_interval; + if (ctx->attrs.intervals_goal.aggrs && + ctx->passed_sample_intervals >= + ctx->next_intervals_tune_sis) { + ctx->next_intervals_tune_sis += + ctx->attrs.aggr_samples * + ctx->attrs.intervals_goal.aggrs; + kdamond_tune_intervals(ctx); + } kdamond_reset_aggregated(ctx); kdamond_split_regions(ctx); From patchwork Thu Feb 13 01:44:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972683 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 2D780C02198 for ; Thu, 13 Feb 2025 01:45:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 215D16B0095; Wed, 12 Feb 2025 20:44:59 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A6056B0096; Wed, 12 Feb 2025 20:44:59 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 064BB6B0098; Wed, 12 Feb 2025 20:44:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E02C56B0095 for ; Wed, 12 Feb 2025 20:44:58 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 96BE4A1605 for ; Thu, 13 Feb 2025 01:44:58 +0000 (UTC) X-FDA: 83113227876.18.FE26519 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf24.hostedemail.com (Postfix) with ESMTP id 1003C180009 for ; Thu, 13 Feb 2025 01:44:56 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="W0zx/kTI"; spf=pass (imf24.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411097; 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=MQy8VeusXSXlPG0T/2RwmSSaH0w6VfVVSi7U9OjNhBw=; b=oHB33jcKkvj9XsxHC6lmNuDuHcLyJ+pUPjyBcAA5qpadPfGA06Ciy98fnYOizAPB0Ie4Ww NeAXRiT8cmY9zkVPyN1YAE5LSCKtUxdu0THKxkEmtLRX4qrygmMLB43BEQOmtz0npkR6yX O6gfcni5JwFqJJING+PZVtryGeeAmz8= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="W0zx/kTI"; spf=pass (imf24.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411097; a=rsa-sha256; cv=none; b=tpF2vr/Yb/oAZ9QitdQWD2GYfISiS1ZLmCDodEnYE1FEpqPAAmKiUFAzN0zD0hSFwgatwY nmvx/ueBMPFBD+pyYgJdcmdDZnBef4ofne63VWe4LCMRPCUB5Onz0tKUerX18YtOSGYmOk Did24I69npthb1kxGXiUVWzaICm1QoE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 1E257A41C4F; Thu, 13 Feb 2025 01:43:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA836C4AF09; Thu, 13 Feb 2025 01:44:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411096; bh=MVqyX49p8y3GlcogxKD7CIx6rSRSsVTH0dE/ZziaIYk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W0zx/kTIiC+vKHSnUdUAWWceChod/BOyQP/fsFYtN3UZVwjdEfKMwtMEtY8/+bqhA hUI5afRogWIuMib6k0KuzfoFI2gdcT8sbFTTgxIOaLhy/PoOXSOP4E8edZs5TSJrtX kR8vOYZHHcbIUpF475k1BM28SGZqylduU6kma3vAO+WLWIgC70PSit+vBvhsgb640/ jEKqaPnURFh67ucsczUBXUfHNU6Da+wAeukmMmWngkN91zIUt+AESfngjN6j31HBHt 8Dy4/89i61sCZUNeaFk/f6/X95Wk1VRfhz+YFqX3Yz8cN/WFl47n5BSDba4PW+23+T 8MWhy0WzbF2hQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 3/8] mm/damon/sysfs: implement intervals tuning goal directory Date: Wed, 12 Feb 2025 17:44:33 -0800 Message-Id: <20250213014438.145611-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 1003C180009 X-Stat-Signature: 9qkj4sa8jwc9rkins4x3kuw1ym8rx3mt X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1739411096-161435 X-HE-Meta: U2FsdGVkX19K/KQlKhtiZJLEB1WQgb1R4FIW8xLRYW0zN0nFeREOPg8yqabFArt0I7dwn8rxR+QwXyZ9/uz8PXm3Rc1Zt+KfD2WnZb+ADEWDYotxsL+OvGaXauY+vzgNzU4RNE7psBLJ7gMlmmBwlei7fLH3dX810s069fIgNIZR8L1n6PTLP3woTIRlP3OEB0FMc/qurdr+K9saerPvAf/FEhVB00xwD9zFkHkLuQ0x8JfDRuXaI+SHMjX5na7Ow9rV1qfNFq09hUvMABQ3+/8zeixZlGNgJEztT/k17UnQ+2qm2eGGrjdWhBkO+zAP7uj+rOEVfNYwl/OhBEFe35TgSAHb8BzBIEMaD7025XJUo6ILu24uALcxOhWavi5zaeUX8DGVCTTpZK4dK9tESOZbHbUDqgohg1gDukhTnVzLBZnoEICbspfngdAeGUu5o+BC5niE3MKseZa7MdpJX7ax0H7Ejyncn8sRk05JU1sRCgXXZl/MH2ed5sf4DSC61M6RgJEnKd2JENt+8hCk0a2DlJqiu1WG5iMCPGV9Lz9RetHpwYXhq5lrEb9+K6G6cjaVnwiUk1eJSfBVNFxELYV1QcROll71O6P0NNXxLLgiyTEn7UP5kEpoacl2DUW2KRSPbPT+U9WD+LO7rT0CmfhESRck31oOWTbfxy3MmNq1tCi7I40xUF2HdP42nq4OW2fVN6ti6UX/QRnN20Roro6iHHmztd17ESg3RnDoDur961dj5FlFCkhVMm5KfUpSQ7rk/z4OWUqYM82v2VY1/iBKn5c9HB3eB0qtybhxt+wNam7KfmZnIRbGGsmPOOiq59ccPRdVEg4JOOlCkFkomcjzqVBQzkEoN5jWn6i6upuXgpWur7f1PR9o1QNlP9NPaS8k9Kq4q/Vgw0d5U8EXixNxJp4fPWExbXYbyCOhvn5wF4rYhMV8LFT7UgWBG+GW0oaGxTr28BaqhF2fxnu KAx0ClZV hnlxwi/TAkoxMSCcXDPQD0QwnahOgP66JP5HT+BKQGVGAowj4Cfkj76C/z8d0q0RY8gl4TOZA+eSJTBMbcXZwc1oPsNmnKfZzcMBoxhpQQGWFooNygJXo88Z4J5al18pv8sZ1K7YxOeLvFhexgBkxl5/yYhtDPebqA+WgpsI9uY48982PqFZJLZzAPnCOCYA1+AlsVuFZNaEGqJcNhMGIwaoFySVY9ROUhZHkGPFT1kBf6m8= 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: Implement DAMON sysfs interface directory and its files for setting DAMON sampling and aggregation intervals auto-tuning goal. Nearly all kernel API data structures that newly introduced for this new feature are directly exposed. Signed-off-by: SeongJae Park --- mm/damon/sysfs.c | 189 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index deeab04d3b46..ff774cc19d1f 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -408,6 +408,164 @@ static const struct kobj_type damon_sysfs_targets_ktype = { .default_groups = damon_sysfs_targets_groups, }; +/* + * intervals goal directory + */ + +struct damon_sysfs_intervals_goal { + struct kobject kobj; + unsigned long samples_bp; + unsigned long aggrs; + unsigned long min_sample_us; + unsigned long max_sample_us; +}; + +static struct damon_sysfs_intervals_goal *damon_sysfs_intervals_goal_alloc( + unsigned long samples_bp, unsigned long aggrs, + unsigned long min_sample_us, unsigned long max_sample_us) +{ + struct damon_sysfs_intervals_goal *goal = kmalloc(sizeof(*goal), + GFP_KERNEL); + + if (!goal) + return NULL; + + goal->kobj = (struct kobject){}; + goal->samples_bp = samples_bp; + goal->aggrs = aggrs; + goal->min_sample_us = min_sample_us; + goal->max_sample_us = max_sample_us; + return goal; +} + +static ssize_t samples_bp_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + + return sysfs_emit(buf, "%lu\n", goal->samples_bp); +} + +static ssize_t samples_bp_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + unsigned long nr; + int err = kstrtoul(buf, 0, &nr); + + if (err) + return err; + + goal->samples_bp = nr; + return count; +} + +static ssize_t aggrs_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + + return sysfs_emit(buf, "%lu\n", goal->aggrs); +} + +static ssize_t aggrs_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + unsigned long nr; + int err = kstrtoul(buf, 0, &nr); + + if (err) + return err; + + goal->aggrs = nr; + return count; +} + +static ssize_t min_sample_us_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + + return sysfs_emit(buf, "%lu\n", goal->min_sample_us); +} + +static ssize_t min_sample_us_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + unsigned long nr; + int err = kstrtoul(buf, 0, &nr); + + if (err) + return err; + + goal->min_sample_us = nr; + return count; +} + +static ssize_t max_sample_us_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + + return sysfs_emit(buf, "%lu\n", goal->max_sample_us); +} + +static ssize_t max_sample_us_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_intervals_goal *goal = container_of(kobj, + struct damon_sysfs_intervals_goal, kobj); + unsigned long nr; + int err = kstrtoul(buf, 0, &nr); + + if (err) + return err; + + goal->max_sample_us = nr; + return count; +} + +static void damon_sysfs_intervals_goal_release(struct kobject *kobj) +{ + kfree(container_of(kobj, struct damon_sysfs_intervals_goal, kobj)); +} + +static struct kobj_attribute damon_sysfs_intervals_goal_samples_bp_attr = + __ATTR_RW_MODE(samples_bp, 0600); + +static struct kobj_attribute damon_sysfs_intervals_goal_aggrs_attr = + __ATTR_RW_MODE(aggrs, 0600); + +static struct kobj_attribute damon_sysfs_intervals_goal_min_sample_us_attr = + __ATTR_RW_MODE(min_sample_us, 0600); + +static struct kobj_attribute damon_sysfs_intervals_goal_max_sample_us_attr = + __ATTR_RW_MODE(max_sample_us, 0600); + +static struct attribute *damon_sysfs_intervals_goal_attrs[] = { + &damon_sysfs_intervals_goal_samples_bp_attr.attr, + &damon_sysfs_intervals_goal_aggrs_attr.attr, + &damon_sysfs_intervals_goal_min_sample_us_attr.attr, + &damon_sysfs_intervals_goal_max_sample_us_attr.attr, + NULL, +}; +ATTRIBUTE_GROUPS(damon_sysfs_intervals_goal); + +static const struct kobj_type damon_sysfs_intervals_goal_ktype = { + .release = damon_sysfs_intervals_goal_release, + .sysfs_ops = &kobj_sysfs_ops, + .default_groups = damon_sysfs_intervals_goal_groups, +}; + /* * intervals directory */ @@ -417,6 +575,7 @@ struct damon_sysfs_intervals { unsigned long sample_us; unsigned long aggr_us; unsigned long update_us; + struct damon_sysfs_intervals_goal *intervals_goal; }; static struct damon_sysfs_intervals *damon_sysfs_intervals_alloc( @@ -436,6 +595,32 @@ static struct damon_sysfs_intervals *damon_sysfs_intervals_alloc( return intervals; } +static int damon_sysfs_intervals_add_dirs(struct damon_sysfs_intervals *intervals) +{ + struct damon_sysfs_intervals_goal *goal; + int err; + + goal = damon_sysfs_intervals_goal_alloc(0, 0, 0, 0); + if (!goal) + return -ENOMEM; + + err = kobject_init_and_add(&goal->kobj, + &damon_sysfs_intervals_goal_ktype, &intervals->kobj, + "intervals_goal"); + if (err) { + kobject_put(&goal->kobj); + intervals->intervals_goal = NULL; + return err; + } + intervals->intervals_goal = goal; + return 0; +} + +static void damon_sysfs_intervals_rm_dirs(struct damon_sysfs_intervals *intervals) +{ + kobject_put(&intervals->intervals_goal->kobj); +} + static ssize_t sample_us_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -569,6 +754,9 @@ static int damon_sysfs_attrs_add_dirs(struct damon_sysfs_attrs *attrs) err = kobject_init_and_add(&intervals->kobj, &damon_sysfs_intervals_ktype, &attrs->kobj, "intervals"); + if (err) + goto put_intervals_out; + err = damon_sysfs_intervals_add_dirs(intervals); if (err) goto put_intervals_out; attrs->intervals = intervals; @@ -599,6 +787,7 @@ static int damon_sysfs_attrs_add_dirs(struct damon_sysfs_attrs *attrs) static void damon_sysfs_attrs_rm_dirs(struct damon_sysfs_attrs *attrs) { kobject_put(&attrs->nr_regions_range->kobj); + damon_sysfs_intervals_rm_dirs(attrs->intervals); kobject_put(&attrs->intervals->kobj); } From patchwork Thu Feb 13 01:44:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972684 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 D8503C021A4 for ; Thu, 13 Feb 2025 01:45:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C4A16B0098; Wed, 12 Feb 2025 20:45:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 14E846B0099; Wed, 12 Feb 2025 20:45:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F30756B009A; Wed, 12 Feb 2025 20:44:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id CE2F06B0098 for ; Wed, 12 Feb 2025 20:44:59 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8477F12164E for ; Thu, 13 Feb 2025 01:44:59 +0000 (UTC) X-FDA: 83113227918.21.B9B3801 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf12.hostedemail.com (Postfix) with ESMTP id EFFF340006 for ; Thu, 13 Feb 2025 01:44:57 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=C3BAzxdT; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411098; a=rsa-sha256; cv=none; b=O1iGzzhaQEU6yJlhn/alOxW5rnjO/lATD0iCm7CJ0ciFuQPiC3FDTdc++U2BqyPet+ci1a DLB46VVVG6N1FO+2KFcs9C62mxHLSkqpbZyeUo9/zw8f+LlQg9ZcHhLdwIm0W6IsZ4nWBH 2BDxNDzch8/zScMo+xxTDln83nxfJg8= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=C3BAzxdT; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411098; 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=zp5UAFaFr/Kj1BMEru7kT9mCNzMFcglcPfavLwv/cb4=; b=KvWaEOrHcwcK1W/9gI1wqiYQ+no5fy7w7WCcw6hVQoJy7QzWjxYwaWPGJZjfM+hJofkDN6 dw2JU6Kjqtf2SYWec4KhI0A3s8rzLKXDHM8GKMqv0JPVQ771b1ab/5SZhhVNbRezhaN//B mUED39700sxZ44/g6PDv4qkuYn1O6gM= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 04921A41C62; Thu, 13 Feb 2025 01:43:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11B8EC4CEEE; Thu, 13 Feb 2025 01:44:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411097; bh=SH+BrCdqMvUM36Uwz4yzyW+qLxd/wx4qLa3uUpiLw/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C3BAzxdTETczFGrUG8o7JUdylo96Ur3zoYSlw/fbI7BU0QXIDCDUDHMAjvuMFKII7 m0h1oKeDmtxfE+Qmxo3BkJYU+LxLKX3X/0KnpV9pjXcsPg3JbWOAwMI7hcnvv4dugL lloi9hWurShWd7jjBMX2QbaIYKNR4BJ7nVpft6YMtOoGyY5iEiNsTQogI6zq/Mlg0f 3uBRaRHifi8uMUVGaIgS5ygoHDR/+8pGluxcxSV9AtVQonSv0Ql3tU1gzdA2VlpzIl ciae/dt9ALe8ya2rF3QL0CSJQkhMfoIg6U0+RItxQA2gZXWppCgSM6pR6x2QogUG0N g9O3QQnmG4buw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 4/8] mm/damon/sysfs: commit intervals tuning goal Date: Wed, 12 Feb 2025 17:44:34 -0800 Message-Id: <20250213014438.145611-5-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Stat-Signature: snf5hqhasakhtsiyqp9zeem4njgm3rsy X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: EFFF340006 X-Rspam-User: X-HE-Tag: 1739411097-649239 X-HE-Meta: U2FsdGVkX18pbha4d1Z2p6WBuuUAdMhI8BYKRYKOq4PDpjCukzHvieNRUkYiaxC2KYdfFUep5sfe9DViZvYHdqkr1Z7b5cNaM32stbdaFLG3D+uQqbiZd/3M+iEz+bljGUcZhDKIFgaequz0yQHkXXRqyq7BOAbZyQp6yFj7y65VOiyhBvFRy5UgnNT0++GQ1JYyfRCyhkIi07yixf18xee/UOiO7QunQT7/adBVTmrF3d2VJgxblmM0A2a+t811M5rSFZVkCXb892QRW1syK9FPy+qKp9t5JPXmtwMWEdJc1C2PqX8aAynuxHSqZplEBjxI9BGYaAiFABF4WJnetgL6sv2gg90DXj+m3wNX+ngEBHqW3YfXe0FeAmpQIzoxZn4AP/e8Z7mLvyC+P8K1CnJpLnlyPPiiKV3FUwa32qX7uZrTKSu8tH/CtGkdafabae/QBoyOJYth1Scs/MnrqiMz+j+vaFT0xpUjpe9NH79jodSQ00foL+NIx6VJOmwpVWQMBrUuHCYewiHAfYqzpY4ssYKmZarIxHZGzPcuwH/HtnI1UzTF7zM4F5e7aWJZjK+ypeTxGY5vUEvZ61T5eFeWRBdLQaX/7uGzo36FTJpjeOfbPnIch5EUaz+BQ70ldrSgP1BQmQzZOpCA3sMRMVYbDDN30s471VIVjxVWY1zG4N0NPeBLi4rxItUQF7KY/8oHNYno62va3mx+y1SvgS64BG65wFsMELZlCUeWxgAtS91y7JZ073sPGLQH212TWpNMFd1dSehY2HO6BpXq20ogJnHGj9wYBH/6I4jT5ZdwqUPnYISlUzhNM4VdNK/5l3kUtCFZR6/2Ep+apkaMPF9vSaGcFEnkeKpZit9yX+AEd06w+0PZ0rNVxdXIoLwdo2K9hJ7Rovx/mnZW2ofsTAheNGVY2t5IFu3xYK0gU1zF/kNypkgdwkA2BEsWCWZmokxsHJpvM/sWAwlcH40 K7kt0AWN JMZzukntUkSO726pz1ZUsQFfVxFTGR7RYIs8sPmVnH2zT9jldpCtXVNVlOyOiiAbtjPR62nN1dL5csL+RBJ8pZ6c45EaVHXLIKHr1Ci1oAKINCv331STDLTxHioOj+kUR4NVNB9RHU4iRpS5NWWBaqEriLwSvD0arbEjiqQSSsXGBojtUt/jTS+dvBB447SE1N1IjnfuNNQe/k3xTr6EEyCJn1Yff4ctlejyWJnKpkRZz3KY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000099, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Connect DAMON sysfs interface for sampling and aggregation intervals auto-tuning with DAMON core API, so that users can really use the feature using the sysfs files. Signed-off-by: SeongJae Park --- mm/damon/sysfs.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index ff774cc19d1f..f9bfe9ea0ae6 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -1273,11 +1273,18 @@ static int damon_sysfs_set_attrs(struct damon_ctx *ctx, struct damon_sysfs_attrs *sys_attrs) { struct damon_sysfs_intervals *sys_intervals = sys_attrs->intervals; + struct damon_sysfs_intervals_goal *sys_goal = + sys_intervals->intervals_goal; struct damon_sysfs_ul_range *sys_nr_regions = sys_attrs->nr_regions_range; struct damon_attrs attrs = { .sample_interval = sys_intervals->sample_us, .aggr_interval = sys_intervals->aggr_us, + .intervals_goal = { + .samples_bp = sys_goal->samples_bp, + .aggrs = sys_goal->aggrs, + .min_sample_us = sys_goal->min_sample_us, + .max_sample_us = sys_goal->max_sample_us}, .ops_update_interval = sys_intervals->update_us, .min_nr_regions = sys_nr_regions->min, .max_nr_regions = sys_nr_regions->max, From patchwork Thu Feb 13 01:44:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972685 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 A4452C02198 for ; Thu, 13 Feb 2025 01:45:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7461C6B0099; Wed, 12 Feb 2025 20:45:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F4976B009A; Wed, 12 Feb 2025 20:45:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CF6D280001; Wed, 12 Feb 2025 20:45:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2B2D36B0099 for ; Wed, 12 Feb 2025 20:45:01 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A500F16162C for ; Thu, 13 Feb 2025 01:45:00 +0000 (UTC) X-FDA: 83113227960.02.D1519C0 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf17.hostedemail.com (Postfix) with ESMTP id 223DF4000D for ; Thu, 13 Feb 2025 01:44:58 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=crw6qJnY; spf=pass (imf17.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411099; 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=9h1XuM2m/K3Qv6r3rhrWTatrcoUK0FxZ62cXNff5xgA=; b=LkqqDwBRmpuU2bbb+JWCCkP4KCEFkjliJJ9cZp8t14LM2+dbV7xLHZh6IQcRmx4EgdNm0W aM9KgmQv8pfWmKjVNdaO/e9DE3JdxdyNalbxjTc6lKWLlb1AhcwuScUVmZFrTEwUddkYr8 qREDxMxZ7liKUpuiFQXudhoGmSXeRJk= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=crw6qJnY; spf=pass (imf17.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411099; a=rsa-sha256; cv=none; b=DFdKhDtZkX/8gk8k0azvxhXqIbEP7R5yCgXmHDnq/uP6Nv+5PuHKpr1MDopRIKsUkZQiQK xHlnrC8Z32UyLPgs8RjNkkewZvJEW31V/Q9IvByn8AUXbAjTTXJFqcMxo0zMmIw7maLuYA /3WQACV3/Mv45xe7rEjrI4E2W1vgKWQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 2B89CA41C36; Thu, 13 Feb 2025 01:43:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2C108C4CEE8; Thu, 13 Feb 2025 01:44:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411098; bh=5mT7etGAhFimYWHp8UnnlxRdq2vvO4qVjTFtFfnATX0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=crw6qJnYGnrLWb24ECzEINhxpjP3mM72df9H+zpoOtoR8AB6uExB0pLzuuQWNOUsS NrOGmSwrw369SR/lm6+IxcpVnKf8XZw2fN6E0Z0rvPKzHtKFGZuo+ewP8MNMr4DWoI NrDAf3zXl1wdUmj5PsQ8qfuvf56wTTsTUFOHCflsiHGRGGhQp04K5KUnj2owNS/B6h XqU2ZiDM/5WnPZoFfuRJ8i5EYB7JzSRwDIcokE3FMcQ3SRE4HlY/4HewfnQmxNutoj b52EfXn+0jWiBYaPPL+1i2rH/+0FqqoDlrVIa1hpZZjgUBE6FTgN0fw24sOhrgZITn 1cAF3/y9x/LPQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 5/8] mm/damon/sysfs: implement a command to update auto-tuned monitoring intervals Date: Wed, 12 Feb 2025 17:44:35 -0800 Message-Id: <20250213014438.145611-6-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 223DF4000D X-Stat-Signature: 9w4kx4kry8harzq8n7anpz7exxfineoj X-HE-Tag: 1739411098-233399 X-HE-Meta: U2FsdGVkX19ZbJcCKtYpn30f9Oov92RevauUri1C8z9Kv5/f+CsvY9q2MEmlXfxbJcNFtdY08OcgfOgR5cablNuUoJjYJaWyi8Ekjav5qHsbb6+3AGJ4c4136F1amoC0h8uhQFPQCduylN6kgS497Eyu4qMASxCEb3KjNS1TbsWh7gKAc4CP5lVhDBOtprFMsaYpo9QZoFZ9e0BavXJXx+4IyVTFdOlI5mMhlkOWdiAOM04UhM4MGREeL/dQAF8v8zYoTdN5hMSYCR7MwvAckIXrvINIsWK2kWWluJ9KyFpiZv+yGzhAuQlUEurHdo3vMf7YxbGsCy2szDq0kg0yxS5rYgDycEZBE3SIcx+bgw5l3JT2xODejL8wguEzfKOZZxWasMvj6WhRbtr/MgNjIYfdzC9l+EvRqFuWiA3f8hUbND2bCYVk1vKCdNvUH9r2+C2t5xFJ4mGdY2IvBGQx/20MMn3aw/7hoirhp/Q4TT/z1lZWjN6IRwN/f8sbLqOLXBx9hQD0WppJaxB6NQdZP0/7uWY046JUvr+G0bRAw8v2F08AgdIrNYiGsLLWSnX7dK5pVlp/0r2ZKfzyUGML31DWZD1NIfZg1iG5aTzkREc2d8EBmuxiBN0OU8N00wJFoJdKswuv2TcGoaRL66fA3fSeyzwykGBtYKSrt8vJs57weDmCvCk/nT26Vco56hODPWcjOrlUwW+NhoxzU/d1f/LVAbcdsfjeZx9MA8LKV5fnWreDL4U4cCcZmvcHEGJ1ak814wWQVueT2fbYkwYtQlb3uDGZ3egTNpOgc1ygZuw3milH/AkA21b/Idk/jARRfeie7LHZHhSXkBataw8vYZsDm3ywsXdJASl4QiBkCRyv4RBaFOVggJMZBdNs1ZqY4j0W78OL2Rq9HgwUMB2srR+TH8ffip69k/kQB65giVyNjXfCo4vZkPIGh1kaiR7J5yhey69VvmdQiUwPfH7 jZM9Ztnz wa1ZL8678ZpYtfFt5PX7I5Srw/0HRNPqK2ZLKtKmMc+0ztENf9Z7P2vn9meprJLsZV/+ZeXyw5bofdSKZL1STAzkQ88/wUJlezg37Yj02Tlt0aWkyGPG+zh0jEYPyg1XlDXXlpWA7LB0GQjGpXOo2fXiYwaocK0Itw7v2g97WmRSDzj70aNmAx3+Rsxh+Cx8k5G7Are/eBdnHjRlMbONCp7wFy/gboQxKk4md4edZImIbgXs= 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: DAMON kernel API callers can show auto-tuned sampling and aggregation intervals from the monmitoring attributes data structure. That can be useful for debugging or tuning of the feature. DAMON user-space ABI users has no way to see that, though. Implement a new DAMON sysfs interface kdamond state command, namely 'update_tuned_intervals', for the purpose. Once the command is written to the kdamond state file, the tuned sampling and aggregation intervals will be updated to the corresponding sysfs interface. Signed-off-by: SeongJae Park --- mm/damon/sysfs.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index f9bfe9ea0ae6..b1829ee67762 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -1213,6 +1213,11 @@ enum damon_sysfs_cmd { * effective size quota of the scheme in bytes. */ DAMON_SYSFS_CMD_UPDATE_SCHEMES_EFFECTIVE_QUOTAS, + /* + * @DAMON_SYSFS_CMD_UPDATE_TUNED_INTERVALS: Update the tuned monitoring + * intevals. + */ + DAMON_SYSFS_CMD_UPDATE_TUNED_INTERVALS, /* * @NR_DAMON_SYSFS_CMDS: Total number of DAMON sysfs commands. */ @@ -1230,6 +1235,7 @@ static const char * const damon_sysfs_cmd_strs[] = { "update_schemes_tried_regions", "clear_schemes_tried_regions", "update_schemes_effective_quotas", + "update_tuned_intervals", }; /* @@ -1502,6 +1508,17 @@ static int damon_sysfs_upd_schemes_effective_quotas(void *data) return 0; } +static int damon_sysfs_upd_tuned_intervals(void *data) +{ + struct damon_sysfs_kdamond *kdamond = data; + struct damon_ctx *ctx = kdamond->damon_ctx; + + kdamond->contexts->contexts_arr[0]->attrs->intervals->sample_us = + ctx->attrs.sample_interval; + kdamond->contexts->contexts_arr[0]->attrs->intervals->aggr_us = + ctx->attrs.aggr_interval; + return 0; +} /* * damon_sysfs_cmd_request_callback() - DAMON callback for handling requests. @@ -1723,6 +1740,9 @@ static int damon_sysfs_handle_cmd(enum damon_sysfs_cmd cmd, return damon_sysfs_damon_call( damon_sysfs_upd_schemes_effective_quotas, kdamond); + case DAMON_SYSFS_CMD_UPDATE_TUNED_INTERVALS: + return damon_sysfs_damon_call( + damon_sysfs_upd_tuned_intervals, kdamond); default: break; } From patchwork Thu Feb 13 01:44:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972686 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 76BD2C02198 for ; Thu, 13 Feb 2025 01:45:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A78476B009B; Wed, 12 Feb 2025 20:45:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9DADA6B009C; Wed, 12 Feb 2025 20:45:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 853E6280001; Wed, 12 Feb 2025 20:45:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 5AD096B009B for ; Wed, 12 Feb 2025 20:45:02 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 1BF1812164E for ; Thu, 13 Feb 2025 01:45:02 +0000 (UTC) X-FDA: 83113228044.18.81B424E Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf19.hostedemail.com (Postfix) with ESMTP id 67CE81A0008 for ; Thu, 13 Feb 2025 01:45:00 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=kyEbhvxt; spf=pass (imf19.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411100; 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=PEsgCe48+LXMdsPQ6GQvggULldaiT/f5nk1JmsO52UU=; b=OMkPe7nxFcvApcyHYOSc8pjw2MPwllUOCOCgZzabIHXgR5o5QaVXN5zef/eQfGU3RlXyBV KCot/aXp/70Sz1obnYQUAkF9mNrxX8pPhE31AhmSkpAYR/6w9Cg3ejw8l326rlA06pI8Sc aQou/b1q1Q9ltPljDHKdhdh7ztl+0o0= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=kyEbhvxt; spf=pass (imf19.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411100; a=rsa-sha256; cv=none; b=0tJ8M4tywO5qFSGmKYJHqeP0EydhHihjg6s+GxOHLlecjfH550LT2F+f476dmD5Ug/ZVuJ 0SihL2hvkYL4gI1AtMPfmWYnrnHICYiB/OGJb7p1IQG4Gxc+rSyTCG3KO6tSB2X17hZ8nI UpKoOv/HDStHun5T5dAZgOdZVndR5nc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 24A275C635D; Thu, 13 Feb 2025 01:44:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C2F6C4CEE4; Thu, 13 Feb 2025 01:44:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411099; bh=0wEx+LJOEK19dZIr4jkJc7A6zYxo+0xSxmNO8FVmzUM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kyEbhvxtr1t+x2oavCe+QyKXEw8qJ00hlkxy6X/ohrCqozW7BMOb6O6UGLvp98fVO 2VFoA+iIdl40G45gDTTQ0UQ5Z5wOv4hdFTDs4NFUDWOutPm9kdLMBlIQm0pwl5vEhC q0kXajprvSiVDOWE+vf1X/bREANPA3suqYUY3Ao1cUnfYVnqonxt/Rl2ETD+T6PB1s QEt5WwqlGh395DHe0Mo1DsyjwfQestlBl42wPeBgQ0jeWuQZHr9iMiNLPD+HzahW8Q D8immH3lmtEs+0GWWaG9R5Uc+URycBeV8ozvk1LanA8AGH+HTV/sFpXFFfZ66Ecrxb K66CQWoMjq1rA== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Jonathan Corbet , damon@lists.linux.dev, kernel-team@meta.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 6/8] Docs/mm/damon/design: document for intervals auto-tuning Date: Wed, 12 Feb 2025 17:44:36 -0800 Message-Id: <20250213014438.145611-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 67CE81A0008 X-Stat-Signature: 8bbqakjbg3u8owrww3jfkwut619qu6i9 X-HE-Tag: 1739411100-736828 X-HE-Meta: U2FsdGVkX19VpZC6aah/NUHttpbmc6ZXRew6Kx+uEZHUk0fkyf8s3hKjFPoiTJco0Kd1xS5wlkdSNfjr52c9Z+xAr0kAmDoAQ2rkhRnDxdu4W34t9QkBHt6tjKFwDkntthgkAthx7kNW0QZYwrBEuE3B/rWNOeDSTCq7FxwWhCWXBgAIt8VCImDHHiHG0ZXRY1F+GxLE5lylM2BVIaybZG7lmlBRABjLcd5P/u4urj/N4ATA4JEqmIrYcuhbLiSpmVhePJIOkaCd5KokQJNnVKQ2F6NVIWQUG+TYa/4AzFU1rNbqqaJqsQT2twBT9bE2gnZdutnktV7W/T12fNBTMZCPyttIcC82M5nQUhCgX7Bzz4bPVPeG4tY9WX1SAFUsxlpAtbcQ9KfJvGPvysKYP67++XMo1kD+c7I/Nr4NzLwVLBSA6kku8o3ohvSbx0n4dtrc4r2LAPApBHJJ42nxkZsTH2F0Ke+gd6SOczE+fBzgow0wsLuwBECTKruuSfFarI6IONVrEtpLxl3zCKT29tRb3oIJ+PAOMJ5k1gn2d5ccsLxOVjjjrsI4N4i2MLuye3POxcrtV7sJ1aVlxJ2EmV6RAfq9Hgb+4wFCscv2RW+399LNvddHsHzJ1b+fQGkwCKQsCR5Qfo0b1gHTGsPXptoqyhgQrD+gqtnVEmUiItX5c1jFozqZ2rHnpJf6iKNf0/BuvWRBlhQzWcFK8/MV/NLTy9Vg6qGsMBmP0TrpL3ftaSiVzg1hdb7QVaVBkH4CxTQumhyhoJ5W6xofjUAnV0UCunyDTQL7RBndojJN4itRpvaQ1LjLDJR7d8/NZJWWPV+cJYUwsT/CqoXjTFlE3JVvEvUc7GD85Lv2Ab4SjXajZ7GnlL3EPlfVrlMF5Z2gUXXxtHrUPm5zT6A5usr31bepCZLDCDrD9ZsoAmvjGoNKHx829tH1utSwB/D6AHBDh+Z+VLjiryiqv+C6rQQ s2/BzY5o IaUC4PhXE0KGejUXxERSVEY0vdbfpAiummUcBiuXDYUD5+C2MQz7MFPcFxAFaiJ6mKCRYnbVoKNj3s268mCMuqzBu45SACc7xTEIryYfnKsG9l0r64UrvuKEafvi91DsVhrjXvEasYTxWJauoxvb/WZ/36xTf66GeJZpJAnmA1d2rEHM/0MqYvSpCP7d+R8Hfu+bQkn0FqGbxMRXY/3u+n8YhPr1Sr5nzZUTgiF1ig8FDGG0xq8R7NqcSJ1TW0Y/qUZ0AWejSScPq0Wc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000020, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Document DAMON sampling and aggregation intervals auto-tuning design. Signed-off-by: SeongJae Park --- Documentation/mm/damon/design.rst | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/design.rst index e28c6a1b40ae..c8e906ac3965 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -313,6 +313,10 @@ sufficient for the given purpose, it shouldn't be unnecessarily further lowered. It is recommended to be set proportional to ``aggregation interval``. By default, the ratio is set as ``1/20``, and it is still recommended. +Based on the manual tuning guide, DAMON provides more intuitive knob-based +intervals auto tuning mechanism. Please refer to :ref:`the design document of +the feature ` for detail. + Refer to below documents for an example tuning based on the above guide. .. toctree:: @@ -321,6 +325,36 @@ Refer to below documents for an example tuning based on the above guide. monitoring_intervals_tuning_example +.. _damon_design_monitoring_intervals_autotuning: + +Monitoring Intervals Auto-tuning +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +DAMON provides automatic tuning of the ``sampling interval`` and ``aggregation +interval`` based on the :ref:`the tuning guide idea +`. The tuning mechanism allows +users to set the aimed amount of heats to observe with DAMON within given time +interval. The target can be specified by the user as a ratio of access check +samples that gave positive result to the total samples (``samples_bp``) that +measured within a given number of aggregations (``aggrs``). The mechanism +calculates the ratio of access check samples for ``aggrs`` aggregations, and +increases or decrease the ``sampleing interval`` and ``aggregation interval`` +in same ratio, if the samples ratio is lower or higher than the target, +respectively. The ratio of the intervals change is decided in proportion to +the distance between current samples ratio and the target ratio. + +The user can further set the minimum and maximum ``sampling interval`` that can +be set by the tuning mechanism using two parameters (``min_sample_us`` and +``max_sample_us``). Because the tuning mechanism changes ``sampling interval`` +and ``aggregation interval`` in same ratio always, the minimum and maximum +``aggregation interval`` after each of the tuning changes can automatically set +together. + +The tuning is turned off by default, and need to be set explicitly by the user. +As a rule of thumbs and the Parreto principle, 20% access samples ratio target +is recommended. + + .. _damon_design_damos: Operation Schemes From patchwork Thu Feb 13 01:44:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972687 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 32C97C02198 for ; Thu, 13 Feb 2025 01:45:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3BC96B009C; Wed, 12 Feb 2025 20:45:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AC3D46B009D; Wed, 12 Feb 2025 20:45:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 98DEA6B009E; Wed, 12 Feb 2025 20:45:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 749216B009C for ; Wed, 12 Feb 2025 20:45:03 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2CB61C1587 for ; Thu, 13 Feb 2025 01:45:03 +0000 (UTC) X-FDA: 83113228086.03.6178612 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id 9284BA000A for ; Thu, 13 Feb 2025 01:45:01 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=B56yflNN; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739411101; 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=KDvtqwKtr4yZ7mbd/OolXUU24cJeVu0H9PMq8gRhXTc=; b=dRUtaBQTQd9GvUEXM67BXOybmYrWDSxpMs3dx0za+ZjzPo+z8atrHPjd7w42zYjjQ5DDK1 CRZ2bo1eIFHViPgTbIlxYiETH33wGPz+U3mu3+i6p/EGdmaSMdGgHHZ7nDyOpY5N5YjDWF Nb0hMYmgCvvPH2GSyaRJVgjyoVTCENI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=B56yflNN; spf=pass (imf25.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411101; a=rsa-sha256; cv=none; b=C/jGe9LMwYotnzPFmgykR2kZRxNtZLANjN5WfafzUhEkd14SpWSB9dmeSyEkIfVGEcL6cG 09V4wfaNa3MqP2bSrLJPV0YJ1gQHyAN5swYdKbcoDAxPHKoPpKds2cvkLn8sHy6857fOEm IkONrpOQD6HCBFWyJecEwx2IFSoVXHo= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 46ED95C636C; Thu, 13 Feb 2025 01:44:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78407C4CEEB; Thu, 13 Feb 2025 01:45:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411100; bh=NgazBziN0MDu+DwcW8IQ50YvCEMXV3o8RNioTMnFdIs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B56yflNN+YVZte1bFv2Xk9dBJtNTjgVLwEg7xjgcpxG9ldYoO0PYjocz2DqQBaQZL ItLkxeJbNJXpZgXgg+xMAtMfyT7Mpn0Z63sWdimkxqSZk9N3uvG+6faf0QdYW99lFj u+Dr2e3mxkN9uKd5um7vyXiXRzMk40LJqrA5equavDWuc+MDKHJyiv3IFtTJDQqsBC WWN4+IWOKsgCdELoHe6lz6hYQR0+USQPYax+1wEJCdb/4/kTc1iI6uYsFJYo3iGaSr 1vO5fRahKsJEwifDz3jmLGLLlCpJ5wkeaiFGR9GFK8fenkuI/eXPMvKisMGfDYL0cr Yg8feMnQAjyhw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 7/8] Docs/ABI/damon: document intervals auto-tuning ABI Date: Wed, 12 Feb 2025 17:44:37 -0800 Message-Id: <20250213014438.145611-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 9284BA000A X-Stat-Signature: ffogu7riu8amrnbee1cjeoupfmp5c3zd X-Rspam-User: X-HE-Tag: 1739411101-420289 X-HE-Meta: U2FsdGVkX1/pl+/k8efBc9y8cOkWvd14hf8CB42q62dixZePOlAozro7zxnKLwVh0RKZ+4Vb3dg/5gdnCke6AMkABoVs69KKho0IASJcajPu3uWPOdynL1/gsb/Q7+ml+QzMhrco+tXz91YXNauwt3Cck9Opdnyhf3mFDYMwNBB6XDB3DifzmI5xHz7eB25RAAfrVPZNGMTt2wffVGmRJ8cyKYbnxJX509wIdcWOc/IsNhN86xmj1x+Z3VSicCxJaYGHUz3SCat7gNuGYfeCrt2H3xeCmXkO+kwQ2M9p2NFB4y50IEjf+T7CYUHONLSR6gINRs5ZtcH5gGy0o/EFzZu29A87s+4fWSQ+9OvZQ/LvQujgG9HSQpR9ZOAmT80wL4E5m2M1U/+YEIvwJo5EhfqMu3U1JBe/7N/Hzos4BcLx6mpJ5e2KoLFWjcDz4SgIT4iFefqmykhXQZNpG86sF8xeVHHuaPalPNCnsELelh0Ncbu96dZvmHQ7Zfowt+8q9JitILvjz93SIVDi020rTB9xulcbaaS7TqTX1zOpbWsAuoqRQtbl9NaHtmTQ5G6rXmLv1/ezEIFelHOyUMeWz6oc58vKd0EFmf3aGgA6SQ2JDqiy99cyWYenPiUaf0dFHSswaV0lGSFP4DNM5AOnxIXHx9cOE5INmHSvAR371niqxldHZA1XwJ0GjmDKbEVgVjFTYFfHgBheNx9/oAC54JYWe4rpBHg/CrtCcAMDX4NxlPyEZ20KAFNj+kJLlukUAoTpyPOHti8mGK0nafNg+3Cj3KUu311z6g4mcyLYSrmW0MTHIKXq3EBEDhDqrrcMJevJqsgdI3U6+8oYqyYysiBk6SFo4MnGl7irwhquT2+V8iQjCZ27Eloqmg1KN2cMdSQ+VB7XUCJ6xymv9g15wsuz1LM6CiEusw8i4QLYsHA0NRe82nvx4/1c+u7Rip3cDLHfje9/hwGn2dRCdcL SZn4LeiI t2IYF2sbjUUo6XC5trDIHoMuzG3wARBH6ZIox/YugDBsK3XF8db8tLuXryGRzq1MwouAZz06C32pBqindB1IQamZ2Sm6YZ1VeZvEkkFqxlqF2ZIJLJUR3MczczY79nyNBxAjWwFH3mGlgGpCOVfl6wU6V4alU1PBF3APDjxtLYoUB0UgZhjDlO8CTHoyV4tBBWIwLCoFlXq9ZkNSO9LRBcQsBPBaC3Abr41qiQl1mP9uP4eNbdlTQmq7hSj7bgtzYu3g7pLTbNFvrm7c= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Document the DAMON user-space ABI for DAMON sampling and aggregation intervals auto-tuning. Signed-off-by: SeongJae Park --- .../ABI/testing/sysfs-kernel-mm-damon | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-damon b/Documentation/ABI/testing/sysfs-kernel-mm-damon index ccd13ca668c8..77603b5f7c0c 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-damon +++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon @@ -91,6 +91,36 @@ Description: Writing a value to this file sets the update interval of the DAMON context in microseconds as the value. Reading this file returns the value. +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//monitoring_attrs/intervals/intrvals_goal/samples_bp +Date: Feb 2025 +Contact: SeongJae Park +Description: Writing a value to this file sets the monitoring intervals + auto-tuning target positive access check samples ratio within + the given time interval (aggrs in same directory), in bp + (1/10,000). Reading this file returns the value. + +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//monitoring_attrs/intervals/intrvals_goal/aggrs +Date: Feb 2025 +Contact: SeongJae Park +Description: Writing a value to this file sets the time interval to achieve + the monitoring intervals auto-tuning target positive access + check samples ratio (samples_bp in same directory) within. + Reading this file returns the value. + +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//monitoring_attrs/intervals/intrvals_goal/min_sample_us +Date: Feb 2025 +Contact: SeongJae Park +Description: Writing a value to this file sets the minimum value of + auto-tuned sampling interval in microseconds. Reading this + file returns the value. + +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//monitoring_attrs/intervals/intrvals_goal/max_sample_us +Date: Feb 2025 +Contact: SeongJae Park +Description: Writing a value to this file sets the maximum value of + auto-tuned sampling interval in microseconds. Reading this + file returns the value. + What: /sys/kernel/mm/damon/admin/kdamonds//contexts//monitoring_attrs/nr_regions/min WDate: Mar 2022 From patchwork Thu Feb 13 01:44:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13972688 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 1301DC02198 for ; Thu, 13 Feb 2025 01:45:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF9F26B009D; Wed, 12 Feb 2025 20:45:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DA92A6B009E; Wed, 12 Feb 2025 20:45:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C25106B009F; Wed, 12 Feb 2025 20:45:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A3D616B009D for ; Wed, 12 Feb 2025 20:45:04 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6783DB233D for ; Thu, 13 Feb 2025 01:45:04 +0000 (UTC) X-FDA: 83113228128.25.F220163 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id AD44CA000C for ; Thu, 13 Feb 2025 01:45:02 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mSX6aGIZ; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf15.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739411102; a=rsa-sha256; cv=none; b=IUBTOJKPeXV0/o/OqdzT5n8XoTK7uZCp40+AKALP7R/R5QtbOt9YY33KH/yOM5Vtrr5Xsy 0cUM8aYFmBJkkU+peUvWkEzBxwMzUCu2mEQ4IB6NN2ltk6SCDg1H1+yfZ9cwTCghw8sSwg cNSbdi14m//Q0chk6NQg1fk1K17R1V0= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mSX6aGIZ; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf15.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 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=1739411102; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FmAySk/6wcB5/SPAIcowJvqz4yKMiS0+BrQ/P8OVA4Y=; b=GJyL/vHejTUbagzg0QCv1qjgMIRFivIlmPQ5n+tRSuammic3uRqvwQHMkrenhUurN2oB/g 5AnIySZXTrOY2Pm3NVlxDQMgAPeipzh++ZvqtzTZ28kQZ5yEPdonssjlplyojBoTLa4IfT Ri/12yTvjHmUiquK5FlO48xcybf/dC0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 6E5875C6370; Thu, 13 Feb 2025 01:44:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95533C4CEE2; Thu, 13 Feb 2025 01:45:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739411101; bh=QR2M3ggNynpLgjaV5MuEdSsLXcYuPIdLc3HO6YmtxuM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mSX6aGIZUvu8Ow3QiHi49WpJMlcbTPa3MmrNc3TMLwyrXGyAMkh+D08gbtBhrm5Ka 0FMbInTxW20qQKBtCs0qQ0HwHpXpDwt1M1VVj64fATFn13PR2u5Q3km+3EdSR2Wtgk D54xFRjVT5lBCDv3bu/wLFBl5hxvp48h8TYyVc/e1r7o5/gdGK480VsLuMq0QAdVdu EWYzQ9pl2FxlK3ErLMGQvJRSE24Vgr/oB70eF4/X+PzZtZz3D30HK8DrhmMCLhNbmw SESO8O1kjGGKQCKodHns7yOiLNSzCrnXF2IpRTySqpqw1xzps064C3NUcGzmBGNfnp A1jNF2i79DYXw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Jonathan Corbet , damon@lists.linux.dev, kernel-team@meta.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 8/8] Docs/admin-guide/mm/damon/usage: add intervals_goal directory on the hierarchy Date: Wed, 12 Feb 2025 17:44:38 -0800 Message-Id: <20250213014438.145611-9-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250213014438.145611-1-sj@kernel.org> References: <20250213014438.145611-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: AD44CA000C X-Rspamd-Server: rspam12 X-Stat-Signature: yfk1jzym1bfd1e3i5yx7haxwzejjf6bw X-HE-Tag: 1739411102-248297 X-HE-Meta: U2FsdGVkX1/PCzoqP2/j/jSub7QDC3d4IexUY6onzfrfagZxYypAgO7TLSFvs4NNY4rcUjxvW+mp3mbbikPwVdrj95GJoeI5yV5gHq9TNWoaI3Lv8xwRbW5SR6SjniR0ZTfKfPLTBtXoZ70IGNEKwX4ogCEnfPYM99KNLW1BqVYZ/F95PIGVS5K1f8YRjIBw/XCDOc/xrBdWdrGBYLmoNBsnSoY6l1J1dL8OEhcItCbwboUimg8pnRmwuBCW4cjqs1JCBqcCpq0ZZVEgnIFFbpbQXzIYbdIPtOOR819k+kw/Qm1jDFwjMVy+bWwdBbbAqmPTNaVind9RqXqMXoDX8zmmK6h1OoTQ0fHbQyhCBJIjLvUdmjL/4VPn4S8a5S4Ew29Opryo4z06tdhCcFqSKnPS/yc0vptc/AFpFYip21uALmC9+L0FzqgfOhctZvllMi0KKbTyVDFcezmQ2kL1VebazPIRwHl15WSJT2LyMFZJDW30WPtA+paI859DZIgWb9YwmBR8Sn1TjFLSad/S2YtMa8//hiAP9gjhiIPa2fRXIhlpLEV+YfW6ZDMl8ifhNiGCoLtyqNy1wwnIcs42eY5V4+97WYMrdjkclFLslPFfHBuTCNqcn/3eC9Zovxjn/dO+TcK8r3cid3ehP/E7dxIRFW0tj30W51andwezn9S4RFIHY+gGFD7yDKgjcCmT1dX1cXhQYOdmBjZKtp/C3Wmp1kmK/mWk6VDV/xVjEiLbDItBzs1YRtPgeGFemMM3IyKouWxB0t6FDCkyta0YdMx2JTB6QWnzOs1Nqt8P3NC/cBll7MZgvB8Ql0yuFn80M4tKk2tL8OrLbvxXuyakGWpxg5fAV2ns5v5QL1U5CeOZn5zD8kJyrEbOINEyiZefaNC0rZU7CJ+LACCtfN5vKvTAXYCKHo2IJAfiqZa6KDnJT2RQBxQjNMf49pf0YjSmEWmnI4+95WrEHe95Tus MDzRolgd zqcKCf/ShdnKZs9k/JZj1ODAU2j+bmFvqQLhNJ2cu3qXf4JPq3XC0YTypuFNd3e/f+T7tyyeyCVK/46xltI9Qx7GnbID0OZMitUJzpFZITCJrDSO++TtjW1xR45/2oEipG6zQg46FaQvb68LJmSQpYH9T6TeIe96fzfyLPhzrL/qoA5Zzm9WHTkDyb2fjwmgzyHM0PgpoG2J459Hu6mRcHOK9wF4VfJ+dSzeF1k1Q6pqPfN14npOHFG+aMMUHU8oZu9qyk+utljL13cTpMQI9373LcLld1ygE9WLoCtsc1OAFfXWIsDcry7y8WA== 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: Document DAMON sysfs interface usage for DAMON sampling and aggregation intervals auto-tuning. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/usage.rst | 25 ++++++++++++++++++++ Documentation/mm/damon/design.rst | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/admin-guide/mm/damon/usage.rst index 51af66c208c5..8970efce32f0 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -64,6 +64,7 @@ comma (","). │ │ │ │ :ref:`0 `/avail_operations,operations │ │ │ │ │ :ref:`monitoring_attrs `/ │ │ │ │ │ │ intervals/sample_us,aggr_us,update_us + │ │ │ │ │ │ │ intervals_goal/samples_bp,aggrs,min_sample_us,max_sample_us │ │ │ │ │ │ nr_regions/min,max │ │ │ │ │ :ref:`targets `/nr_targets │ │ │ │ │ │ :ref:`0 `/pid_target @@ -132,6 +133,11 @@ Users can write below commands for the kdamond to the ``state`` file. - ``off``: Stop running. - ``commit``: Read the user inputs in the sysfs files except ``state`` file again. +- ``update_tuned_intervals``: Update the contents of ``sample_us`` and + ``aggr_us`` files of the kdamond with the auto-tuning applied ``sampling + interval`` and ``aggregation interval`` for the files. Please refer to + :ref:`intervals_goal section ` + for more details. - ``commit_schemes_quota_goals``: Read the DAMON-based operation schemes' :ref:`quota goals `. - ``update_schemes_stats``: Update the contents of stats files for each @@ -213,6 +219,25 @@ writing to and rading from the files. For more details about the intervals and monitoring regions range, please refer to the Design document (:doc:`/mm/damon/design`). +.. _damon_usage_sysfs_monitoring_intervals_goal: + +contexts//monitoring_attrs/intervals/intervals_goal/ +------------------------------------------------------- + +Under the ``intervals`` directory, one directory for automated tuning of +``sample_us`` and ``aggr_us``, namely ``intervals_goal`` directory also exists. +Under the directory, four files for the auto-tuning control, namely +``samples_bp``, ``aggrs``, ``min_sample_us`` and ``max_sample_us`` exist. +Please refer to the :ref:`design document of the feature +` for the internal of the tuning +mechanism. Reading and writing the four files under ``intervals_goal`` +directory shows and updates the tuning parameters that described in the +:ref:design doc ` with the same +names. The tuning starts with the user-set ``sample_us`` and ``aggr_us``. The +tuning-applied current values of the two intervals can be read from the +``sample_us`` and ``aggr_us`` files after writing ``update_tuned_intervals`` to +the ``state`` file. + .. _sysfs_targets: contexts//targets/ diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/design.rst index c8e906ac3965..940409abc23f 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -354,6 +354,10 @@ The tuning is turned off by default, and need to be set explicitly by the user. As a rule of thumbs and the Parreto principle, 20% access samples ratio target is recommended. +To know how user-space can use this feature via :ref:`DAMON sysfs interface +`, refer to :ref:`intervals_goal ` part of +the documentation. + .. _damon_design_damos: