From patchwork Mon Mar 3 22:17:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999545 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 636B5C282D0 for ; Mon, 3 Mar 2025 22:17:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7103E6B0083; Mon, 3 Mar 2025 17:17:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5FB106B0085; Mon, 3 Mar 2025 17:17:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49C976B0088; Mon, 3 Mar 2025 17:17:36 -0500 (EST) 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 2D1216B0083 for ; Mon, 3 Mar 2025 17:17:36 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id CED8D14105B for ; Mon, 3 Mar 2025 22:17:35 +0000 (UTC) X-FDA: 83181652470.09.C5D794C Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf26.hostedemail.com (Postfix) with ESMTP id 3146B140009 for ; Mon, 3 Mar 2025 22:17:34 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=orStVIpc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf26.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=1741040254; a=rsa-sha256; cv=none; b=x1+zhiXZy3ERL3QxXzHkwsrsaCyqZUa8kJax+FIJVCIZaUehrQr5tgltlR/4xqVGYXWFL8 0D+I4VNjzgW4pJMA6sgNBopd4LRlPZxPl2vHY7CrjohIB1l48WHqwe4gMZjACSt1Z+uOVm SP9FWkFOmZ1QDwGmzaf0iqbavvIjsx8= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=orStVIpc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf26.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=1741040254; 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=gqGbT/b/OGBJ97ibcjSFPksNach3RFr3q1dIU+3TbLw=; b=5FmrLJpq9vtJSTlPstuylW93Gx1aM3WEyG3SiyBofiVlf81RKtYlvTnae6n57JRcEosCmF /Kz4Rd604f4Qi8mfDFwRjm0WLfIt/J/ZtsvfNsHFfqZaA0n+3abXqNqzleT1gat8zYUXUL 0bLmJr858wfgzgzpMBkrTKmFmX48C2o= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 6DB58A450C0; Mon, 3 Mar 2025 22:12:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D34F0C4CED6; Mon, 3 Mar 2025 22:17:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040253; bh=iSBVb6PukRtPBydpg/2aD8QyTDEBPd4vfWzy9ndeL3Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=orStVIpcjoJT1F6q/41W0z31q4TLWCnp1EuAFrsPs+gh9TtHFH/XXTbQx2bhxl8ql 4tcYU6baJ/m1Eh/86PgFc44ZT6xqCDUqcKWp73qgpz1lW47mOqJ1ssHY7MzjgSP5hl cKEmNtyT5XCs8Ex54DEOpsE4J/KuAwfqlXfzldCEYOGyxcoRX138EpkuXOnrdkWhqh MLVE6+9Sx1jWwBaF8zhMiVxjSszYhKBawGweYEHRvTPy+pRhlsa678qLsyr0bduuQE e1ZBmlvS+Zw+NpnMPuQEheCovxLF129gH1ra6fGo5Jum7LER4LhNFfw5C/oq1CED8q YLt5O+Ce5GMLw== 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 1/8] mm/damon: add data structure for monitoring intervals auto-tuning Date: Mon, 3 Mar 2025 14:17:19 -0800 Message-Id: <20250303221726.484227-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 3146B140009 X-Stat-Signature: snm5gz76c7khdencjx8xoss65tsd4zsp X-Rspam-User: X-HE-Tag: 1741040254-75657 X-HE-Meta: U2FsdGVkX19AvOevVWGETmfjXoF+oqBsplWUSCeUqgf0V3fOdJi+RF/szeockpFDVcN/NrG1/D+IDTeo8hhUVH/2MX9aqIqKbVJvIXg4KOxbnFXsJQbS13B4mlq5SaINH2G5MdCzArXZmdq5Wx81Jvw2zqlbOPTsDSRR418Jk2Kpp6QsPQ1vRluKBuZLbsb0vnxc+SEHhX3vv3K6u9benBhjNw+CT/2i/7epTC0z0rjmqwuDLXsPE+ZD5BuMHp3T40G70PW2thmyG/3kCoOOiyXOxkQj6CO0JKHWsC2f1bFsptMm+kxyfAht44uKNteQOeEStMcfLlYbRxfUoxMsCKyX2Xms/kcOHJQMxosN0ZSEAloeKgfZs67jZP5BnusKEyM8wVxWmjG3Y2xER+GASb6JBD3BNOlv6IuhJLyymEq1ao/cixr8jlTM+1tzAZ8CLrzCO5GiDPL+nIAZlwzixmdmTNtluMfeaIUS+IpJuzC5pf66qDS0u3Her6q6HGkSKSbcxWE8lkrrrr0p4XbaP2vhclbPriG/ZIJjwx7U1RZki4XJ0Ml3jfb1aLCbULu3T9ZUgYhRp0OY9DrY7rkRWGhU1Ar8q1ihV9lFu57iF7mHaSwAobArXAjufub5jWPw8fhC+PCvZUDp3lILWsN/9kqCt0wi/xb9M2U0S9e454zHtEI6X6p0GMLx3RR6uNGFZmhcQr0Xm9WhJsVMGmO87WvlNDvDHBPSsT6OyMGpiPNt1KdbmYRb/LU+F4eDcvjVQMKfWoBknhLnN8DV3+hbvfx4ajVTKlkkyguHsHEDUS1nhzCx2EZ9C6mXFUhTfanIbzRP7qu7M7zCY0eRBPRwctGapY+5nnFXnWg50E1yzVwYdU2E/jT6sWFRhFFPeW0uslvHISkVZHJ2UbQfZvK2t55rE+kSuisA+vp4VQXCevIm72QvYbdMXtkbhBpZedSKxXUejFSDRBi/6Nmjq3v lyQGqlFm lQWAL6q+5cyc5pNluuMAWNekMzEHHE7YTYqt+ywz9bjN1DjvtGV8nXmQpzHFQDiDgmV2fc0F+QZ0O3w5q10PNTVy63pnwBINJrZFP4JK5MVEVCmxE04+5bMrmOPBHFBPCz35LkHUzbCA7KSPwGfyvRsjbDXjO8Mvr3XoJULcy6fh2HLDHBuMfKoP3TL2YNlGeQIrgqiXTvz80GMECGCovwMoqJJQH93oh9/iOf4eaFAu1W0c= X-Bogosity: Ham, tests=bogofilter, spamicity=0.001031, 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 DAMON sampling and aggregation intervals automatic tuning that aims specific amount of DAMON-observed access events per snapshot. In more detail, define the data structure for the tuning goal, link it to the monitoring attributes data structure so that DAMON kernel API callers can make the request, and update parameters setup DAMON function to respect the new parameter. 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 242910b190c9..5f2609f24761 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -659,12 +659,38 @@ struct damon_call_control { bool canceled; }; +/** + * struct damon_intervals_goal - Monitoring intervals auto-tuning goal. + * + * @access_bp: Access events observation ratio to achieve in bp. + * @aggrs: Number of aggregations to acheive @access_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 + * DAMON-observed access events to theoretical maximum amount within @aggrs + * aggregations be same to @access_bp. The logic increases + * &damon_attrs->aggr_interval and &damon_attrs->sampling_interval in same + * ratio if the current access events observation 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 access_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 @@ -684,6 +710,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 b1ce072b56f2..ad3b5c065cb8 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -615,6 +615,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 @@ -635,6 +654,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 Mon Mar 3 22:17:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999546 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 B9130C282D2 for ; Mon, 3 Mar 2025 22:17:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A43C7280002; Mon, 3 Mar 2025 17:17:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9A745280001; Mon, 3 Mar 2025 17:17:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7ACB7280002; Mon, 3 Mar 2025 17:17:37 -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 549F8280001 for ; Mon, 3 Mar 2025 17:17:37 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D6F6D140D16 for ; Mon, 3 Mar 2025 22:17:36 +0000 (UTC) X-FDA: 83181652512.23.D60DACA Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id 3CD30A0018 for ; Mon, 3 Mar 2025 22:17:35 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YQZOp2wi; 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=1741040255; 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=4YR495P9DH4kNm/sTuls3XkdlFXS0JL4LQWg3w3elDE=; b=VuAtbhYcDy+1ejTIpAmIdcUN4JTtx5QoTD8aUnxuhwjLibQIUMWFOi3e9xS6vPEP/MoKfT g6elo1uujwniwH6ox2qPO5gD4nqzDq3dfubkpDtKf0Ra12jpqJ5a1BaJzJrZQIcp7Jbnov Z4WbF2xMv+oep9hzq/so64QyaSI7kWs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741040255; a=rsa-sha256; cv=none; b=SdlW2dbs9NkHlo+AcUiv2MrFHP8vPcUo86Ej8twXYxp3sE1BAFTQhtPQc6vQakEANcXyzP ft8sMJ+XZZCtCRMOTAJaKQyLEmaBVbM4PDkT9Fw3LhdIOP4ScMn++8njpzB4FSRaVwiaov gcAPCgrCzGZKMiKapJjqB0unbkmv6Z0= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YQZOp2wi; 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 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 891275C4A04; Mon, 3 Mar 2025 22:15:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EEAF7C4CEE6; Mon, 3 Mar 2025 22:17:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040254; bh=nNrODnOa9RS2rW/W7BbbOd+/X+ZlX/z8fAm6OpZQMuM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YQZOp2wi8QtcDcLx4CehWUfk8pKN1UIgYZ/j5qo/V2J5h5A+GDFVKRKrv7EjHdl9v 3vyvJRlzucFIzqJbwAOWT3fk3QqNzMjhlc6B+k6bkH2sDz/7kgow9Tx8t9l+UyuVe1 mPRha08uIuKPjp3NfS7Yr1znR7hrosDgbPQbje9al72s2j9TV6Fi7kPNmxf3pqAW2n awoPprDyb6B+JAvh1E3l6exNEhTZSuLb0RE6FhQsJD4mX04lzUTNOlQw9MFSJomVc0 NrqsvWlo5i8P5HIoXed8N+oYnRTVgQXlHsySAB+HtgntJTEoNrn9De/kIhwzgW8uK0 99F3Cd+AAoZfA== 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/8] mm/damon/core: implement intervals auto-tuning Date: Mon, 3 Mar 2025 14:17:20 -0800 Message-Id: <20250303221726.484227-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Stat-Signature: 48iqrrdoap71dhjs5jkuquoxmebq67up X-Rspamd-Queue-Id: 3CD30A0018 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1741040255-840551 X-HE-Meta: U2FsdGVkX19Awlb0VE32iXT3y8QkAVDrkeYxWvgkuxRk0CeytjqVonGUHZvXqTcGUtrecf18NQcAHC34mqBqRSswWJA1JFRi7W1ETKjnGeec41tRUP68gB14LHnR9TkJbI5p+UtGSnvw/PKBv3SXKZfmAbmZTwuNxwFHxWkQun4Sp4Rvx1DLVUrBj4ElvL7rnOfUQm+gx1+3caPuozfqnKxsY7lShpQ6mBXwoR9V6Ajfn1eKHm2Xcz/6HaxTNwtuOq8qb9r/TR9PJQTOEMTyga//2Fud2gkvFdvDaRC7GFdGZEg0PPDgn5Hg3IdKAlbpXO3DCThHK1VrZibgLyMNDonggYR4HN3RowL8Bd3UAGTJbRpAAAaK0K0Y52s5Zyq3PfaLri31Eotgvu4ZzVYyPDav+GXBhvNXr2JeJQmryiBYMgQQrtiyusHgYL+3LnNB08R9OW9U1U+8YGUJtO0BYeOiMXUoaoL4UfSFK2XfFFk9K2/JmjJsrSyzXvazZ+h6QGUBjaC+UB+YEE192XZLsw1YnXhsgQE1dqpA82fg1Q621y6Us6JZV1U4r04Z2gjYjHY0coVIFGH/b4NX0dADtzTiu6v9VhilKyJq+X/ew55wXSTdkA/66f4ojcIst5cFUq6mcg5CTYaK52glZtINtHuqTd59ueY1ZkPpiUrkAFVXXCiZmpmG0KF6qsmuFRtUv6dPE6YHSF6alZ05wGI+RgQSbQpVYfpF388JTvwuxkE09p86erhbBP51UlOIwa8UvE6TG6mKsIvK85gVLNILaUXi6u2stJ58mU2a6gkvzUy2ZzWK5EC6UWvu4Cy6ukF2TGqfHz+HHv5hO1hpDCR8Gc9q67jvxtKVpk7uDA3y0dk0YaJrCj6tgMBJbGI2rubD6oqw0RuEJ04Erq/7oAgRg4IttUZZ8aEf+daDVXBwrS8E08SDA6P4N0PeQY8nlXaXFjTHIDJEvQWNj/2flaK AEOf6OXE L0b/fyVWYtLDMUVn91GFAQGsSbuSnKjjbJGBU/OMnHuYaKZLCii1U42k6DuK2nabloBmL8BZgxBaMx72L62XZh5RGF5pCzrLTnQw3UF54I+TQMLqaMyzdGUEKqM1+D8X8/qeQYHOaDb/i3KaUFNmzoveBGWtgwCbPCrUtON7OqpifOgN4w747kjK/x46CN/4WAKP03I8bmXgq2G1nZ3RPP+jxeEqPjR2j8rK+21ALt1w/jxs= 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 briefly described on 'struct damon_intervals_goal'. The core part for deciding the direction and amount of the changes is implemented reusing the feedback loop function which is being used 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, though. This is because the intervals have no good merits at rapid reductions since it could unnecessarily increase the monitoring overhead. Signed-off-by: SeongJae Park --- include/linux/damon.h | 16 +++++++++ mm/damon/core.c | 76 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 5f2609f24761..b3e2c793c1f4 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -713,6 +713,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; }; /** @@ -761,6 +772,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 ad3b5c065cb8..9d37d3664030 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -664,6 +664,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 + @@ -1301,6 +1305,65 @@ static void kdamond_reset_aggregated(struct damon_ctx *c) } } +static unsigned long damon_get_intervals_score(struct damon_ctx *c) +{ + struct damon_target *t; + struct damon_region *r; + unsigned long sz_region, max_access_events = 0, access_events = 0; + unsigned long target_access_events; + unsigned long goal_bp = c->attrs.intervals_goal.access_bp; + + damon_for_each_target(t, c) { + damon_for_each_region(r, t) { + sz_region = damon_sz_region(r); + max_access_events += sz_region * c->attrs.aggr_samples; + access_events += sz_region * r->nr_accesses; + } + } + target_access_events = max_access_events * goal_bp / 10000; + return access_events * 10000 / target_access_events; +} + +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) +{ + unsigned long score_bp, adaptation_bp; + + score_bp = damon_get_intervals_score(c); + 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(goal->max_sample_us, + c->attrs.sample_interval * adaptation_bp / 10000); + new_attrs.sample_interval = max(goal->min_sample_us, + new_attrs.sample_interval); + 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); @@ -2209,6 +2272,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 ? @@ -2293,6 +2358,17 @@ static int kdamond_fn(void *data) sample_interval = ctx->attrs.sample_interval ? ctx->attrs.sample_interval : 1; if (ctx->passed_sample_intervals >= next_aggregation_sis) { + 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); + sample_interval = ctx->attrs.sample_interval ? + ctx->attrs.sample_interval : 1; + + } ctx->next_aggregation_sis = next_aggregation_sis + ctx->attrs.aggr_interval / sample_interval; From patchwork Mon Mar 3 22:17:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999547 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 727FAC282C6 for ; Mon, 3 Mar 2025 22:17:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 90B88280003; Mon, 3 Mar 2025 17:17:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BA66280001; Mon, 3 Mar 2025 17:17:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6E652280003; Mon, 3 Mar 2025 17:17:38 -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 53317280001 for ; Mon, 3 Mar 2025 17:17:38 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 007CE1A10F1 for ; Mon, 3 Mar 2025 22:17:37 +0000 (UTC) X-FDA: 83181652554.02.138227F Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf23.hostedemail.com (Postfix) with ESMTP id 47841140009 for ; Mon, 3 Mar 2025 22:17:36 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Soi9THCj; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040256; a=rsa-sha256; cv=none; b=whyUD733CtheFkfNrnYL0sBGcQ5i7rjo2TDsr7+A+067aipaKZ459ReruiS9H0AHhkUtcL poyytPsN/GFaXLX7vbeVBnRt75Ngk152X19TCLK6wcW7zyAvNI3GLvSO64+hPJ9E67zGdq aErOT9v/V647sOT8oFlWPK1/RuE/UWw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Soi9THCj; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040256; 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=QzvYG+cEAjM9AbEQ23ogKHWCItSVRW1Cs0pAW4+BkAY=; b=0rIqp7LOPXeqwS7W1iHloa4TsTLRE64mB8H5ei3j8oosAXTofg7PaOGebCIFEpJFhpurl1 hgumz1Jnyva5atyyOBacd11m6OganW1zyClNmu6fO0PtMezS5Ac8qVPf+2f+Zq05nQAyRR ViyL7XKiIkeMZqrSu2kEmE7ZVUmtRjQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B632E5C4A33; Mon, 3 Mar 2025 22:15:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C63DC4CED6; Mon, 3 Mar 2025 22:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040255; bh=oYTrlxmiR5BNoFrioFop/hpnftvDsKcm3PmL/H0/UqA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Soi9THCj2vEwCsPhfxxhbpnWH+DVFLPZsuCOYAcBSoInfDeSLhlJZDv24GLuUGw5W a2NOwqyU4qvSt+5s828s9NElO2yk9Ead4EfEC07tplzZBHpUDUmEVJlzAPHR7nA3YO IBJUYVhP64Ofv/tcQ3HrufgwhxzsB9mgYeoJ2sri319uJnS/2fjG95acUTeCnmJyvv CfOElNg8IijVJ/uEB4CKfT+7O5zMbf3VQPfqKpcZGT57mO9UBsIx0kY/CADLhPI/oZ SNGeJ+rbJk3Pbe4+vTX5b8zQdtyNMmHd6v5616QfD5Nshzp8ZITkND+USL0rVp5H4k YhwvrbXH2TU9A== 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 3/8] mm/damon/sysfs: implement intervals tuning goal directory Date: Mon, 3 Mar 2025 14:17:21 -0800 Message-Id: <20250303221726.484227-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 47841140009 X-Stat-Signature: ijm34fgqxu5mb5ii9eo69jgxk17q366y X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1741040256-897857 X-HE-Meta: U2FsdGVkX19jpU6oRlLBm4sa6Tjl72fYv+D8J4RMXqEND1zVopl1cLOEkPK5IOBX/VnPwAvwKZl8OISoFrdftIgr+2TdjoejMWkDGYPkM7Sr6Z+k4+OqYKCRV0v3EfzEHBh5VotDACoAXKB5GWL7zRJZ9yAULEjNfGiVxr+CimLH79fIxJWTYwPSdgMLr91xlU2hw30uyl+ySeLg7BAuuV/ltJSRT2G+MMeEljRaF7nhwazefOlAKdR0jsrWyyjE1ujCGA9Dm/MmheQuarCfZp7pl07FmVOYLrJHYFylhCoJRWQoRhq8mtS5FH7yAc4shEhwfOVgrFZxGG90zdscavw72fOEuQqINQr6CldIummXKw/2IZzZ/451CJXTzdSY1VtCENVP8TOooXgKbpD2JoBUrT3EgrtT2ZtSzWzNmTiQKwKXvOILaXXFNVbCFpnAXY3509S2pscAh4YIQzidNcVx781M31nwzleoctH/IP2xt1TCj6vYBSHXa1c0nYd7RW5d66bigBe25OJkxAPEQ81Na/UqX3T0YZx6KDTtv4xch/kv+E451+HR0bFtmObaOQBBdEZDQIljFCzDkyH3tUKTIdG3rheWOXCkI9oSGkchFPlUpTGlaZrMHLKy55cL2M7ZwFejT3o44HXQ5YablEZBLuvnD/ufq9Z3jEQ0KVwQYyJA502YqDVPtFosMoAZ2R/piwVy6B3u2OzW1roRFjfkskOY59kvIe4VNBOrgj7HJfBYL5HoLplTwUiRtItFdH3aEQ3z2iJIZ23kQciPgJBuoZwQcxo3NeKJSpztUyFXl7P1vKI9ceV6Rj5b80TLCM8VFiukk/bavydcUWduYKcDHLckbtPJYSuNbmnyOjhMVD1+NU4MMD01w+sJPyXrWpvPeA7KutLQx8/gSqWDNDkUCcBSfSP2DqPNBx59LqGU1F6VOUf1ioKFYbKszPZA+mkFMmwEGXYw9ep5YO2 MTQOXVxg bhVGUr0juuCS+98Gar/UBYMjLX+81f4mkQzLfnvhMNbbavREE1HOU92VNS2RvHjQotN1elxoFX4QHCwvySYjwBccSutlfU10JetxpJ/9eqfcCzn9pwYLPRB9ezdY0Jlw52g20evC60/YtsdCilwixyzwiBiX+f7J7qnICOn8MedKOX7FZjiosLAR8ifMOl9/9W9/MW29XWUxr6HhzrBRUz6/nY/8u2nJ8pPvUXxL0RUmd0xg= 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. 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..a772060300b4 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 access_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 access_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->access_bp = access_bp; + goal->aggrs = aggrs; + goal->min_sample_us = min_sample_us; + goal->max_sample_us = max_sample_us; + return goal; +} + +static ssize_t access_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->access_bp); +} + +static ssize_t access_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->access_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_access_bp_attr = + __ATTR_RW_MODE(access_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_access_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 Mon Mar 3 22:17:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999548 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 452E1C282C6 for ; Mon, 3 Mar 2025 22:17:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89745280004; Mon, 3 Mar 2025 17:17:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 81F02280001; Mon, 3 Mar 2025 17:17:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C010280004; Mon, 3 Mar 2025 17:17:39 -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 4AF24280001 for ; Mon, 3 Mar 2025 17:17:39 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 08CD814108C for ; Mon, 3 Mar 2025 22:17:39 +0000 (UTC) X-FDA: 83181652638.18.B617044 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf28.hostedemail.com (Postfix) with ESMTP id 79EAEC000D for ; Mon, 3 Mar 2025 22:17:37 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=kK4rXPux; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040257; a=rsa-sha256; cv=none; b=FhIpicET1wOTtl2OAvwuOkgRi3ErikGRU5knBv2EFPiDYu9AQsqeM5ITdk3OaG+wnHB/hV DoXtXzkNPQVhuMshiplF8EN3on+HoHRlsjjhvsWTh9GIP84cEGRK7ri9PeQA1Owz5LBC+D YrBezev3avGpugqpW2kIWjomMMrmFzQ= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=kK4rXPux; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040257; 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=8i/oEMB3GKvldq7PSmxuz4yWzXxV5X+RjRs5ixg/ZME=; b=xUiyV8htxPZP4ULu5+BVwNZr5Y565eGdorYET9OsOQjApQU/oSEdNoVWYLQXRMuxj3chqm qsqhsVu+1aMqXqBDp/kic+n5JS6a2cdc1oIlC/Rm+E+xqowJxNj9CVQ9g2gBWsYaj2wVYX QbwhY35AJZgDariUh4czmMQ8pCjEJVc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id E6D9E5C4A04; Mon, 3 Mar 2025 22:15:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5E13CC4CEEF; Mon, 3 Mar 2025 22:17:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040256; bh=0K6yd3M1vKE/q1zzJCXy7CoQ3azMzfYHIkHl3bOjRxs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kK4rXPuxpNviA59kQsLkirdxt+l1qKS/vAADRvPpMds0Qr4aQ7YDpiCbIY+dMDzTV X1LFXjyyk7uHgFOl1bV4WylbXUuJZKaXgWIa1QQdLQfogGFQrf5DpNf9tmtWkIzlxl g8/ocZWZJ2HRTWRHiaMe64JxsUK350bpmyi594RGUn/93wr4vrVa++ZsgPa9kBrSyY a66jlImRvAPLzueiEfCjsnln3kglSOsBccuYnugtve4e0V2mUo7snHRBIWnPAPZMSf /tTY31SzCeiVP9Bc6aYbYsWM5BWfmm2ugTimG0aHI9stWobSvDgoN0npC0+5ShEIK9 6bu4r6JrTh4fA== 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 4/8] mm/damon/sysfs: commit intervals tuning goal Date: Mon, 3 Mar 2025 14:17:22 -0800 Message-Id: <20250303221726.484227-5-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 79EAEC000D X-Stat-Signature: p5r4k17ypw63kb37zqkm6pcgouyhk1hk X-HE-Tag: 1741040257-19145 X-HE-Meta: U2FsdGVkX1+QXI4EeA86yObN06trkL1c7wkFMZB9kzUU1MmidUZ4PgMssSQD1pGwlUG9sSR5l2pTQEg6SwzdztpfaflpVPwLAlV8UN/5pW8zKh9ZbUwJP6Pi5QfFoLb7TFJaOsdsYNfKxQwyA4rRWJFH4NBOz53OJ9K1mKMpjG6e5Nr6I4wsPBLI4LZnuKVxXEmh55a1h7gLbEbunzCjn6KFkb4Yrk6Ucu4eWeouY/pJzKqtCEO0mmLi5DMnZ/ZnKObbhsKbAmnjI7dwjzH8cgv/XpOfBc0ZaDiJef62CHuZCIQ02mA3Fj9BVOqcQfj/5QTst33r2333RB/p1h367gWsP0Q3Hi5jXXTGrAMdsYWUORtix6t2UkWt4UKhTF2xaqeTO1SvAT9sXnqE4cXRpB/Nd5TtAgYnHgCs+8mHfRTq7xSA3lgRvD1hmDtyfobpn8f1mjQSi9y7bgvTM67VPvFO8AINPmgGVXb4DrYQXjJmV2+2BRrFBhDp18UPKYWBu7Oz+DCOfueMJSqYRnHCA/77drlfoxtfyi23TPVzNZDNjw2btsfz5VZWYX8ZxTF3TXl2TF/FiVavZtuYYR6Minm6sFY6bqi+GykKOKwgM9mysI12dHxwqYSQIV23lKdrqkB5CUppiJ2DklretN7ggQDEwFbu3N3XkKSZ6bI6B7mLuu3jLhoYbpVfslxyqkA/IjSPIa0QwAd/Q8FJearF3V9pl/Sc+7pI9lwLraMAZNFNxDHuU9T+LCjm5ISRCTXv1AaT7WzsGjVhx0GF3LHTY9cZ2aNc93zjnbc856snNzxrQUvOq4VCzc0+BEV3pnQbu6EHIfiFkoNLhczPgXybyCqGGVVwjlF7m5bKswy+keNCRNVYs/i5QBoO2/ChD2IdB2XeLG9wnLgxJHZO4Y8lslNDoBlAs27mbPa7H85u/hKjVxv6lPMjE2K8DAWBPcFY7YqqPC0VQwK4CpA0rKY /Bo2XeVZ Kuq3NNMrtR3ACNiQOqey0zWp3AtjFv5hcgw4m1yU1cgxGOFbinrKVK4zV5orGST/x9YSNCWDsZMPegYO+a2FnOE9dTl5uz5z7N1yX/vJYR5mk9l18QcXuUVncAbq9liilV7jmOOtPKOVeM4qt3ac/EhwSRgcqH2JuPIo+HFVVma3CyOaDQ8BBMj1v0oyR1ETcxht9j7bTluk+8gOZvP0zIxNyfM/tEbKCt/0FTWDw+mw7/8c= 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: 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 a772060300b4..fa5f004f0670 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 = { + .access_bp = sys_goal->access_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 Mon Mar 3 22:17:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999549 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 0A03EC282D2 for ; Mon, 3 Mar 2025 22:17:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5BD66280005; Mon, 3 Mar 2025 17:17:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 560A2280001; Mon, 3 Mar 2025 17:17:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B229280005; Mon, 3 Mar 2025 17:17:40 -0500 (EST) 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 1DA98280001 for ; Mon, 3 Mar 2025 17:17:40 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id CFC7E1C96C9 for ; Mon, 3 Mar 2025 22:17:39 +0000 (UTC) X-FDA: 83181652638.22.F1A751F Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf23.hostedemail.com (Postfix) with ESMTP id 3F0D9140003 for ; Mon, 3 Mar 2025 22:17:38 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=K3yMVWuR; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040258; a=rsa-sha256; cv=none; b=YfYyCxOYl9cx4jHkza/hr1sxB0zW+jBbZezRQ+X0ukq8RWin7hV9gNX+hE/149LIF/euHK OE+Xaxo4rthyG4iqLl8GAvtobwFlgaKiaGYNrpP4+dv960oYQgSNJmFoRtbGCyuSyqcaKA M4NLf9hn4Y5wjK6xp6hw38Xj3UVuGlQ= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=K3yMVWuR; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040258; 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=wecWayJya7F4S/L3tq2SIKHIfTBd/Rti4Uu+Pf2IOVE=; b=CUuEbFxkcPaxcZx2V6TdA6S7slPOFAyX6WnpIJDak+mhhmxu8mn2Q4vbj/Az1gR5IyDNhi sHjOoSUnxdMAyIJwIvvKwNdlShp5R6QCY+IviQiYpCdoX2O2Ytu06pXghN7uq4AE1i4gFJ xg/W/6tZhVb+Qb4jHOkuvEElMRrh3Y8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 278CF5C4922; Mon, 3 Mar 2025 22:15:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92DF7C4CEE5; Mon, 3 Mar 2025 22:17:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040257; bh=LSjpeMzXWVkQm84u7Pg3DRD/aAE+XvDLQxgeGEMx2JU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K3yMVWuRfTjd+OyCEQ1rThotSmYg5rgYu57djwTjR90VhkqveAnxODI3I0Pj4atbc j3HFSGmVorGtEjAkBwVCQqmyVl658yX+bMgKswz48VI1lXTx42RxuJ2g4SgDYWPFZy yvILiydHL10R9iiy+aARh+LsJ/oIfEOJyrnGyN2OKhsLLfqYlXRs9iJ0jiEAkKZXt+ vcG0ed+tEQ/o2YcJKlB9E+1A48j8Yw8lKAQZyiydaRBTPwNbc0noFrAs1fXFyzqVQU q6O0BUlIqc3ns5CY4NALEzVr+EUdusKWYmRzW4MgM1hF2U+Q8AAaDjRVw8hsGz0w+o e1nfPi6+CEJjg== 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 5/8] mm/damon/sysfs: implement a command to update auto-tuned monitoring intervals Date: Mon, 3 Mar 2025 14:17:23 -0800 Message-Id: <20250303221726.484227-6-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 3F0D9140003 X-Stat-Signature: sbq1fggcjy9e5qcsr5ztfwgyxzrmmbua X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1741040258-708021 X-HE-Meta: U2FsdGVkX19wp50tCO2efbt+rPA9hAD69DBgINHJpLOFAx+5qhqNfFV+ZKppTbUevzUH83BUgO4BL97pOsb2ifW6EgnwNXDTg7dKCChadVaqMs80/mHAXUXZ4Ma+u5rEcYlTzjLpNGSKx5wgaTOsaiJLR4MMvKBLaOi9GFbT59Fe/6wZbcNehEuA+/f6fmolO3bsMaTVArtni9pAA3wzHnJ8ntbeSGSlYsy8TTSlw+uTifG9/Zc/OJwMQg4XFzQmUWmE3T5pY/sGODpqBEJ6BFNM403bnZYYQVt1CMemLdEz0c+f79EegWwqsWaz/1EbOftCQbN5hdGcNm93eWn7k0CCPWNn2sdRDEMp6Ig1BHBf3gkc7ni4YW5xB+7knYuDNGHLqA5yalZk75rlF5ynfrj6NyLrivVmHyMBtoIfJLKX7hTmQuCZVHHAWTF2C1AZjqzOCop72/5/mujFQnYfaFpBySO4Y4jaoRJ0F9QdHYZXvd/yiwNeXRbif2zecZpEuN4xdl5e8pdynJxQMTbxkxmRK7i79X/4H9WaZK6EVqkttk0NJC9uSi+RPJWOgCfw8hJ3/TqSI6MoD4jj3RplAgi0F+eiOEyWk42sfJqO1CbVCvJxmL2NxPspz0J7PhAy06uwcXXfZFdmXB3GOnllnTiLWG3OO3wzWq96dAmtpAnU1zRA9/VHve1W0h9E9VXw2IuQV/GbhuJeWfJsUilzidHaFRJkEYsBT8sqVEeiE+BBukFyQjm3VjfzTo+/HLo4XO7yPY5vFMOUojXiTViovhT/6BsLn3Ljv1Fk/5l25gPQFSPze0bNJqEryqWxWVCEfzqUYSd6Iea48uy8uUp5STC2y+WuDOqrhFy1DupUifUltuvVhYYVj0QJ/SdbUBSarBYoAoFw6T7yJn6KW08IIz5TbP0RF6u/x35e0p6P8eS70kIGt/e2noVfvX8QNfEtAehFPGvHDsBnDYMSCFQ oOK9OedT vBLco+DwjmO+QMRUff0zu2BCg8d6WLM/J8cBq0AzfU5sCZI/Gy4TdQvVcg/irvhiRkQTSg0QxgKvtWieH/MY169uIAWk4LDaVpqaeYhpv3svRGTTJbhCkr6RgX+WH75/RGZBvmC0T1z6Iwcc0wrx0705xWFzA/JxE/gv3nq0gCqAVxxYyAqO3VFuSqKQLK/m36D0RqM9WwTM9K8lBcRNgDcG0RSY9M+T+aaI8OmrOYFO3V/w= 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 command, namely 'update_tuned_intervals', for the purpose. If the command is written to the kdamond state file, the tuned sampling and aggregation intervals will be updated to the corresponding sysfs interface files. 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 fa5f004f0670..ccd435d234b9 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 Mon Mar 3 22:17:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999550 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 81EB8C282C6 for ; Mon, 3 Mar 2025 22:17:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 898F1280006; Mon, 3 Mar 2025 17:17:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 820D4280001; Mon, 3 Mar 2025 17:17:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6BFE4280006; Mon, 3 Mar 2025 17:17:41 -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 4CFFA280001 for ; Mon, 3 Mar 2025 17:17:41 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E958A161104 for ; Mon, 3 Mar 2025 22:17:40 +0000 (UTC) X-FDA: 83181652680.14.5AD7AEC Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf28.hostedemail.com (Postfix) with ESMTP id 5B930C0006 for ; Mon, 3 Mar 2025 22:17:39 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ew3153Bk; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040259; a=rsa-sha256; cv=none; b=V+FmBc1xSTV+nGso6GiNeMNYhSjWFr3BdwRSwzW0gLijZiwQ35IMtc0b7myCNNLRan33FE PZaNP547ewDNQaThZkwvfzZX9jpkryO88QQj50tV0CRDmbmtPdiFM/Vkw+R2Ozg7H6RPsz sjMm+IpMPGt1fO1NdQXFAi+q5fprOKE= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ew3153Bk; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040259; 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=7VM1I87EjBHmFIzgLKfZG8vmPAT9RdZThPyM9eE4A3g=; b=oRABhxFiRmEvy/yC3z0y7wsEoF8eG41aOVFiZf3+oH+U4gGfU2ovtmgx2BNJhxx5FrU3Z3 BltUK4+O2HDdrtmiQtcUz+Xw4YDfKCKP8EOq5igJOwNaZJ/e9KeLlDQ2hS6cE+eERRPoJQ PAM7TUWWDUcOXCFkpdxhW5XmfKMqhks= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 49A335C49BE; Mon, 3 Mar 2025 22:15:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9184C4CEE9; Mon, 3 Mar 2025 22:17:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040258; bh=LMPGQQlkmlc7oVmDROz8XiqF7P/8GVFp76QyeCU2ENk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ew3153Bkz/qxViCicAwx/SFps15sAAj5PmKnsoDtHn315GlNdykMREPudSZZ6nR31 jJN/cH18UFfaV2Va1eipv8RD9qWjVteCcoNWZG5M/1X3WuTiSi6KEr8DBcQd65Qbhf XntXeBf/VKlAeHyWEGdP+DpTwTRoIhxBdGvQ03vo5P9YR9ic/6WcQVU8Da6jhTKEJU kbd1YWhn4+pkfgJdzDeDcbIG5Gbxs1cZ4mvIbgNThflnMbnrpEFXLoFk4PrlPXhV2A dAmYkbVWCrA2mpP/jVmQ0WLjWfYWbTkJzVZQwAUtlH8OyDHtwxEwhmO0TK8aelxnQL DH1jB4tIGO+nA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: [PATCH 6/8] Docs/mm/damon/design: document for intervals auto-tuning Date: Mon, 3 Mar 2025 14:17:24 -0800 Message-Id: <20250303221726.484227-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 5B930C0006 X-Stat-Signature: ti87qh9kdaf5xu1cyqs3ahry1skwrtfj X-HE-Tag: 1741040259-886124 X-HE-Meta: U2FsdGVkX1+uYOoK0vUlqyw/fTrSacbQ97An8nD6S5szde+PLOhQnQpbbVp6y5LXgrIHxbwk5smr6L0tVOkHBbv7U6khmEDYonQVcFn7MRv3URHU2zWrEecLUJrHLgH1j7dkCchyQKJ1mj7oYq0dksJrVTPjqtM57JCHQy/qR2Fp/y/r5P8cq/vUE8MLeaeNv0AoDPhSrY/7ovS7/CsWynEPZsAVnVKsOZYrimK8h73YqZk6+CmhTqllfw6a1qstzmjlN0A0s9gaGeAyld0GQRX9fiSIMSangDu+f/RIPxJKwoR1rMw4Gsd0pfBCxjvTDX2YK38JdTEy+/kvOaxqAbS3xuV1GxkyDGTlyYHijx71/ikzKtjYVfxYCEkBN4zfBDfKvv3R7SJGPU8/1upiPiehDbBq0LrKC5EiEDE1BWerLlzls1V42CgKRQKUt4TwaTA6Ioeg04IJjYNircWeZ+UtTymHt3QRlrkZjgPl7SZ35fps8l2xomKvUEzjadQ5KxcHCVVu/bh7B+GvsT9Xy6epaRdSNLs9cNcJ1YM1JEV90jO0ZETIm9JwKEerOJZA3zIcQ4Eb8oYjWccpkpBUS638obcI+zWcckMW+46huFZV5aW10sCrWbVAlrE9Sqpl4/VKrXRIJ3vTiDz0VloKMNrjWkbvI9ITsv9A3zCEJN5/C6JEVhgeCMC4BGFjRvD9d8uvIAi7dfFD7n2eIMUngJl+8MxCeDZLz623hb8Ae/3vvUT/bWxg1EItYVGz9Wbx8+EO6j6EZKSbpp+80VfcQrDPOI9mWjuCrQKqBreCfgCpz1gP5ChPO4/6eZT2e9h1g6jNVp7aX5BuP1YwO9vxdeo7n1BDraggbL6gmcnQwLYvH8XGiKd6fZecxceb/hwTc2/QnNU8k+jN1bELeJJ+kJAKjO+yc0BX8PbIzg7bDCe836MrKnXKjGNWYDxZNKDgEFhogKQuCFiSj0U6Le4 Ld/fir86 Qim1VFQnBpsSBibxt4ZqCoP0IEucBoCC8SYD/lQfXz463t3GXEI4cmyqriWIlYvAbc8phsRtilXzlb45Jc1o7wM1oDXCdLGuOCMjcdWwFRbK/phuOtXOQqe2hgHNrHb1tfgPAMj5rlUAFrsWBKsCYrbJBr+z2EU4fidYaaT1Ai1LsDV16gBw/AjpILkYSf4dqDzt+4QBMHwn6RznEWngrq/5BEJJxQ0doSshmofubfoZC1K08kgFOKPDMxX1iHRwMtAESbYcUoEHWudg= 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 design of DAMON sampling and aggregation intervals auto-tuning. Signed-off-by: SeongJae Park --- Documentation/mm/damon/design.rst | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/design.rst index 5af991551a86..cb388d791ff7 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,48 @@ 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 access events to observe via DAMON within +given time interval. The target can be specified by the user as a ratio of +DAMON-observed access events to the theoretical maximum amount of the events +(``access_bp``) that measured within a given number of aggregations +(``aggrs``). + +The DAMON-observed access events are calculated in byte granularity based on +DAMON :ref:`region assumption `. For +example, if a region of size ``X`` bytes of ``Y`` ``nr_accesses`` is found, it +means ``X * Y`` access events are observed by DAMON. Theoretical maximum +access events for the region is calculated in same way, but replacing ``Y`` +with theoretical maximum ``nr_accesses``, which can be calculated as +``aggregation interval / sampling interval``. + +The mechanism calculates the ratio of access events for ``aggrs`` aggregations, +and increases or decrease the ``sampleing interval`` and ``aggregation +interval`` in same ratio, if the observed access 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, 4% access samples ratio target +is recommended. Note that Parreto principle (80/20 rule) has applied twice. +That is, assumes 4% (20% of 20%) DAMON-observed access events ratio (source) +to capture 64% (80% multipled by 80%) real access events (outcomes). + + .. _damon_design_damos: Operation Schemes From patchwork Mon Mar 3 22:17:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999551 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 B6946C282D0 for ; Mon, 3 Mar 2025 22:17:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E897F280007; Mon, 3 Mar 2025 17:17:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E3AC2280001; Mon, 3 Mar 2025 17:17:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB52F280007; Mon, 3 Mar 2025 17:17:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id AD3C7280001 for ; Mon, 3 Mar 2025 17:17:42 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 65CB51C97B8 for ; Mon, 3 Mar 2025 22:17:42 +0000 (UTC) X-FDA: 83181652764.28.4A82DBD Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf23.hostedemail.com (Postfix) with ESMTP id C7948140007 for ; Mon, 3 Mar 2025 22:17:40 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XfdZWy97; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040260; a=rsa-sha256; cv=none; b=seSMajN9hbYUaNlh+Td6ph4B7a1is39o1/517ZCkKxWBlAEM3a8/CXFOrejZJMfLnsDRit +UGg/u/BVlX+LGS3LOgQukuUmpCZI9/Rkuc7C3o1JYgPN9R5nKmragYJXd+sx+Wq48jlcT PEIh3hwdrxKXdwuVKWdU8EED304QmJ0= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XfdZWy97; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf23.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=1741040260; 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=dGek8PgD//8b33RZsq45ZI0evDJOCaHUqC6S0BqNXtc=; b=r78syMw4U/sZ+yMPCZWHceXQFquOPOUaJlSHNkPS0KS7qCJBPBiVSVrchnrsQjx7APVPuF E8wKfoTPBMAXc+19T/Nm5hgzr5OyA4z2dcXJ8vhHeKZIPa+5pj1tFQzUEw8nqrT8q/Lq2Z XUJihQMNK5efWAYyDuhXmbrLWyxfRww= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B5C785C49EB; Mon, 3 Mar 2025 22:15:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 092DCC4CEF3; Mon, 3 Mar 2025 22:17:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040260; bh=XpcVMfDACd++qb3Pq98x+XaZ3PfwwLWSEoYntOcOzFw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XfdZWy97nH/eiYY8CQK2C3uoDHTugsPUgNxPosNITPG8ev16imKFJzsHQJ+RnLrm3 uhctjWkLWWpklHpE42SSz1cs1QJhNssM7NnzRx2i7MElFJ3dvRHC7PMSAfJj7ji08X DUOQ6RJnH7/JBEqrmpk2eOqQF9fRck0Jt11ZuVxAs7Eo4d7IVuhn5h+m/qJcKEmEC3 x91GNxG8Rw7F38NSca/3dIR2jfU6Sr8vMxXc0p4WAFuMpIxhVNJOma4+7kTsTmtZX8 TfQ3nt5nW+pmx5q2+TSNfjadw5XsHXvaSBd1NcYZ/K5oxiFYjuEIpDHJOAv5VLqBK8 AvLHkF0doBvHw== 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 7/8] Docs/ABI/damon: document intervals auto-tuning ABI Date: Mon, 3 Mar 2025 14:17:25 -0800 Message-Id: <20250303221726.484227-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: C7948140007 X-Stat-Signature: whrmfedxtmboowdhhp9qih41u86mxy89 X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1741040260-731551 X-HE-Meta: U2FsdGVkX18Bgv4InmhH+l1waYq1UBMwQfpgtzcXvWrQU6Us34kM8nHSqdbTkPQJzJavuN9+/7diyBwBxP9fLwEn7DtoJaWzRJ3OfvP6iFb5CWFCLIFuJG9/ep8bycV3fGGGL1H3UhBlBOS9JxLwbQY1IglEa619EmLkKHlInqObuOU/jA0AN1mfQFBJ68cufXpHOLWY4ab5Z/G5th6SxJPjsMW7kVuAIBPXov9fxZUrWqBQcSRTcOpUHuxrExZzA7UWF7GtZdMwsnxw1prWKoPo9m7cxPdFO8x9w3OP0aUv8mJpefbruNkFaXns2Z5J+ttCdxsBwpibbwO2+MOXbh0WDRSyFDJb0rrRo4q6hTScok8rXSErF88MDqT8ei+Zxpmllp5LK3dDhOUISiO19bnUfWJIqQuYqD/R3DbdnZudZfP8xf9xxYCNshVLQfbZ6hhkgEnt44aCfkBrEY1moqXAxVhIR0Itwz1pDjRWiKxM7siJB5vWYhFH/4/CrGnZ9jTkRCi5Yxha9iBHq/9YgvCaKukoaXqmRsJxIXP9TJZjY60T8YTGYaKO8r2YCBVhbHWtv2HGBAjkNDs7dpjXd/mEv1cq1glDaTn3NC3yeXzTG+XKwdGtcL66JjuIVj8RGkmsue7bYJUuXvSGxU2LDAkS1uP54j/YlnTIeIOz1XszXhzHVq09C984eyJDAl66VmDAuKgHgn43/2BsukSzQ2hwz+24P5rkv3hG4VACXeyDRTaTKMy/zTl1olQVomb/2xyHpHpEfBlvQEBkEPXq+sRG7P5YxBWxrM6GVSqBK50iTOqhvgjEnKfEfURMMvugjVyHW/sha9nHn0ZtCexBD/eX9V8vaoEo9TfiiwnvBTzhrtlgPH4Rv+UUUtwic8/VNTR/qIF/7pkuFvcK43U5fxExM/eVgmn8rrvTx2Abi4w1F2jZPNLiv0mLpOqMzoFaSy6RzUm6C2uJLJMKZls zQezM/hi 5rb6u5cGP0EG1I16+mueXNVCsukCCm5KSpooXm7s8RXLC+V/uE7OIS5T4YVsrnA74zjhgEFBywKTXfl2PlldD8xzgw4HGG64CZorvuS3I0tuph7adiivuCdOHVPFS3bf3fHSBzzPdDWzpQwYPcvVVRDvOq/+sVXl0vy+m4w32cGHsMas+moB0Xy79UOeaOaDVf0Eo8wNHSjy2KcYh8kHp4o7ae5V9wMZtG2lFF2viPcsSgV/AwdvdbEJL8f83xDiRkMR4L0lYaA7ZxWg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, 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..76da77d7f7b6 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/access_bp +Date: Feb 2025 +Contact: SeongJae Park +Description: Writing a value to this file sets the monitoring intervals + auto-tuning target DAMON-observed access events 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 DAMON-observed + access events ratio (access_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 Mon Mar 3 22:17:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13999552 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 362A4C282CD for ; Mon, 3 Mar 2025 22:17:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3DBB8280008; Mon, 3 Mar 2025 17:17:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 364C1280001; Mon, 3 Mar 2025 17:17:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1DE72280008; Mon, 3 Mar 2025 17:17:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id ED2B5280001 for ; Mon, 3 Mar 2025 17:17:43 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id AC86AB6F45 for ; Mon, 3 Mar 2025 22:17:43 +0000 (UTC) X-FDA: 83181652806.06.63B487A Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf28.hostedemail.com (Postfix) with ESMTP id 0B6B2C0005 for ; Mon, 3 Mar 2025 22:17:41 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bSqjdJHA; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040262; a=rsa-sha256; cv=none; b=3mBev8K287OWv2BHSS1QkRhR0moeuDsxxwcicNFsG1dsPhvDqPk6dmtYbmImKNxnwy1A1c P4I+TSMJh31HG/3yIeIEoDAWiQm4hXFsGYT8vQ8VI+FLuGFD3g6F8ZRV4CDJfWsoLlO8w7 lDcghmbIe6UZVRXbDAtEgNkPqe0ttIE= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bSqjdJHA; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.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=1741040262; 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=qrsAeFb7V7B14LyH2cSpmWanaLlO10JwOQH/6uEEzBo=; b=21guyw/uP3YJ1jsTn16L5lRJy8ysECRxKZp9PzkFGxQ/P5TnYthlC/PqGkqHMPIhe7Ygs6 vljP6MaIhN1gKyPgmTq1R3in98LO8zjFsKqJb5Yo5eg15s5Xk32MK0ZNUqvNFitpnv/LfO C5IxhILgynaklC7BEqLhMuAazB85h0I= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id EABAA5C49BD; Mon, 3 Mar 2025 22:15:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4CD32C4CED6; Mon, 3 Mar 2025 22:17:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741040261; bh=ki10B3zR5mixA9j/A7CWQx5SObRymhGEPj5DgsDuWCo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bSqjdJHAWbCdKV26S5QgEbhmE/6LeicMKJ+wZON2b3jtP32CDTJN8OUy8U8OY7syH u64jhcgK91le676PO9VA6Vmk32Jv73Zy0spDofUVWFUwh2KV8KoZboLwh4F6Y6sG/X QwDCblpotBaH8hZrUKCgm2GFZ44sTsxbteMzd0GqOgDDRQ/oGMOA3PQIqpNybb8FBs ByTkVeW2FI03SCLnn4RHpRyQWXT0Gb0iJVGQgzf83PjqR72I2Xenb45FltOLWcHJ72 E8/IRa4wDv4/hKWWK4PC9qEBkIo41NxYaGiEmj/Os9LLrGNPdmIMzh8+RXyjPPnf8e jpAtHzLHxn7Rg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , 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: [PATCH 8/8] Docs/admin-guide/mm/damon/usage: add intervals_goal directory on the hierarchy Date: Mon, 3 Mar 2025 14:17:26 -0800 Message-Id: <20250303221726.484227-9-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250303221726.484227-1-sj@kernel.org> References: <20250303221726.484227-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 0B6B2C0005 X-Stat-Signature: wz1ypf5pzbkfkohwmeoty9npbte9m81e X-HE-Tag: 1741040261-6458 X-HE-Meta: U2FsdGVkX1+4Yldo3oPCWeqaA4LwA17r/eBT9qhz06Nto8oVnLqSyux7ZuC/KF9+Mhz6JP68F/oykYBM6TTslUJ/I/hDO/JlcMSGGqJkaM/81m60wHHolxo50gzQUb0xKQyFXBFRA5RdCqT31LCejiDuHBGwlaSmoaqDkaY4i6TNGK0gjx1NjM3zQGLBTHeFIT4EDL0y95QaIpydRBldy8lRPPTVVXEAyxUkeXFwETZatsaEdmDzzd5X4x2hJieCydlCzk+uh5E65CKVu9ZAFS3OOf3EqvFFSW83e2fYaNj6Qbh9MjU69zSQn14b94p+isuqKiOeJYg2MQ/7MT3mg7xFjSIe7DcyTCY3SMPd4ADeqqyihOA2jR/yygl6BQSfJQlb88uKP1ZiyH/+CiV9NVsxoDT7LThlRfZfTQs3KrhokaIi92rwugX4M6WtcX125IoWLv6QDFH6mrjcpItL8H+pTI/8YWpXauu66vCXPr+klboZ5Qv+z37oKdGmxMYcRCLjg8LVMYAQiVHlECIv3tyhpYTMdZhbvr9MTvNvbRkIdf64RWmxfkefT+/j9PrE8ulhlC35tFKriYN52jQ31exbuahJbaW1TALPffSnYMAy40DzIZJPbBd+vsfxHAt1AWQxr3OamhWrj7K3BL2MGyr1kvcoup+vChKycChbqrrtTlIWv4uPO0MRq46rz0ttNnAQzeAm80X8u3JHKz+7mV89SqjtTQbHVMUj3uRUabIqJnSo5MsEdK5bNwu9kIZf1YWaBXeOWGrIUMk9Mg4/1NMXTtYh+l3TDsXzwX6aY+wqUmOidOAL50ybebcCudSl7CGb6Bln6i1cVZ7KP+MTrZ9clWpokj13bjPEAZ65lVw+LNUXbw97ZJbzMrqb29Gp7pCxfpq6DJcVMdgXvr4oAv/wLF7nowWY/Xdqpif3zhO5Ykyb1GuwSprJDM8b8gnlihUdeY1jmtWAPcNbkWf yyleXSOH jc7rudQR3cAw2Z2cyZ2hV9rU1CZaSvO1rSQD/4APMb+s/RBXO1JTaQ62e5dT1WGk46ZzbDWp5n3N/jPNrsDWi21NvBZTkXDFc7MPjV7HFwWTuU7836IJjraOa2cmH8pckT7FV1UhPopleNA4voPzoGbUOVCrWtRoIOF76+BuAnEiXKDFmAC6/K0PKlHbtMPyeFvgN7tfsOFry2tBQrEf29rw3Lrh87i6Cn5uhTwRu40H6oJPzcbp8abSPZLpXfUP99F/ueOiI65LAHb/GwevgL79Jr6YOvaY3c5/VuaIfqoQFZQnsBrPigs00+UA2u+psKHBz 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 dc37bba96273..de549dd18107 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/access_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 +``access_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 cb388d791ff7..26c9ab10daf7 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -366,6 +366,10 @@ is recommended. Note that Parreto principle (80/20 rule) has applied twice. That is, assumes 4% (20% of 20%) DAMON-observed access events ratio (source) to capture 64% (80% multipled by 80%) real access events (outcomes). +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: