From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD9E534253F; Tue, 16 Dec 2025 08:01:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872104; cv=none; b=LNWozP1PpNeqa5Og5tBSrQezr7GMoHa2PD98cFPkONhO16WuvREUmVtlYpgi/BPZF/Ji8u4G23dKEaJ9s0scM/RPWS5kplLfaT8qNO8lSVT0s9x00mc18BIUVy35XJLKc5LXDrr1z4IDtkfpMbqQgIQlyuGl/j+ERNumazjs5kQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872104; c=relaxed/simple; bh=FHEw5hu5B8m0TfMg+08OEnZOsjSGxKvHndmP4M5Ow1c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WSIUKIU0NJ6bdc+DQfeSASRfjF7rezd/Tqk45T27Cv8vhoVnv2uxVvQIvwbMW77hv5Rzu3uKo7B69yDQkD7TljHtWVTjTPh5NtdqwmciBoJyDQiKbAEg0W9n2KThS8nDMqWNER6I/5feHfQQ+0LO6g1k5C4x+3xb6HIiCOPFz8E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D6bSg4ZK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D6bSg4ZK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D2FEC19423; Tue, 16 Dec 2025 08:01:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872104; bh=FHEw5hu5B8m0TfMg+08OEnZOsjSGxKvHndmP4M5Ow1c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D6bSg4ZKdyQZYD8/5fdt9puKkD7nDp9CqTQM85B6Cujj2f6wuAeQamtzQ0fxuB/bK Pfw5mwujN9mnggDHLTLFtyvAvCA/0bmDVgxVZYbo0V0pi2Sk8GoWmi2vPbELWzd1AZ 5jDqYGrCnLUKkWQ7YOlMr0CYDc1VGF1It8jJfs7EHbB4by/f222ZygFB8B+6GGfOTL aFFROa5vc+sNKhHBMPZSy+l/A54w1hy8n4PeKvpa0FojLKtagGqY3ttBZrZaH85kAc 8SK4mEZnybP+eqNo3652hdmUnzSXo/lv2t80y37HIt4ZOcecE1AHaaWG8YhYUf8MMX DNkmOeY7nMdLg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 01/12] mm/damon/core: introduce nr_snapshots damos stat Date: Tue, 16 Dec 2025 00:01:14 -0800 Message-ID: <20251216080128.42991-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" DAMON generates monitoring results snapshots for every sampling interval. DAMOS applies given schemes on the regions of the snapshots, for every apply interval of the scheme. DAMOS stat informs a given scheme has tried to how many memory entities and applied, in the region and byte level. In some use cases including user-space oriented tuning and investigations, it is useful to know that in the DAMON-snapshot level. Introduce a new stat, namely nr_snapshots for DAMON core API callers. Signed-off-by: SeongJae Park Reported-by: Chris Mason --- include/linux/damon.h | 3 +++ mm/damon/core.c | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 3813373a9200..1d8a1515e75a 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -330,6 +330,8 @@ struct damos_watermarks { * @sz_ops_filter_passed: * Total bytes that passed ops layer-handled DAMOS filters. * @qt_exceeds: Total number of times the quota of the scheme has exceeded. + * @nr_snapshots: + * Total number of DAMON snapshots that the scheme has tried. * * "Tried an action to a region" in this context means the DAMOS core logic * determined the region as eligible to apply the action. The access patt= ern @@ -355,6 +357,7 @@ struct damos_stat { unsigned long sz_applied; unsigned long sz_ops_filter_passed; unsigned long qt_exceeds; + unsigned long nr_snapshots; }; =20 /** diff --git a/mm/damon/core.c b/mm/damon/core.c index 53fb988b6a0d..6f3328b29a65 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -157,6 +157,12 @@ void damon_destroy_region(struct damon_region *r, stru= ct damon_target *t) damon_free_region(r); } =20 +static bool damon_is_last_region(struct damon_region *r, + struct damon_target *t) +{ + return list_is_last(&t->regions_list, &r->list); +} + /* * Check whether a region is intersecting an address range * @@ -1949,10 +1955,11 @@ static void damon_do_apply_schemes(struct damon_ctx= *c, if (damos_skip_charged_region(t, &r, s, c->min_sz_region)) continue; =20 - if (!damos_valid_target(c, t, r, s)) - continue; + if (damos_valid_target(c, t, r, s)) + damos_apply_scheme(c, t, r, s); =20 - damos_apply_scheme(c, t, r, s); + if (damon_is_last_region(r, t)) + s->stat.nr_snapshots++; } } =20 --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01E64342CB8; Tue, 16 Dec 2025 08:01:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872106; cv=none; b=VS5NoCp9exMnCijR8kxLz5gbbBSArpNQxH9QOxBHAewVzVQBKaMeU74nZfaPa9qGHr52Jt8MRZOAfSx4OI5I3ZXcdm4NaLyd10QBhFbi0uTJHkCwfIfv1M5ojKPvNvGMgjyg/rutCDTOJ6VVK/3Wv3ndfjKfjqyTHrJdxuNllnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872106; c=relaxed/simple; bh=EheTKTWNwlESlsGw3Z3YuTZbvfPyPa97pgV7/l/okj8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WmA6kYuYTHfrQnAO74tdsbOthSFxuhBqnOnR+/7YtfSVG6OqQr5u82vUc0Cc8b3E5+qEEY2ck/RmB2itIH1rzM8/YxwUa7yOR/ucxgBzvBfoUmrApP6jR9P2swz/3ALyg9r9pz3JmYHUMsp2u4ylKg6KmY6HlhhQNRNvTPPx9Cc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PtTftagF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PtTftagF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 93556C4CEF1; Tue, 16 Dec 2025 08:01:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872105; bh=EheTKTWNwlESlsGw3Z3YuTZbvfPyPa97pgV7/l/okj8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PtTftagFA6aDpibycmhBVk+mdFNBF0N5kixw4SIegT3Uk5eNoeKz8vtoXLTeZ+k5Y klim1SnBtXXcyu0Twva67/CC+W9QK62Wgr4GNAzIdXXYEyMs/PZJfgy8IWrQZFAJ46 0eMnkH/nNRMGP9ES+CbFoWPT3emcFnpQbYxhrAv2ZtJQEV94SoLrON3OZvBbfx0aW9 3RUrK3v3UmPVb2/CBmWsjbb0QCE5MMaSES9M1SuUYJ9j0iBTkgKewWprEEYRdZun69 jdDoAIXYASZoWgGp7N90a0A6Jzq4sC2NNV5Amy2gF4jCEA/o2ewXfbWob1ebCJczjM svBhe6cSBUouA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 02/12] mm/damon/sysfs-schemes: introduce nr_snapshots damos stat file Date: Tue, 16 Dec 2025 00:01:15 -0800 Message-ID: <20251216080128.42991-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce a new DAMON sysfs interface file for exposing the newly added DAMOS stat, nr_snapshots. The file has the name same to the stat name (nr_snapshots) and placed under the damos stat sysfs directory. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index a71059e65d34..a1f555e1125a 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -204,6 +204,7 @@ struct damon_sysfs_stats { unsigned long sz_applied; unsigned long sz_ops_filter_passed; unsigned long qt_exceeds; + unsigned long nr_snapshots; }; =20 static struct damon_sysfs_stats *damon_sysfs_stats_alloc(void) @@ -265,6 +266,15 @@ static ssize_t qt_exceeds_show(struct kobject *kobj, return sysfs_emit(buf, "%lu\n", stats->qt_exceeds); } =20 +static ssize_t nr_snapshots_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_stats *stats =3D container_of(kobj, + struct damon_sysfs_stats, kobj); + + return sysfs_emit(buf, "%lu\n", stats->nr_snapshots); +} + static void damon_sysfs_stats_release(struct kobject *kobj) { kfree(container_of(kobj, struct damon_sysfs_stats, kobj)); @@ -288,6 +298,9 @@ static struct kobj_attribute damon_sysfs_stats_sz_ops_f= ilter_passed_attr =3D static struct kobj_attribute damon_sysfs_stats_qt_exceeds_attr =3D __ATTR_RO_MODE(qt_exceeds, 0400); =20 +static struct kobj_attribute damon_sysfs_stats_nr_snapshots_attr =3D + __ATTR_RO_MODE(nr_snapshots, 0400); + static struct attribute *damon_sysfs_stats_attrs[] =3D { &damon_sysfs_stats_nr_tried_attr.attr, &damon_sysfs_stats_sz_tried_attr.attr, @@ -295,6 +308,7 @@ static struct attribute *damon_sysfs_stats_attrs[] =3D { &damon_sysfs_stats_sz_applied_attr.attr, &damon_sysfs_stats_sz_ops_filter_passed_attr.attr, &damon_sysfs_stats_qt_exceeds_attr.attr, + &damon_sysfs_stats_nr_snapshots_attr.attr, NULL, }; ATTRIBUTE_GROUPS(damon_sysfs_stats); @@ -2760,6 +2774,7 @@ void damon_sysfs_schemes_update_stats( sysfs_stats->sz_ops_filter_passed =3D scheme->stat.sz_ops_filter_passed; sysfs_stats->qt_exceeds =3D scheme->stat.qt_exceeds; + sysfs_stats->nr_snapshots =3D scheme->stat.nr_snapshots; } } =20 --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9BDE343D7A; Tue, 16 Dec 2025 08:01:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872108; cv=none; b=twiKg5Ca0/wx139da2eEQrqX+62ie3EM57ckmQhgaiUff+Cq52vD+acFeMHArH9hX0e4P6NDIDHDn3OETzezD02PMmx5HMc+9EGMGiDvYMhc9+4sMdCDPLGUpRkZ2bs/YJ4d7C9W/K0C1zyW3V9B2oAv4M0Je9q9RkqbnTcsBLs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872108; c=relaxed/simple; bh=vPTC/eKfLkll500maYdRrQDlL8kK86gyaCZ9jL7BWDM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pPohkOgCqSZLhZyJt9UPlfSwGi10VBNUIteFkefIIqyFofn/CIS13E7iKBmykw8mF5T+g1mcnBFMzf09XTy2fMj/f9tUFdWEdpGx9rIunRdjUIZk1NY79zlPVc/+sqK9+8b5N4KsXreZylutzx7EZ/RDxv2rKNZazTruqR/+rJk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jtpzAqkH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jtpzAqkH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4F67C113D0; Tue, 16 Dec 2025 08:01:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872108; bh=vPTC/eKfLkll500maYdRrQDlL8kK86gyaCZ9jL7BWDM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jtpzAqkH2DntmX+MprFRlCH+lIqo86TJxG4y/kKAFPeKlPFv9vGRRySqPPqPcD4ed 11YtHV8qLbXjPl2Z4WdT82t1Nd3HKLejcCG/T+nbU5sYpXB3KEOFO4+yDWv2gupU/z 6R10ZPyr4X4pEscy4HDRprbkXwzUA+DIuIAhKP8AoPYeFwkNZWRrhkwclKxVMJwpah rymGGtWc4vmj/1TOEURkmP1H+kpMoYJm+HROutNt5GEdeIkVHe7aisLWQvdMM50oyn s9BKuBu+Wy3ZyzsJpU4i3sjHdL6ONOmqDU8i+SgkzbbbHeDjFEBmCcgqJ/ygoaE/2L L4mnR3FuywvZA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 03/12] Docs/mm/damon/design: update for nr_snapshots damos stat Date: Tue, 16 Dec 2025 00:01:16 -0800 Message-ID: <20251216080128.42991-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update DAMON design document for the newly added damos stat, nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/mm/damon/design.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/des= ign.rst index 2d8d8ca1e0a3..5cc7b7d662be 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -718,6 +718,8 @@ scheme's execution. - ``nr_applied``: Total number of regions that the scheme is applied. - ``sz_applied``: Total size of regions that the scheme is applied. - ``qt_exceeds``: Total number of times the quota of the scheme has exceed= ed. +- ``nr_snapshots``: Total number of DAMON snapshots that the scheme is tri= ed to + be applied. =20 "A scheme is tried to be applied to a region" means DAMOS core logic deter= mined the region is eligible to apply the scheme's :ref:`action --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A3C534405F; Tue, 16 Dec 2025 08:01:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872111; cv=none; b=l0uNwLaH+ZxC6QVfgCyyH1m4dwr6iL99I8OhMi7KeaO57zbwRhY08f52Q1JjrysIhrBMvyyAMdYspLu6ZPnbCdpKmWp+jJ5NRJQGUuaMCOtXRcApjDot2DsI9XKE2g8OvKRRAEg9Ij3ttbCdujiEpOZrpynvbpVc/ZcsR2H+AmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872111; c=relaxed/simple; bh=MfosQBkwjx3KXwTbjhH363GcqS+Z5CKxnOYfPNTR2Lk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KOQaGCHgEsybi6ghrGW7NoDII7GkJa57X3OjHTcC0EzHQn8RgPRjmUIj/WZnk+8rD4uiyOcXmNIfufzq+m8n+qwpF7eumnWYUG8s45E89hivx8sOemwkXY8jEb10y6bWQNwQm2HzwiHLF5TM1Lf301tmsEogxCSlVrRISV8CxDM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OUovyuT8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OUovyuT8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 98C3CC16AAE; Tue, 16 Dec 2025 08:01:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872110; bh=MfosQBkwjx3KXwTbjhH363GcqS+Z5CKxnOYfPNTR2Lk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OUovyuT8mOWNSj4yBidcsIzNj9345lnE+QWR6NN/1cp+78PiaMHSKntKB4eWVztv0 YBsHoM48j0YwPPN9Cil7XAGCBea1pKyyLJH7NfpxBEvgqUmGqY6Iw/HW53TPSDVAWl 5ZdTNeH13QCxHB8EBCCV+vm/vCoREFLHCpdyY2/qVXt2RzUBR/Im6gEVaguHPi4ca1 bZIiBYWMV0a1ZcWj15fxab4wbwz8vwvQismPblVbHeNcgqirO8ZYUP0A7klHYEVNf/ dkE+hZYhDFbs48fiB8PmEEtmz8YkxrHAVct9XC2XJ+2Pw30eINbUCRG6ADr8FgoRl0 GLTNY6qvVlnww== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 04/12] Docs/admin-guide/mm/damon/usage: update for nr_snapshots damos stat Date: Tue, 16 Dec 2025 00:01:17 -0800 Message-ID: <20251216080128.42991-5-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Update DAMON usage document for the newly added damos stat, nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/usage.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/a= dmin-guide/mm/damon/usage.rst index 9991dad60fcf..d0944bd78964 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -87,7 +87,7 @@ comma (","). =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/type,matching,allow,memcg_path,addr_start,addr_end,target_idx,m= in,max =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`dests `/nr_dests =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/id,weight - =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,= sz_ops_filter_passed,qt_exceeds + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,= sz_ops_filter_passed,qt_exceeds,nr_snapshots =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`tried_regions `/total_bytes =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/start,end,nr_accesses,age,sz_filter_passed =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 ... @@ -543,9 +543,9 @@ online analysis or tuning of the schemes. Refer to :re= f:`design doc =20 The statistics can be retrieved by reading the files under ``stats`` direc= tory (``nr_tried``, ``sz_tried``, ``nr_applied``, ``sz_applied``, -``sz_ops_filter_passed``, and ``qt_exceeds``), respectively. The files ar= e not -updated in real time, so you should ask DAMON sysfs interface to update the -content of the files for the stats by writing a special keyword, +``sz_ops_filter_passed``, ``qt_exceeds`` and ``nr_snapshots``), respective= ly. +The files are not updated in real time, so you should ask DAMON sysfs inte= rface +to update the content of the files for the stats by writing a special keyw= ord, ``update_schemes_stats`` to the relevant ``kdamonds//state`` file. =20 .. _sysfs_schemes_tried_regions: --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD05F3446B6; Tue, 16 Dec 2025 08:01:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872112; cv=none; b=GCVA0z81j4DVv7FdFfZkPlPNHTmELpC31snQlxCZixIXUMlnnsD7ruZnOhKc5WlMjDyTyGHrwQrJXJJnNdww5GtMz/IYAp33kLpCQpLtkP1uiEOEoKt/GLzLGLrUWJWNeOW1ZadBl1bXD3kmMLPC1yK3vh4NjkRRkIu21jbWcL8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872112; c=relaxed/simple; bh=CMU/MAqiw92B3IvzGFYdKBKpTTJU4mdm4PDik0TPe5k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d2DIFyc9RItiLLzYsOxfOW+uJC4ZVED/CZLolahI21No0vd/mvyhaIBqpXMnlx2Io6OHADJBMDmIZqEmEZArmxqafRHe54qZsBd9VmYi79fFqgcotzcNSRTDxj2c8fquVRd5QP5Q5Tf6BFk6DCVSKqWhbHhFWoscbJ9r0fKwRQc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ubgibi1o; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ubgibi1o" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E2D5C113D0; Tue, 16 Dec 2025 08:01:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872112; bh=CMU/MAqiw92B3IvzGFYdKBKpTTJU4mdm4PDik0TPe5k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ubgibi1oh5rwQYBQm0dtApjfZUlrc5w0TF7s0jJdAMTPpLkeyUh0Xp79yQJAL937x sqq3MwE2FgAtXW38Ew88nTKFuVBaXggJAZOjQ5eDBPgMM8pOHWHxJG8MLmNdUP1rMo 2bP7q1mKE4VYIcZJ5cR1+Jb36KZPD6yOMX7ileyKOIDike1DdMvjyH0Mb2QfXDGJuC E0YFBdS6jWtslSndn43dkwS65KOvC7iv3//W9NnvRo1a9uY/+ego9Gl4bgqgk+0+la 1UbRL4aQ+p9lR/btcRC7aOD16DSIyB2sso3N6ln9TAPulZvOAab/0oCqcr4Y4w6JSH eZY99cw0M3KoA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 05/12] Docs/ABI/damon: update for nr_snapshots damos stat Date: Tue, 16 Dec 2025 00:01:18 -0800 Message-ID: <20251216080128.42991-6-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update DAMON ABI document for the newly added damos stat, nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/ABI/testing/sysfs-kernel-mm-damon | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-damon b/Documentatio= n/ABI/testing/sysfs-kernel-mm-damon index 4fb8b7a6d625..7571aa78b7bb 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-damon +++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon @@ -516,6 +516,12 @@ Contact: SeongJae Park Description: Reading this file returns the number of the exceed events of the scheme's quotas. =20 +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//st= ats/nr_snapshots +Date: Dec 2025 +Contact: SeongJae Park +Description: Reading this file returns the total number of DAMON snapshots + that the scheme has tried to be applied. + What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//tr= ied_regions/total_bytes Date: Jul 2023 Contact: SeongJae Park --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8D743446D6; Tue, 16 Dec 2025 08:01:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872113; cv=none; b=faJVqsOxpwJl8hemSR6szeXwdtZNN3foHobNTWOoyBvzAXKw37sHPA63/h82Cv+HjnxyUulpauaJvSmYMYa6xXZin0TL0YDgCPeb5ZntgUQMy+jw995O5NGpGtO9VLClcpDDGilJs+dNf03rR3IC+FdRSTHr9wiW05WHRgF97hk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872113; c=relaxed/simple; bh=dyfJoVaMw2se3otvFoArpX9pnB7yY+god8b9Qd1MKC4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MtgDOXxudIRvJQ7I2vIUbqpGmUPX2pIbLA6KSRf6vke5gG5AMdSJAomF3XRGsS0HHrudrhoZWe9dL0HJGULeiroj55/h5fvp3TjLi1fFKgj15/xRphxyzA0cZcg6xi6wWfMojyFvCMkrvPrf97qVFL+Hw8OSeXfpQxajGxQrwn8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WpL35w/Q; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WpL35w/Q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7ECCC19423; Tue, 16 Dec 2025 08:01:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872113; bh=dyfJoVaMw2se3otvFoArpX9pnB7yY+god8b9Qd1MKC4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WpL35w/Q+dEm4/26EIsm2RWsTVlntA3hjNzSTCFpkAhWTkLvdizet+5IJnAPoEBg1 wKx2iw0YDROKUTEfRk8YYMthRAMrADKxAgyG1d/0DgmApnbj7bf02yjQRkGf0FsGg6 qO6hG4aZ0xyiLekKrM5TzL2tDywpgMo/V/QLvxzOqhM2Gf2E6xgTSmquMVUByCN6iZ suyhysPUCq8RaXKTICW4qAt8LKshVhDseeXzwFGbVdB8BJ3yGtq2J3deVZTKzllZ1C 9Qf0HigxOK430zaYZuqV33SYk/L5P9xJgR5te+DBzhoZ70mvGOFwjQ9Su1Y0chNY7W vyWxdn7z5Y5eQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 06/12] mm/damon: update damos kerneldoc for stat field Date: Tue, 16 Dec 2025 00:01:19 -0800 Message-ID: <20251216080128.42991-7-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit 0e92c2ee9f45 ("mm/damon/schemes: account scheme actions that successfully applied") has replaced ->stat_count and ->stat_sz of 'struct damos' with ->stat. The commit mistakenly did not update the related kernel doc comment, though. Update the comment. Signed-off-by: SeongJae Park --- include/linux/damon.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 1d8a1515e75a..43dfbfe2292f 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -532,9 +532,7 @@ struct damos_migrate_dests { * unsets @last_applied when each regions walking for applying the scheme = is * finished. * - * After applying the &action to each region, &stat_count and &stat_sz is - * updated to reflect the number of regions and total size of regions that= the - * &action is applied. + * After applying the &action to each region, &stat is updated. */ struct damos { struct damos_access_pattern pattern; --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED1213451C6; Tue, 16 Dec 2025 08:01:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872116; cv=none; b=PpLE1EoQekpAM1qJNbmBPmiWMpnO6r/untDdcjoLyRA9Tx4dSjfeBxJvZeT05kOLUAO3183+VY+6QfspYySXxtDquGgEofbCLK3BbAq5796a/1gkR6O+HHcuu9OGEK10oVUHcdSItIzN+kiOKwM6z6vx6BdwktXr/D4pofeWqD4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872116; c=relaxed/simple; bh=MUTEKMjwMQrPcHqNBgdPYYcf5dYcs6y7OQyOyiiLOLE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OeSUetwXtKdJgBAa928BXd5IaAZ03HtemE+nTpu75KqUncfrc5aEG37LBzLuXfjIfD7SX5K5GfG44bSif0vh6hr8ZxAdlCDX3b9ES28LmusVG2t/x9uyjf+nSjHllVsfVFXX66PR+2YeP4ig5y5JDdrZctFdOZBzVLnW84lJTTk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gfRsIXAj; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gfRsIXAj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 079CBC4CEF1; Tue, 16 Dec 2025 08:01:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872115; bh=MUTEKMjwMQrPcHqNBgdPYYcf5dYcs6y7OQyOyiiLOLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gfRsIXAjQLY8IWW5+ZPMlEDxMgvzZhQYGXNtIlKrS0zjcik3mY0694lsIOPczk77+ rETP1V1kQdquYP+X7d2xVBiutGayjtXH5iaeYOL4LxLVOSHLLZEe4aQwyuHu0Vph5G +R9zp/vC9U5pxzjGZ/OwHEoNFKwNcf/WXqVT/OHCOp3iIwUzn3/9cq3WOHqCJgDbtz cSlrXe7BnthQsy1nE1l1H672yCkBggMoFbV1g94E741igyUoCmuSTiEgF39vLoenrA VH1EqG36TRdbB5f1ZMm+0aKllIPbS8EN/TlSGwo4UaVdpHoYCJQTVZ9Jx5O3ClMKYx S8s2G3UaNiaHQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 07/12] mm/damon/core: implement max_nr_snapshots Date: Tue, 16 Dec 2025 00:01:20 -0800 Message-ID: <20251216080128.42991-8-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There are DAMOS use cases that require user-space centric control of its activation and deactivation. Having the control plane on the user-space, or using DAMOS as a way for monitoring results collection are such examples. DAMON parameters online commit, DAMOS quotas and watermarks can be useful for this purpose. However, those features work only at the sub-DAMON-snapshot level. In some use cases, the DAMON-snapshot level control is required. For example, in DAMOS-based monitoring results collection use case, the user online-installs a DAMOS scheme with DAMOS_STAT action, wait it be applied to whole regions of a single DAMON-snapshot, retrieves the stats and tried regions information, and online-uninstall the scheme. It is efficient to ensure the lifetime of the scheme as no more no less one snapshot consumption. To support such use cases, introduce a new DAMOS core API per-scheme parameter, namely max_nr_snapshots. As the name implies, it is the upper limit of nr_snapshots, which is a DAMOS stat that represents the number of DAMON-snapshots that the scheme has fully applied. If the limit is set with a non-zero value and nr_snapshots reaches or exceeds the limit, the scheme is deactivated. Signed-off-by: SeongJae Park --- include/linux/damon.h | 5 +++++ mm/damon/core.c | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/damon.h b/include/linux/damon.h index 43dfbfe2292f..a67292a2f09d 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -499,6 +499,7 @@ struct damos_migrate_dests { * @ops_filters: ops layer handling &struct damos_filter objects list. * @last_applied: Last @action applied ops-managing entity. * @stat: Statistics of this scheme. + * @max_nr_snapshots: Upper limit of nr_snapshots stat. * @list: List head for siblings. * * For each @apply_interval_us, DAMON finds regions which fit in the @@ -533,6 +534,9 @@ struct damos_migrate_dests { * finished. * * After applying the &action to each region, &stat is updated. + * + * If &max_nr_snapshots is set as non-zero and &stat.nr_snapshots be same = to or + * greater than it, the scheme is deactivated. */ struct damos { struct damos_access_pattern pattern; @@ -567,6 +571,7 @@ struct damos { struct list_head ops_filters; void *last_applied; struct damos_stat stat; + unsigned long max_nr_snapshots; struct list_head list; }; =20 diff --git a/mm/damon/core.c b/mm/damon/core.c index 6f3328b29a65..8908aec6670f 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -401,6 +401,7 @@ struct damos *damon_new_scheme(struct damos_access_patt= ern *pattern, INIT_LIST_HEAD(&scheme->core_filters); INIT_LIST_HEAD(&scheme->ops_filters); scheme->stat =3D (struct damos_stat){}; + scheme->max_nr_snapshots =3D 0; INIT_LIST_HEAD(&scheme->list); =20 scheme->quota =3D *(damos_quota_init(quota)); @@ -1078,7 +1079,11 @@ static int damos_commit(struct damos *dst, struct da= mos *src) return err; =20 err =3D damos_commit_filters(dst, src); - return err; + if (err) + return err; + + dst->max_nr_snapshots =3D src->max_nr_snapshots; + return 0; } =20 static int damon_commit_schemes(struct damon_ctx *dst, struct damon_ctx *s= rc) @@ -1955,6 +1960,10 @@ static void damon_do_apply_schemes(struct damon_ctx = *c, if (damos_skip_charged_region(t, &r, s, c->min_sz_region)) continue; =20 + if (s->max_nr_snapshots && + s->max_nr_snapshots <=3D s->stat.nr_snapshots) + continue; + if (damos_valid_target(c, t, r, s)) damos_apply_scheme(c, t, r, s); =20 --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 18CCC344045; Tue, 16 Dec 2025 08:01:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872117; cv=none; b=nfe/aVJY2qx0hrtFdx7BQQJChoOp53zRjiQB6Jp1OfCa4kfdAsrKlnhHpKWGUPNFgu3yhCNsfyhJBes7wBa48BQD766MUIwdv7LP3F3HMNERP0+5GBpEn5/ZUFgMfeTsBZKixaLsPJiq1Hfu0tSzo+32+m6YsL5g7I+Cu7zF4bo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872117; c=relaxed/simple; bh=YYITYdIQPy/1vLOJqdtXYhiVVrg/s7bBHX4J5y9ZA3c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kbc25oaU24ulBUA8Gu0jJXVQT0ye6aQTpbfrP1MLhbuATMh1Q9EXckrJAxdvLcRX47DbtJlOIZA+fiWOQSvwqtNr5rm6/gwh8w58GLNY1Mvjny/QeX4u12keNrX2BKdzVIxFfM06zBeOxRsCXtLTSg6xXXXYJB6bHuoIpGML5bc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mRkUz/Iu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mRkUz/Iu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5C5C8C16AAE; Tue, 16 Dec 2025 08:01:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872116; bh=YYITYdIQPy/1vLOJqdtXYhiVVrg/s7bBHX4J5y9ZA3c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mRkUz/Iu/Pl0hqM6pdMSVBXMftjfKuqsByDORaWV2AND1xZ6h/4+982YgmU6QcQuH g8jWIwjrT5Qkj4wjpk2dbujwRmExzpzk8QN8m4za8sWTXuPO2LawEe+71nJN9ihOAT g8jWDOsAPshhen7ToCNMs7VnJ2HR+ZQ4GPiuYnuYYwnF8P2NCaKDQ7pg+LYmVmFWsc Ch0p24kb89fzx8wpSlmPSt2NJ5wmQv/FUWpi4l2wlIVhS3w4rspfTcN8eLD5l9EQpR Q8m79U5A3IM2M4ghD6qg7pg1Zf7Lv+KPTKrahpM2Oa9hvmacmPTWHslwU0QCSzD0H7 IkRNx9I1T0sag== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 08/12] mm/damon/sysfs-schemes: implement max_nr_snapshots file Date: Tue, 16 Dec 2025 00:01:21 -0800 Message-ID: <20251216080128.42991-9-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a new DAMON sysfs file for setting and getting the newly introduced per-DAMON-snapshot level DAMOS deactivation control parameter, max_nr_snapshots. The file has a name same to the parameter and placed under the damos stat directory. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index a1f555e1125a..e198234f0763 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -205,6 +205,7 @@ struct damon_sysfs_stats { unsigned long sz_ops_filter_passed; unsigned long qt_exceeds; unsigned long nr_snapshots; + unsigned long max_nr_snapshots; }; =20 static struct damon_sysfs_stats *damon_sysfs_stats_alloc(void) @@ -275,6 +276,28 @@ static ssize_t nr_snapshots_show(struct kobject *kobj, return sysfs_emit(buf, "%lu\n", stats->nr_snapshots); } =20 +static ssize_t max_nr_snapshots_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct damon_sysfs_stats *stats =3D container_of(kobj, + struct damon_sysfs_stats, kobj); + + return sysfs_emit(buf, "%lu\n", stats->max_nr_snapshots); +} + +static ssize_t max_nr_snapshots_store(struct kobject *kobj, + struct kobj_attribute *attr, const char *buf, size_t count) +{ + struct damon_sysfs_stats *stats =3D container_of(kobj, + struct damon_sysfs_stats, kobj); + unsigned long max_nr_snapshots, err =3D kstrtoul(buf, 0, &max_nr_snapshot= s); + + if (err) + return err; + stats->max_nr_snapshots =3D max_nr_snapshots; + return count; +} + static void damon_sysfs_stats_release(struct kobject *kobj) { kfree(container_of(kobj, struct damon_sysfs_stats, kobj)); @@ -301,6 +324,9 @@ static struct kobj_attribute damon_sysfs_stats_qt_excee= ds_attr =3D static struct kobj_attribute damon_sysfs_stats_nr_snapshots_attr =3D __ATTR_RO_MODE(nr_snapshots, 0400); =20 +static struct kobj_attribute damon_sysfs_stats_max_nr_snapshots_attr =3D + __ATTR_RW_MODE(max_nr_snapshots, 0600); + static struct attribute *damon_sysfs_stats_attrs[] =3D { &damon_sysfs_stats_nr_tried_attr.attr, &damon_sysfs_stats_sz_tried_attr.attr, @@ -309,6 +335,7 @@ static struct attribute *damon_sysfs_stats_attrs[] =3D { &damon_sysfs_stats_sz_ops_filter_passed_attr.attr, &damon_sysfs_stats_qt_exceeds_attr.attr, &damon_sysfs_stats_nr_snapshots_attr.attr, + &damon_sysfs_stats_max_nr_snapshots_attr.attr, NULL, }; ATTRIBUTE_GROUPS(damon_sysfs_stats); @@ -2730,6 +2757,7 @@ static struct damos *damon_sysfs_mk_scheme( damon_destroy_scheme(scheme); return NULL; } + scheme->max_nr_snapshots =3D sysfs_scheme->stats->max_nr_snapshots; return scheme; } =20 --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5ECD342CB5; Tue, 16 Dec 2025 08:01:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872119; cv=none; b=rVeajOjuTTXq4GCG+hr3Tpb2TkoJgas1O8h9sazTfvn442t3ky/SSSW31zgZVAJHmoloYb16YC2MCKDtbYQgw0pALf7v6zQGX/vOKyryVvX736gtxQM9oMrO+A09d2HqjnzxjVNL98ZQ9Q3lGee54uJSpAvLoxjr/ICx6Bnq/nQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872119; c=relaxed/simple; bh=iXEcDN8E6cxYy3isQfAsdFaACSzfCgupWIVQKmv8ny4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TpK0tyTn5GtadX77L++rEf/p/xwficPTsCaAjNDo0DmfpuWbSnpGlir4UwHbgaO7KaXc1YsZIZ0H/Q3nHwXw0lll8ETy/+uQI1m27PpwBkfusjOsiXc4xjcks5oGfNJv3yG4TCTSNdsUGhaRqol4fmDXHOQwBBc5reJxU9CqXlg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DzFqQZhW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DzFqQZhW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B16C3C4CEF1; Tue, 16 Dec 2025 08:01:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872119; bh=iXEcDN8E6cxYy3isQfAsdFaACSzfCgupWIVQKmv8ny4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DzFqQZhW+kHU5WrBW6RZ23p3Qb2kf/dRFUSMa86acEKSvHeojbpJLeGaMmqexz71o K8kxkxMR210pM3fBllz/7N5XsSpMNgeGU/tIIwcqyK4ub4blSBVCz3+mOQtGXbHxSh AK/v+B/Th0UUrm8Oe+fr6OPKNPlGXS82LoQl2dHHo8yexLPJeq29mJAdhnhwHgTxEi zuHsnDhJ/MqQNaV85OdnvkAgCSYhwQhK0zu9NRJ4+UqwsdTate1Dr9j0dmzfQOZwyt 5llRl01Y7mp6mcGyiAXSPlLdHjsvqpRpWesdxzFF2t7mDx4rf/SqgB2cayVzluOtp6 eZrA8h/bAgzWg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 09/12] Docs/mm/damon/design: update for max_nr_snapshots Date: Tue, 16 Dec 2025 00:01:22 -0800 Message-ID: <20251216080128.42991-10-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update DAMON design document for the newly added snapshot level DAMOS deactivation feature, max_nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/mm/damon/design.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/des= ign.rst index 5cc7b7d662be..7fd819b8bbf7 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -720,6 +720,7 @@ scheme's execution. - ``qt_exceeds``: Total number of times the quota of the scheme has exceed= ed. - ``nr_snapshots``: Total number of DAMON snapshots that the scheme is tri= ed to be applied. +- ``max_nr_snapshots``: Upper limit of ``nr_snapshots``. =20 "A scheme is tried to be applied to a region" means DAMOS core logic deter= mined the region is eligible to apply the scheme's :ref:`action @@ -741,6 +742,10 @@ to exclude anonymous pages and the region has only ano= nymous pages, or if the action is ``pageout`` while all pages of the region are unreclaimable, app= lying the action to the region will fail. =20 +Unlike normal stats, ``max_nr_snapshots`` is set by users. If it is set as +non-zero and ``nr_snapshots`` be same to or greater than ``nr_snapshots``,= the +scheme is deactivated. + To know how user-space can read the stats via :ref:`DAMON sysfs interface `, refer to :ref:s`stats ` part of the documentation. --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 617003451CE; Tue, 16 Dec 2025 08:02:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872122; cv=none; b=HoO3Afh3l9jsU/eakQfgIU+N37VVcd+8/gJg2HQGNCD4vvto/X+OuTHb32H8XoxX9IWf9Atf5d+PvAV2ruFbGeIXFiXUBzOuRiYr5OFJi3Gk5AOsltgz+qLKewC+tw12C2Zm0i2Y2cNLZxYMTrWgapmEwgx2gPbJftyR/EfwLg4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872122; c=relaxed/simple; bh=ihzFy5TOJPnYv7zeqZ3FA4BsW8yTIpVlYGwomLZgsUk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MISVp4aWdm3ODAI2L2Y/orTHxxwueLuVLgutK43IzSesioStUXLkyy0M1ngNhbVyzVJgMBM0LaOAVEl444KS0QYyhRItN0Q+c8h8UdSYBRQ/jdCFd2C0a2MWC+TdoTc8xDagTJ7s16hS4iFZECLPKw6qtqOu9FCkY6MxrFwWbXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BxXE8PUM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BxXE8PUM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 679EBC113D0; Tue, 16 Dec 2025 08:01:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872121; bh=ihzFy5TOJPnYv7zeqZ3FA4BsW8yTIpVlYGwomLZgsUk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BxXE8PUMFi+wy0z7oFUzsOvqXnJSFUCjLVg2ARDbknet3abyC4cwZtsPddcglwbb0 z0ln6Vsi4imR36cGKInmAYGJXCQtWRSDDd/SB2xmk+2GYUSTCGqzzoqM7pHVdtn0kF UfUDRCIvzgxdtiOMcOp8nfTPwBQJKLUcIKnRywtD/1R2X+bXr+8R8s2OAz7ucJTaBx lCyBuC07SraNRQRidD7whHRB3VUByDviTFE38WbfUMkhMD4UcKTYMO2H6GoeGvWxVF MmeRTIy+MCVH1LiK4vP6d8SVnRfKvboeoBa9gn3lltxZUH9/jnpWwaNNTEy9Yns90e 5fGU5jNhrrN7w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 10/12] Docs/admin-guide/mm/damon/usage: update for max_nr_snapshots Date: Tue, 16 Dec 2025 00:01:23 -0800 Message-ID: <20251216080128.42991-11-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Update DAMON usage document for the newly added DAMON sysfs interface file, max_nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/admin-guide/mm/damon/usage.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Documentation/admin-guide/mm/damon/usage.rst b/Documentation/a= dmin-guide/mm/damon/usage.rst index d0944bd78964..7da4c002cb39 100644 --- a/Documentation/admin-guide/mm/damon/usage.rst +++ b/Documentation/admin-guide/mm/damon/usage.rst @@ -87,7 +87,7 @@ comma (","). =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/type,matching,allow,memcg_path,addr_start,addr_end,target_idx,m= in,max =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`dests `/nr_dests =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/id,weight - =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,= sz_ops_filter_passed,qt_exceeds,nr_snapshots + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`stats `/nr_tried,sz_tried,nr_applied,sz_applied,= sz_ops_filter_passed,qt_exceeds,nr_snapshots,max_nr_snapshots =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = :ref:`tried_regions `/total_bytes =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 0/start,end,nr_accesses,age,sz_filter_passed =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 ... @@ -543,10 +543,11 @@ online analysis or tuning of the schemes. Refer to := ref:`design doc =20 The statistics can be retrieved by reading the files under ``stats`` direc= tory (``nr_tried``, ``sz_tried``, ``nr_applied``, ``sz_applied``, -``sz_ops_filter_passed``, ``qt_exceeds`` and ``nr_snapshots``), respective= ly. -The files are not updated in real time, so you should ask DAMON sysfs inte= rface -to update the content of the files for the stats by writing a special keyw= ord, -``update_schemes_stats`` to the relevant ``kdamonds//state`` file. +``sz_ops_filter_passed``, ``qt_exceeds``, ``nr_snapshots`` and +``max_nr_snapshots``), respectively. The files are not updated in real ti= me, +so you should ask DAMON sysfs interface to update the content of the files= for +the stats by writing a special keyword, ``update_schemes_stats`` to the +relevant ``kdamonds//state`` file. =20 .. _sysfs_schemes_tried_regions: =20 --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56FBA3451BF; Tue, 16 Dec 2025 08:02:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872124; cv=none; b=nfK7ZEYXBbUwaf/pksmVIA35q3FNmJxvNCQ3YQ4yO6G8fCFUZ68wNUsUQFG1c4GeIYqWnSsyMitczJYFJGaItGpcwNplF/hJtj+18wcbO5FmiH6ZemeQLcPm2sfKmFpdZ5gaZZ+VYlZKi2tHHEAeLrLJuoLWuWS8LddmIsWIfRQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872124; c=relaxed/simple; bh=Z294j8tQ+uhgFiZieSNAE5/gve3h32Q0RHDWAYvQ4ng=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FloY7jU9WwHmH/uoPCHY6Vct4bYs2tvwgyxjYIjuKEdt28vR7q2ZezcPKE42ROLT+W3LyUDpCmP4lTX0eCeKT+wT2UjjO6jvyWn5lE77XePxvvt/xycJWeNKoTEHG2T1kD0QYO6a+fitFIl8Y7/Y+o9DV/OV5c2gosAdVOwtCu4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bXDV+jGv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bXDV+jGv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E980C4CEF1; Tue, 16 Dec 2025 08:02:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872123; bh=Z294j8tQ+uhgFiZieSNAE5/gve3h32Q0RHDWAYvQ4ng=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bXDV+jGvJc0fSESzG5TJkcX3/zacToRGcwhCH9SZbpJO/JarzFRnpNAzE4W69oT4P rPDMGTbNR5NGj1Bfi1wVDq2W7OKRBxbzBKg9HUmwF6BEwLx+ZEvpiMq7Yx4lgPR+2s 1bJI+P/K72A8zYTLN/ZPdbO9q4+cX+Ej5dyrNE+HFs23GBUyUWOnTqLwppG/kGdwVw 2se9p6L7hOdPoa5v62xJsb0o2cOwytCeq1mjAI9LtpAR/X9s6MGXI2zbqP90vHVVtl 4A9k/v/GXc8gjzNuMlB3Gt9shwv/DjfjAxW/CuI3NrW2JAhO6af/CgRy1nQLibasE6 fhdsaIfM3mQWA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 11/12] Docs/ABI/damon: update for max_nr_snapshots Date: Tue, 16 Dec 2025 00:01:24 -0800 Message-ID: <20251216080128.42991-12-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update DAMON ABI document for the newly added DAMON sysfs interface file, max_nr_snapshots. Signed-off-by: SeongJae Park --- Documentation/ABI/testing/sysfs-kernel-mm-damon | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-damon b/Documentatio= n/ABI/testing/sysfs-kernel-mm-damon index 7571aa78b7bb..f2af2ddedd32 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-damon +++ b/Documentation/ABI/testing/sysfs-kernel-mm-damon @@ -522,6 +522,13 @@ Contact: SeongJae Park Description: Reading this file returns the total number of DAMON snapshots that the scheme has tried to be applied. =20 +What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//st= ats/max_nr_snapshots +Date: Dec 2025 +Contact: SeongJae Park +Description: Writing a number to this file sets the upper limit of + nr_snapshots that deactivates the scheme when the limit is + reached or exceeded. + What: /sys/kernel/mm/damon/admin/kdamonds//contexts//schemes//tr= ied_regions/total_bytes Date: Jul 2023 Contact: SeongJae Park --=20 2.47.3 From nobody Sat Feb 7 20:41:09 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4482B345CC7; Tue, 16 Dec 2025 08:02:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872126; cv=none; b=B6gvJjkTrUSEjPfxV7+pBe6ctI1f5/ycmWCxRxw/mPdFjNpsmzcHnw+D+SWzbladn3IuJYHpVOndMAg3R+tSnWj1iz2BatcKn4dHdyHWVYN4I+V4K620FUoBmVsJMO0FSsnqodCvINj81jsE+ZJBmN1FjFvmlOgTSRmPZT18gbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765872126; c=relaxed/simple; bh=UYABSgwRGNA1IWS8REj5rib/2rvNak+2C8vgI6LoV8Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Gp18okNhIaRLcYrykOH8gOR6yBsBo/v9gNIho+8XA9JtYCJkh8cFWXRgmw5E22VO2Z623GFMAr9HZjGj7cGiYNPJGG2kbYij07VwjG0U6xUcIAsZqkgscUH//fLJN/xfa4aiLc4SeoAXCCNZqoI8ZYhXAOIAckiO7f4+Qfa0mTA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qiWaYlDd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qiWaYlDd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75E6AC113D0; Tue, 16 Dec 2025 08:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765872125; bh=UYABSgwRGNA1IWS8REj5rib/2rvNak+2C8vgI6LoV8Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qiWaYlDd5Ydpl3Fdoh6hNRSX4IIqyP1tMJTKMFAIBbhSq7b/kZO0WM1EwS/8d5h2k 0FaQ3b495L08nxbjgFYMklrV6IEiQUT7MHMx2eSWmEKkhKduhVPjMJS/2IEbPLUs8e c7hNfBFezqp0gEjMEaJCi+7hxBiyEvF5GgYZC8jLMMwBCxrXhFj9mOAUIAat55lo4T FbJe81yWXQbMQcpKD3CCUKkmYKJOCJ//rVEYhs60amSrL5c95DBaKSp/3R1UaXsWib mZWA19JgWS6ISxh1jLy/9lz9OtXMnHEz3v5so8OUJ2UXJGk+5qd2bjHhreUHGm8U1W u6eG0yfCi7j4w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Masami Hiramatsu , Mathieu Desnoyers , Steven Rostedt , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH 12/12] mm/damon/core: add trace point for damos stat per apply interval Date: Tue, 16 Dec 2025 00:01:25 -0800 Message-ID: <20251216080128.42991-13-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251216080128.42991-1-sj@kernel.org> References: <20251216080128.42991-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" DAMON users can read DAMOS stats via DAMON sysfs interface. It enables efficient, simple and flexible usages of the stats. Especially for systems not having advanced tools like perf or bpftrace, that can be useful. But if the advanced tools are available, exposing the stats via tracepoint can reduce unnecessary reimplementation of the wheels. Add a new tracepoint for DAMOS stats, namely damos_stat_after_apply_interval. The tracepoint is triggered for each scheme's apply interval and exposes the whole stat values. If the user needs sub-apply interval information for any chance, damos_before_apply tracepoint could be used. Signed-off-by: SeongJae Park Reviewed-by: Steven Rostedt (Google) Suggested-by: Steven Rostedt (Google) --- include/trace/events/damon.h | 41 ++++++++++++++++++++++++++++++++++++ mm/damon/core.c | 17 +++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/include/trace/events/damon.h b/include/trace/events/damon.h index 852d725afea2..24fc402ab3c8 100644 --- a/include/trace/events/damon.h +++ b/include/trace/events/damon.h @@ -9,6 +9,47 @@ #include #include =20 +TRACE_EVENT(damos_stat_after_apply_interval, + + TP_PROTO(unsigned int context_idx, unsigned int scheme_idx, + struct damos_stat *stat), + + TP_ARGS(context_idx, scheme_idx, stat), + + TP_STRUCT__entry( + __field(unsigned int, context_idx) + __field(unsigned int, scheme_idx) + __field(unsigned long, nr_tried) + __field(unsigned long, sz_tried) + __field(unsigned long, nr_applied) + __field(unsigned long, sz_applied) + __field(unsigned long, sz_ops_filter_passed) + __field(unsigned long, qt_exceeds) + __field(unsigned long, nr_snapshots) + ), + + TP_fast_assign( + __entry->context_idx =3D context_idx; + __entry->scheme_idx =3D scheme_idx; + __entry->nr_tried =3D stat->nr_tried; + __entry->sz_tried =3D stat->sz_tried; + __entry->nr_applied =3D stat->nr_applied; + __entry->sz_applied =3D stat->sz_applied; + __entry->sz_ops_filter_passed =3D stat->sz_ops_filter_passed; + __entry->qt_exceeds =3D stat->qt_exceeds; + __entry->nr_snapshots =3D stat->nr_snapshots; + ), + + TP_printk("ctx_idx=3D%u scheme_idx=3D%u nr_tried=3D%lu sz_tried=3D%lu " + "nr_applied=3D%lu sz_tried=3D%lu sz_ops_filter_passed=3D%lu " + "qt_exceeds=3D%lu nr_snapshots=3D%lu", + __entry->context_idx, __entry->scheme_idx, + __entry->nr_tried, __entry->sz_tried, + __entry->nr_applied, __entry->sz_applied, + __entry->sz_ops_filter_passed, __entry->qt_exceeds, + __entry->nr_snapshots) +); + TRACE_EVENT(damos_esz, =20 TP_PROTO(unsigned int context_idx, unsigned int scheme_idx, diff --git a/mm/damon/core.c b/mm/damon/core.c index 8908aec6670f..68dd2f7acba2 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -2256,6 +2256,22 @@ static void damos_adjust_quota(struct damon_ctx *c, = struct damos *s) quota->min_score =3D score; } =20 +static void damos_trace_stat(struct damon_ctx *c, struct damos *s) +{ + unsigned int cidx =3D 0, sidx =3D 0; + struct damos *siter; + + if (!trace_damos_stat_after_apply_interval_enabled()) + return; + + damon_for_each_scheme(siter, c) { + if (siter =3D=3D s) + break; + sidx++; + } + trace_damos_stat_after_apply_interval(cidx, sidx, &s->stat); +} + static void kdamond_apply_schemes(struct damon_ctx *c) { struct damon_target *t; @@ -2297,6 +2313,7 @@ static void kdamond_apply_schemes(struct damon_ctx *c) (s->apply_interval_us ? s->apply_interval_us : c->attrs.aggr_interval) / sample_interval; s->last_applied =3D NULL; + damos_trace_stat(c, s); } mutex_unlock(&c->walk_control_lock); } --=20 2.47.3