From nobody Mon Oct 6 13:35:27 2025 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 436E621E0BB; Sun, 20 Jul 2025 17:16:58 +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=1753031818; cv=none; b=Bq7QZkR+J9pg+JrB+2rwpnZScOqqB+i5H4ts72na4Zb1yoSrhNcoRho4nQWlv3szpgikpysyeGkSDTfdN5uQBqQPxrU2R6SGIvQHgB6Pxi43YVIA5ogKF1TLjHhBTqkEHwNkOkaAJhtV6o7qgV2wdDeTHf5i6jb/EMNxNaCoSzU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031818; c=relaxed/simple; bh=klDlVkBZ+5xmWtK4VLtAAS75LNGvyVGfZkSj3ruHlzE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KLIhbbJczK8acI7yNnnmDYiC/EOBbx7uzWm2z5AnZPVQvi1NUQpcsvX5SKyZcmwHSTPzm/ueXYZ8PqtRbJ+OilCOOmcbN/k3TEFgJxwDHOguSF6Oj9pDVnyyWJJg/FnO+PCnRXzuGmwg9mmEbIhcGalO+UXKvr6SeSmqRau9bWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JYPoLVmZ; 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="JYPoLVmZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B50D0C4AF09; Sun, 20 Jul 2025 17:16:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031817; bh=klDlVkBZ+5xmWtK4VLtAAS75LNGvyVGfZkSj3ruHlzE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JYPoLVmZ8gR5HUNht4q8wFPW50+JhYMZrXs4ViXsVrCiVTi4Nt/Cae2cFYfOCYFv+ vIJIx5iFPDH4OpAb6gQ4OFS0+Ng9lv4mIxenqEsrEb2cg4AChTbjGZQOtvjt5xYLNO ENvfKWzeoD7uwZef3jA3Cv0PjBTVX34Zw4PTVj0jh5sl54/nhbjvv2zwas5SI8pZOU LqkJrHX36lWne5UmoJbVxan1l6phlqmPWtwaZnzwoPEGs8tlfbdaEgkfiWfvCciXIR h5XYcBSNxlwsda+AveNViem7AnqY4xk4ZWLfKYtkOY5jxZninHl7KQdPm5uKnsDW+7 jOJwxwQZUtQcw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 01/22] selftests/damon/_damon_sysfs: support DAMOS watermarks setup Date: Sun, 20 Jul 2025 10:16:31 -0700 Message-Id: <20250720171652.92309-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS watermarks setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index f587e117472e..d81aa11e3d32 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -165,6 +165,42 @@ class DamosQuota: return err return None =20 +class DamosWatermarks: + metric =3D None + interval =3D None + high =3D None + mid =3D None + low =3D None + scheme =3D None # owner scheme + + def __init__(self, metric=3D'none', interval=3D0, high=3D0, mid=3D0, l= ow=3D0): + self.metric =3D metric + self.interval =3D interval + self.high =3D high + self.mid =3D mid + self.low =3D low + + def sysfs_dir(self): + return os.path.join(self.scheme.sysfs_dir(), 'watermarks') + + def stage(self): + err =3D write_file(os.path.join(self.sysfs_dir(), 'metric'), self.= metric) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'interval_us'), + self.interval) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'high'), self.hi= gh) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'mid'), self.mid) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'low'), self.low) + if err is not None: + return err + class DamosStats: nr_tried =3D None sz_tried =3D None @@ -190,6 +226,7 @@ class Damos: action =3D None access_pattern =3D None quota =3D None + watermarks =3D None apply_interval_us =3D None # todo: Support watermarks, stats idx =3D None @@ -199,12 +236,15 @@ class Damos: tried_regions =3D None =20 def __init__(self, action=3D'stat', access_pattern=3DDamosAccessPatter= n(), - quota=3DDamosQuota(), apply_interval_us=3D0): + quota=3DDamosQuota(), watermarks=3DDamosWatermarks(), + apply_interval_us=3D0): self.action =3D action self.access_pattern =3D access_pattern self.access_pattern.scheme =3D self self.quota =3D quota self.quota.scheme =3D self + self.watermarks =3D watermarks + self.watermarks.scheme =3D self self.apply_interval_us =3D apply_interval_us =20 def sysfs_dir(self): @@ -227,9 +267,7 @@ class Damos: if err is not None: return err =20 - # disable watermarks - err =3D write_file( - os.path.join(self.sysfs_dir(), 'watermarks', 'metric'), 'n= one') + err =3D self.watermarks.stage() if err is not None: return err =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 177AA221D9E; Sun, 20 Jul 2025 17:16: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=1753031819; cv=none; b=Fg60uX5pERqgorDrvkp6cHYnKfSp0r5snZX7p/W4DlBQpwz4iEEkhHLH3qcyu2Klu3TkFxNwUCe4dIvP+hpp0S0xMc5WrKVWwxHEl5irPtupiHMKmvWANxiHrxwYyfbGDu3ZRy2YZ2BPcoMXbMN90bb+j8M8nfkUXrVgRSMwJ1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031819; c=relaxed/simple; bh=8wvSMyV6CHpOMSi+h6VFlcgrNrlLEQXoEfGY0Ixxzx4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Pn9jpbC76FYNqv45btQxPPFhuNSCdXpWCQN7djTgV0wIXllfE9SA2Fbzya1DsR/7tIbtQu2UDAHvnRFNT1L5lqR/GWLoIqrQph0c5mCwLEy1OBeASFlPDdDo+6SJbBdTw12F32r5K0uBQysvlO9OYMjL2RXzwSWgYpw05YIqutk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ksnNqjLw; 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="ksnNqjLw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BBD02C4CEFB; Sun, 20 Jul 2025 17:16:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031818; bh=8wvSMyV6CHpOMSi+h6VFlcgrNrlLEQXoEfGY0Ixxzx4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ksnNqjLwmIBv9cprB+iVdxapHXYRWuHIv7lBatBbzqJAR6RM6AdrgVAKxmzKW6x4Z fW42gGK6CTUxsEtYi0Xky7soUz555ekLZ+gRTDqvnqrkXDm+QAJHLCaj9R16A2CwYk n1Glu/83kOe/MbdFwXxcXRY5uBWf2jCLfy/1eAMJaNrKAMqKHLwYJhTCBrIgbNp7IA UUDryw9tzehM2o5YHjVkxvGX/poiaqb+/8zOIhLeLp3aWCHLHPotLSU0YEe4K61uRm Pg9w4l7EY2fmUfyqZyiUUqqUmm2osn93UsKCiAWeOww+rU4va9Fi19dogD19FDzq2S /qR8vqVBB3rzg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 02/22] selftests/damon/_damon_sysfs: support DAMOS filters setup Date: Sun, 20 Jul 2025 10:16:32 -0700 Message-Id: <20250720171652.92309-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS filters setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 115 +++++++++++++++++- 1 file changed, 111 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index d81aa11e3d32..f853af6ad926 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -201,6 +201,96 @@ class DamosWatermarks: if err is not None: return err =20 +class DamosFilter: + type_ =3D None + matching =3D None + allow =3D None + memcg_path =3D None + addr_start =3D None + addr_end =3D None + target_idx =3D None + min_ =3D None + max_ =3D None + idx =3D None + filters =3D None # owner filters + + def __init__(self, type_=3D'anon', matching=3DFalse, allow=3DFalse, + memcg_path=3D'', addr_start=3D0, addr_end=3D0, target_idx= =3D0, min_=3D0, + max_=3D0): + self.type_ =3D type_ + self.matching =3D matching + self.allow =3D allow + self.memcg_path =3D memcg_path, + self.addr_start =3D addr_start + self.addr_end =3D addr_end + self.target_idx =3D target_idx + self.min_ =3D min_ + self.max_ =3D max_ + + def sysfs_dir(self): + return os.path.join(self.filters.sysfs_dir(), '%d' % self.idx) + + def stage(self): + err =3D write_file(os.path.join(self.sysfs_dir(), 'type'), self.ty= pe_) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'matching'), + self.matching) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'allow'), self.a= llow) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'memcg_path'), + self.memcg_path) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'addr_start'), + self.addr_start) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'addr_end'), + self.addr_end) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'damon_target_id= x'), + self.target_idx) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'min'), self.min= _) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'max'), self.max= _) + if err is not None: + return err + return None + +class DamosFilters: + name =3D None + filters =3D None + scheme =3D None # owner scheme + + def __init__(self, name, filters=3D[]): + self.name =3D name + self.filters =3D filters + for idx, filter_ in enumerate(self.filters): + filter_.idx =3D idx + filter_.filters =3D self + + def sysfs_dir(self): + return os.path.join(self.scheme.sysfs_dir(), self.name) + + def stage(self): + err =3D write_file(os.path.join(self.sysfs_dir(), 'nr_filters'), + len(self.filters)) + if err is not None: + return err + for filter_ in self.filters: + err =3D filter_.stage() + if err is not None: + return err + return None + class DamosStats: nr_tried =3D None sz_tried =3D None @@ -227,8 +317,10 @@ class Damos: access_pattern =3D None quota =3D None watermarks =3D None + core_filters =3D None + ops_filters =3D None + filters =3D None apply_interval_us =3D None - # todo: Support watermarks, stats idx =3D None context =3D None tried_bytes =3D None @@ -237,6 +329,7 @@ class Damos: =20 def __init__(self, action=3D'stat', access_pattern=3DDamosAccessPatter= n(), quota=3DDamosQuota(), watermarks=3DDamosWatermarks(), + core_filters=3D[], ops_filters=3D[], filters=3D[], apply_interval_us=3D0): self.action =3D action self.access_pattern =3D access_pattern @@ -245,6 +338,16 @@ class Damos: self.quota.scheme =3D self self.watermarks =3D watermarks self.watermarks.scheme =3D self + + self.core_filters =3D DamosFilters(name=3D'core_filters', + filters=3Dcore_filters) + self.core_filters.scheme =3D self + self.ops_filters =3D DamosFilters(name=3D'ops_filters', + filters=3Dops_filters) + self.ops_filters.scheme =3D self + self.filters =3D DamosFilters(name=3D'filters', filters=3Dfilters) + self.filters.scheme =3D self + self.apply_interval_us =3D apply_interval_us =20 def sysfs_dir(self): @@ -271,9 +374,13 @@ class Damos: if err is not None: return err =20 - # disable filters - err =3D write_file( - os.path.join(self.sysfs_dir(), 'filters', 'nr_filters'), '= 0') + err =3D self.core_filters.stage() + if err is not None: + return err + err =3D self.ops_filters.stage() + if err is not None: + return err + err =3D self.filters.stage() if err is not None: return err =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 57A3F1CFBC; Sun, 20 Jul 2025 17:17:00 +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=1753031820; cv=none; b=VKuScW9/7cfNRimwg755TPoR08xIpKEHDO0nxEXbSaMWdUEuXAtXCx6YTGhXCIUOQSWXnSHAeM+iDirLgVpxm7ul8VeKwYQTZJXbqEqzpukATYnUKfPPWHZbD+w7SKws0LP4DgNzrB1fZLmyspbLttVJsCXwQZGcuU1vElLrfDw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031820; c=relaxed/simple; bh=BVyAzLCX6KSwysObZ8ul7hmIo/e9lFQwzRApis7bbiI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gb50s3mRJPwCoK7yQKey094/oZtQRzywNwQnNn475JEdVi2bdhat5hu8pRXN/SHieKjIPQOp1k9CdgTpRD0ys/xZRY1xDp56D34KR3BJOidKtO00a+0jaKEWWYTXRCIlHnQGZv8Or3EoQxpGbRny4bXRz6H9bwPv5CEnxhFXnzw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ulFZUcOD; 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="ulFZUcOD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BA392C4CEEB; Sun, 20 Jul 2025 17:16:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031819; bh=BVyAzLCX6KSwysObZ8ul7hmIo/e9lFQwzRApis7bbiI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ulFZUcODLpOMEYtvJpC61dzm4lP1iy1rSRQhLhR0nEwW63Pvw5d3uofFF+LMgYtCS zFrxo2XGaM9YHjZEnffrS6jGX4DAXMLW7F1soW1I3lqNqzX91N3Qz4xuyTY4UfTk5+ RzfXFLHZxDzpCW1GAgRoL35C2b5rCbMfUTc/RB1oe64DwakaIJKj0yVYb3zM76Fp5+ b4cM1cz585DVySH/gGJsFIqlcLKsZx7C3erhl8dlUUC0eXnIE1equ4t7bxnRWy7JvH P9nMtXUFYmHlj/m5JGmZR2+Qr8Wwyz7WqU9zqRT7NJ7of8QiBfhJg9xigc7KqZ+E/y GJS1lI8pFRgvQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 03/22] selftests/damon/_damon_sysfs: support monitoring intervals goal setup Date: Sun, 20 Jul 2025 10:16:33 -0700 Message-Id: <20250720171652.92309-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of the monitoring intervals auto-tune goal setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index f853af6ad926..ec6230929d36 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -405,18 +405,56 @@ class DamonTarget: return write_file( os.path.join(self.sysfs_dir(), 'pid_target'), self.pid) =20 +class IntervalsGoal: + access_bp =3D None + aggrs =3D None + min_sample_us =3D None + max_sample_us =3D None + attrs =3D None # owner DamonAttrs + + def __init__(self, access_bp=3D0, aggrs=3D0, min_sample_us=3D0, max_sa= mple_us=3D0): + self.access_bp =3D access_bp + self.aggrs =3D aggrs + self.min_sample_us =3D min_sample_us + self.max_sample_us =3D max_sample_us + + def sysfs_dir(self): + return os.path.join(self.attrs.interval_sysfs_dir(), 'intervals_go= al') + + def stage(self): + err =3D write_file( + os.path.join(self.sysfs_dir(), 'access_bp'), self.access_b= p) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'aggrs'), self.a= ggrs) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'min_sample_us'), + self.min_sample_us) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'max_sample_us'), + self.max_sample_us) + if err is not None: + return err + return None + class DamonAttrs: sample_us =3D None aggr_us =3D None + intervals_goal =3D None update_us =3D None min_nr_regions =3D None max_nr_regions =3D None context =3D None =20 - def __init__(self, sample_us=3D5000, aggr_us=3D100000, update_us=3D100= 0000, + def __init__(self, sample_us=3D5000, aggr_us=3D100000, + intervals_goal=3DIntervalsGoal(), update_us=3D1000000, min_nr_regions=3D10, max_nr_regions=3D1000): self.sample_us =3D sample_us self.aggr_us =3D aggr_us + self.intervals_goal =3D intervals_goal + self.intervals_goal.attrs =3D self self.update_us =3D update_us self.min_nr_regions =3D min_nr_regions self.max_nr_regions =3D max_nr_regions @@ -436,6 +474,9 @@ class DamonAttrs: return err err =3D write_file(os.path.join(self.interval_sysfs_dir(), 'aggr_u= s'), self.aggr_us) + if err is not None: + return err + err =3D self.intervals_goal.stage() if err is not None: return err err =3D write_file(os.path.join(self.interval_sysfs_dir(), 'update= _us'), --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 6E878223DD1; Sun, 20 Jul 2025 17:17:01 +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=1753031821; cv=none; b=KuCERuI9uFdCRqRto7nRJ5WSTDSydziUNZ4nxunqpw6YwNjXm5P51RC7cvTUaOADt2/KIrnDnKfmviIraOcFjER4TM/JWy7bZEwoDXluaY14w0scgK0zVzGDN9R9wl+qv2gcww7a45z6M1hJDmO8b07fNzsWbu7938z/y1BNZAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031821; c=relaxed/simple; bh=sQuriqqTYEVG3BTXSxFPevEEtfd34DY9wOWswVQQEuo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GtmRGHpN/lmw7s55P1215owN2+LW4H5QoOldyhRlIf0IXP4Snls++NoEn03E8UwHSjRagtrIUqcCrKpQikZDLezbYuQBYK1v/Nm6Yqr/oMiSfgqxRdniJ5utMzOYgsqpfpw8ERqFFDKi19ifUYmWOYQFYAoxRcwtya35vWrSa+s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ocTyl2Xv; 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="ocTyl2Xv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5B99C4CEE7; Sun, 20 Jul 2025 17:17:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031821; bh=sQuriqqTYEVG3BTXSxFPevEEtfd34DY9wOWswVQQEuo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ocTyl2Xv2eeP4NMyxgyIB8jWC+zv1RRmEHjUFKBuk/I5xdk6tuPB8VSrD+m1rHO5Q qA3MduI+aUkowBGIK/mRXV6oxHSfEAgU/Rr7NWUbiuMdtlcQ+XYRRSzdzEULyrnDyL /jfRTPeNKw2V/1SlWUOGxE9BydOClcIdCf2uZeZcr0IfTElvFl0g7GXs9BxTfLDXTB RF/tv7YU5yXT3fzPd1CjkPip7bM2PcYV4pB2mRgeVd41eTniKE8qYbUbGLkWIw/gws 45RmgbGVoiQBtyVDPc8dnsB5U38uvBYlMabFHYT3y4CRf3ZnhSj+omxEYQUpUf9Egv 15VmajDVksILQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 04/22] selftests/damon/_damon_sysfs: support DAMOS quota weights setup Date: Sun, 20 Jul 2025 10:16:34 -0700 Message-Id: <20250720171652.92309-5-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS quotas prioritization weights setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index ec6230929d36..12d076260b2b 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -125,12 +125,20 @@ class DamosQuota: ms =3D None # time quota goals =3D None # quota goals reset_interval_ms =3D None # quota reset interval + weight_sz_permil =3D None + weight_nr_accesses_permil =3D None + weight_age_permil =3D None scheme =3D None # owner scheme =20 - def __init__(self, sz=3D0, ms=3D0, goals=3DNone, reset_interval_ms=3D0= ): + def __init__(self, sz=3D0, ms=3D0, goals=3DNone, reset_interval_ms=3D0, + weight_sz_permil=3D0, weight_nr_accesses_permil=3D0, + weight_age_permil=3D0): self.sz =3D sz self.ms =3D ms self.reset_interval_ms =3D reset_interval_ms + self.weight_sz_permil =3D weight_sz_permil + self.weight_nr_accesses_permil =3D weight_nr_accesses_permil + self.weight_age_permil =3D weight_age_permil self.goals =3D goals if goals is not None else [] for idx, goal in enumerate(self.goals): goal.idx =3D idx @@ -151,6 +159,20 @@ class DamosQuota: if err is not None: return err =20 + err =3D write_file(os.path.join( + self.sysfs_dir(), 'weights', 'sz_permil'), self.weight_sz_perm= il) + if err is not None: + return err + err =3D write_file(os.path.join( + self.sysfs_dir(), 'weights', 'nr_accesses_permil'), + self.weight_nr_accesses_permil) + if err is not None: + return err + err =3D write_file(os.path.join( + self.sysfs_dir(), 'weights', 'age_permil'), self.weight_age_pe= rmil) + if err is not None: + return err + nr_goals_file =3D os.path.join(self.sysfs_dir(), 'goals', 'nr_goal= s') content, err =3D read_file(nr_goals_file) if err is not None: --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 49783224B14; Sun, 20 Jul 2025 17:17: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=1753031822; cv=none; b=pm9AKtBJrLzhyF3g3+hz+gVp0BX+8IH4K3EylKIGqyObzAcsvN1kf9aNg++zNVLZVz1dZEU/WCwNTJd7QEW17y7M69ml9YyeYl0/Fm8dOx1FEd6Hm6U51EurJYTDO1UkVeOnvGA/j8Z3C5wio99l9REqDSxd/93Bqjw6Xzs6AGE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031822; c=relaxed/simple; bh=uDGOXuisSHH2yLdNvqjy5dI087RwDAzdaOJ4u0Bocck=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LsENhAkJCjyAmD0CrNO1IEmbxKKjr01T23uUnVnoRaJMPlZThIA75eA35TtRhKLfO4QJ6hjiGr2SHrlmLYMQNBF0/WAbEYdSHJ33J4IqOvgkxBKY+Bdq4bKRnnFZidspOv/hBbWHv9iAqdk0EZogbHjaT43NXne0TctOD8kmMZY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e/4sPHbg; 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="e/4sPHbg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0090FC4CEEB; Sun, 20 Jul 2025 17:17:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031822; bh=uDGOXuisSHH2yLdNvqjy5dI087RwDAzdaOJ4u0Bocck=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e/4sPHbgpENYqB/ea7DWhvbIe/KAJMxh5MkehXWbl5ouWM7rk6WidxQVKFH2ZW1lU Ek9Q7datmcET+2AHE4Xfybm1k0gs4mOrA06SAsl5CJ4BDcSVOK5ePr6QehRTDNClq0 oz94/8xQjesd4EG6h2vDzhX6t9+qSie0k6CSfOUXcCGvegCLgeWhNZzCwwa8piqspO z+9L6AnVJmCjUJidvLK8jmEVRY9SMDE/MppoZErfhu954t6Mfix6sAdFB9Vq8yH6Jh 2t67cqsddq5FTyLBAet4Tuh+rRRegupLcRZ6U7aHgu6UR2FLWcpQNE9WEm7a1T5yTo fheO6q1cbXjfA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 05/22] selftests/damon/_damon_sysfs: support DAMOS quota goal nid setup Date: Sun, 20 Jul 2025 10:16:35 -0700 Message-Id: <20250720171652.92309-6-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS quota goal nid setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index 12d076260b2b..23de9202b4e3 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -93,14 +93,16 @@ class DamosQuotaGoal: metric =3D None target_value =3D None current_value =3D None + nid =3D None effective_bytes =3D None quota =3D None # owner quota idx =3D None =20 - def __init__(self, metric, target_value=3D10000, current_value=3D0): + def __init__(self, metric, target_value=3D10000, current_value=3D0, ni= d=3D0): self.metric =3D metric self.target_value =3D target_value self.current_value =3D current_value + self.nid =3D nid =20 def sysfs_dir(self): return os.path.join(self.quota.sysfs_dir(), 'goals', '%d' % self.i= dx) @@ -118,6 +120,10 @@ class DamosQuotaGoal: self.current_value) if err is not None: return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'nid'), self.nid) + if err is not None: + return err + return None =20 class DamosQuota: --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 5CC6E2264AD; Sun, 20 Jul 2025 17:17: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=1753031823; cv=none; b=dP8gPxO3gFElFLjWLOhrj01tB3XVvNdnvsTeG/fp5PBfI14ZWxy3WZGZFvP8bpzDlugQ4OERSBsgVGcbLfytdI3LcwDEALn8LWxvCoyGthuE2wBsb1cQ6pEtOQ6rmZhChpTbwksGYizRHI/mnPZlCXdd7GQ3KgDnygEG8Mo1t0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031823; c=relaxed/simple; bh=XSthd9dlhJIV6ssLC4htorYpexWz5dqyUITsYAj+758=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ri+2eqVMhbfBSOmGFppw8YA87OHHnpy/A294UpH9u2BCc31c1KitI3BMYEoOezSZWkQ4scmbMu4TfZsF/ITX4Ys20LR3D+9RtypliTWXQo5UN8Rh8LlBhJFMWru5aWBYgyXJEtyn0wXn63olzi+x6W6thyQ7DcljNnSugf5tZks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UidaZlLp; 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="UidaZlLp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 16DD4C4CEFA; Sun, 20 Jul 2025 17:17:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031823; bh=XSthd9dlhJIV6ssLC4htorYpexWz5dqyUITsYAj+758=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UidaZlLpAzxjA5v4RJcPbgi8JyTetTkgF1Gu4yNcVvzQTFtrqVCxriwR7VA8wIAwn jFcaxzpuLy6oPpi6vvRKyxuneu69NtlaDdp6lL7awJhA88N3AWcsFskM40emcbh3HQ p8w+vRb0QVUjHrgTU5RuXbwif1saOfXbvrYahk+poJoPkoY5N3GbuZ/VSnyCf/9OLB 2tGiUrJoN3AvGh97FJ2UYxUWERjQ3ACGpbdZbzCV18y0SRox0fBXWVIQs5TlIKaH7S g348XUe2X19eJfw988sb41pj0YSnOVDJz4dWhd9c+YCgQTyKyaFvOS0LphfQn9mN+c uUzFeulNteHCw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 06/22] selftests/damon/_damon_sysfs: support DAMOS action dests setup Date: Sun, 20 Jul 2025 10:16:36 -0700 Message-Id: <20250720171652.92309-7-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS action destinations setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index 23de9202b4e3..2d95ab564885 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -319,6 +319,52 @@ class DamosFilters: return err return None =20 +class DamosDest: + id =3D None + weight =3D None + idx =3D None + dests =3D None # owner dests + + def __init__(self, id=3D0, weight=3D0): + self.id =3D id + self.weight =3D weight + + def sysfs_dir(self): + return os.path.join(self.dests.sysfs_dir(), '%d' % self.idx) + + def stage(self): + err =3D write_file(os.path.join(self.sysfs_dir(), 'id'), self.id) + if err is not None: + return err + err =3D write_file(os.path.join(self.sysfs_dir(), 'weight'), self.= weight) + if err is not None: + return err + return None + +class DamosDests: + dests =3D None + scheme =3D None # owner scheme + + def __init__(self, dests=3D[]): + self.dests =3D dests + for idx, dest in enumerate(self.dests): + dest.idx =3D idx + dest.dests =3D self + + def sysfs_dir(self): + return os.path.join(self.scheme.sysfs_dir(), 'dests') + + def stage(self): + err =3D write_file(os.path.join(self.sysfs_dir(), 'nr_dests'), + len(self.dests)) + if err is not None: + return err + for dest in self.dests: + err =3D dest.stage() + if err is not None: + return err + return None + class DamosStats: nr_tried =3D None sz_tried =3D None @@ -349,6 +395,7 @@ class Damos: ops_filters =3D None filters =3D None apply_interval_us =3D None + dests =3D None idx =3D None context =3D None tried_bytes =3D None @@ -358,7 +405,7 @@ class Damos: def __init__(self, action=3D'stat', access_pattern=3DDamosAccessPatter= n(), quota=3DDamosQuota(), watermarks=3DDamosWatermarks(), core_filters=3D[], ops_filters=3D[], filters=3D[], - apply_interval_us=3D0): + dests=3DDamosDests(), apply_interval_us=3D0): self.action =3D action self.access_pattern =3D access_pattern self.access_pattern.scheme =3D self @@ -376,6 +423,9 @@ class Damos: self.filters =3D DamosFilters(name=3D'filters', filters=3Dfilters) self.filters.scheme =3D self =20 + self.dests =3D dests + self.dests.scheme =3D self + self.apply_interval_us =3D apply_interval_us =20 def sysfs_dir(self): @@ -412,6 +462,10 @@ class Damos: if err is not None: return err =20 + err =3D self.dests.stage() + if err is not None: + return err + class DamonTarget: pid =3D None # todo: Support target regions if test is made --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 8FF012288E3; Sun, 20 Jul 2025 17:17:04 +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=1753031824; cv=none; b=iXqnbfE1oXjJ/aH2lpDkdK8JAK5loO9meCCq6EZ855KBZok9rBnag5xSLU0XZ6WKQsHw38HGri08barfsqoOy35b7s58NWRRxPGX8pa1KJojJc4JDN3LSY8uat4kLy2zP6s6VNBOVTz5Bru306TR50IOf0TSYnpmS5YzqA0IOVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031824; c=relaxed/simple; bh=ZQzqfi/OS5yYOXrb3FU1Hs0VW2GsZiQOy/FfBc9gMsM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TYu2V1MNiSpdlai2cCksjfDNiyPejpIyeKuB/u3nzujm9GqVKbyLAFraFDCgfvwQvyIyNNl65Y7p1P0XmiMbtKoQsiZ83FMbiVkhfb9V5NCFdXQx/E4fEiXNpVpZpJzKJNnylmqh0T70SiYuJAPqDxavhi57wQO4NV5j0zoERwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ej57wPJM; 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="Ej57wPJM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A0B0C4CEEB; Sun, 20 Jul 2025 17:17:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031824; bh=ZQzqfi/OS5yYOXrb3FU1Hs0VW2GsZiQOy/FfBc9gMsM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ej57wPJM6GnJ6epoo02iL8cEI0EfB5/8/kC8od503jaDb36jF1GNg67eNfMQcnA86 80OSIHIRwkeI4SOFl8G3lPRl8/f45CF4BNWvAYf2VbpjKeQv5gpyXfXlCt/N8L9yJS /iOZkda+a3m/4fSygtrfECsOMNUFnG0vyWUMaa+lZzDSehNmyqxVF/l9wPmdMFUpRC HnBU7N0isCAq23CR3d14RfYhC95TMq7mdsO/+Gi1zWvGFVWZqRk8SNSGw7zNL60o6v Q6oq2MCvSWWYvmB4lCM7VpwvD9+hpUH8WPkB82rWRZEBC/+zC215ed031czrm5PUc6 qZVY7jhdw/bxA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 07/22] selftests/damon/_damon_sysfs: support DAMOS target_nid setup Date: Sun, 20 Jul 2025 10:16:37 -0700 Message-Id: <20250720171652.92309-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS action destination target_nid setup for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index 2d95ab564885..70860d925503 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -395,6 +395,7 @@ class Damos: ops_filters =3D None filters =3D None apply_interval_us =3D None + target_nid =3D None dests =3D None idx =3D None context =3D None @@ -404,7 +405,7 @@ class Damos: =20 def __init__(self, action=3D'stat', access_pattern=3DDamosAccessPatter= n(), quota=3DDamosQuota(), watermarks=3DDamosWatermarks(), - core_filters=3D[], ops_filters=3D[], filters=3D[], + core_filters=3D[], ops_filters=3D[], filters=3D[], target= _nid=3D0, dests=3DDamosDests(), apply_interval_us=3D0): self.action =3D action self.access_pattern =3D access_pattern @@ -423,6 +424,7 @@ class Damos: self.filters =3D DamosFilters(name=3D'filters', filters=3Dfilters) self.filters.scheme =3D self =20 + self.target_nid =3D target_nid self.dests =3D dests self.dests.scheme =3D self =20 @@ -462,6 +464,11 @@ class Damos: if err is not None: return err =20 + err =3D write_file(os.path.join(self.sysfs_dir(), 'target_nid'), '= %d' % + self.target_nid) + if err is not None: + return err + err =3D self.dests.stage() if err is not None: return err --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 6E51822B8D0; Sun, 20 Jul 2025 17:17: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=1753031825; cv=none; b=K03h87fwhJV3z9vpdUVlJHkiGIRzDtEZfVq6/6ZM4vehez2KRMxjca76cHgovvpCjg70KC08qxU8sBp4+cK9WYIPTntksPxPbkqmF/GoPjeziiv8twNiF5+SVC/dQYMsFs7EgJJQ2uNp4purJY/z4VdscqIe1hG0fpko8CedUtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031825; c=relaxed/simple; bh=Au9qdbaf1y862mEtrhaeMOCqkg6S44qyZ+dQYN9tIfI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jFaIONvgmhb7KCAKUXxz2BT/cByomG/GpkS9u6LiD39fj+CNAucgCF37tvHtoGqX7HfbFYpx8jnQCSCBiCEwNa0lURQEcCSjqyyMajL0v7GX5jsKEDzr3MP+WIeXnpWOkNmZB2pXG0+bxQAtQ34ba2axzyvVVVOxBJbxay7bV2A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R3zPFu8u; 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="R3zPFu8u" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A348C4CEE7; Sun, 20 Jul 2025 17:17:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031825; bh=Au9qdbaf1y862mEtrhaeMOCqkg6S44qyZ+dQYN9tIfI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R3zPFu8uQHYONdsQRuFMY2bzF2HqjUx2ddSPUQaX0iCJ3QEGXirC+s7lDwEtAWYWq 1qsHJTDzb22o97QHdQorzmJufZT4qZImqLaf95aFGkAM5YaEAl1b2Rn15XSExkpyWP VhW0zbdq0KbWru2vo0EsIoBS8SJrIpfzPqihdlkNbHWA9vPseeahmSl1ln0/5uwsKr 482WVCHeSBt3IBDTwFgF5VNXUaLai4hsFnU3OQsqgLzL58y6yoah/t76m7AUIZaEtA oLKgs4KMZdmbN6trm252gOD8xGUUGlIr1CM+hptnikjK4qvQV98F83i4PLX8Hvzo4e U/y+c3lIsmDIA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 08/22] selftests/damon/_damon_sysfs: use 2**32 - 1 as max nr_accesses and age Date: Sun, 20 Jul 2025 10:16:38 -0700 Message-Id: <20250720171652.92309-9-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" nr_accesses and age are unsigned int. Use the proper max value. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/_damon_sysfs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/damon/_damon_sysfs.py b/tools/testing/= selftests/damon/_damon_sysfs.py index 70860d925503..a0e6290833fb 100644 --- a/tools/testing/selftests/damon/_damon_sysfs.py +++ b/tools/testing/selftests/damon/_damon_sysfs.py @@ -52,9 +52,9 @@ class DamosAccessPattern: if self.size is None: self.size =3D [0, 2**64 - 1] if self.nr_accesses is None: - self.nr_accesses =3D [0, 2**64 - 1] + self.nr_accesses =3D [0, 2**32 - 1] if self.age is None: - self.age =3D [0, 2**64 - 1] + self.age =3D [0, 2**32 - 1] =20 def sysfs_dir(self): return os.path.join(self.scheme.sysfs_dir(), 'access_pattern') --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 BB49922F769; Sun, 20 Jul 2025 17:17:06 +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=1753031826; cv=none; b=D3Btc+CtQNwZvI+bQu0skRWTERjO95NLh3LYREFQ5AFlywiYC/htYa9MVdxIKBG4uYTl4G+6m83zOnl+bBFQkJcTsCFsps10QJoIrbfB981U1P1Bq966AKcaxZx2cNNI69FPIEd26t2p3vEIsHuueFKn5U9PoGTkeYgzepk8aJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031826; c=relaxed/simple; bh=jK/5e0f+p+R18UZwW5wG4/SSylxftyD5V+ufZGZFK+Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=luVnNbYcOtwgtfu541vf5k4XJ+Q77oGR/D2tg4elCPUy3wgDxZOKBhKl7SFNuG7s6ijpqEddsYpyHS78ff6N+9x3r5UDsEVNUcPgblYzVCCE7tmNIuCpA7xE4nmS/PuFbmWGiT4VrUAkJ/DaME3uu770BFuk9UHocBRa9ygARIw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IvLouwEm; 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="IvLouwEm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 340FEC4CEEB; Sun, 20 Jul 2025 17:17:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031826; bh=jK/5e0f+p+R18UZwW5wG4/SSylxftyD5V+ufZGZFK+Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IvLouwEmDJk8h2O06vpBTTQnDnG2PODw+GWi1W5cN4PGz8gMXhVhHN7dwDCMH9XKG YKX1+lZLc0JEf5yInJr8e4SzVj4Y7KaTvJK3y4By9gFX76Qa6kIxu49r1bAr1wEmSO TW2RDft5XWBpQCgwCJ3GjEaSDZU+eThQhMruFfQiyAnlEppVd56b0bs3XH5vYDMXd8 58XHMC7Z62il5ngmKVh58Bfe5ExcPD75eF/MEsWXYE77HpOa12oa711Oq30PbjGrgX nZrT5pr5sNoMx2EjW4oTAny2o5vl5SqxLU9lMCxde7+x5dQJ/nP5pP7+hC7k46flUc cz0HjrWpvI1yw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 09/22] selftests/damon/drgn_dump_damon_status: dump damos->migrate_dests Date: Sun, 20 Jul 2025 10:16:39 -0700 Message-Id: <20250720171652.92309-10-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" drgn_dump_damon_status.py is a script for dumping DAMON internal status in json format. It is being used for seeing if DAMON parameters that are set using _damon_sysfs.py are actually passed to DAMON in the kernel space. It is, however, not dumping full DAMON internal status, and it makes increasing test coverage difficult. Add damos->migrate_dests dumping for more tests. Signed-off-by: SeongJae Park --- .../selftests/damon/drgn_dump_damon_status.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/damon/drgn_dump_damon_status.py b/tool= s/testing/selftests/damon/drgn_dump_damon_status.py index 333a0d0c4bff..8db081f965f5 100755 --- a/tools/testing/selftests/damon/drgn_dump_damon_status.py +++ b/tools/testing/selftests/damon/drgn_dump_damon_status.py @@ -117,6 +117,19 @@ def damos_watermarks_to_dict(watermarks): ['high', int], ['mid', int], ['low', int], ]) =20 +def damos_migrate_dests_to_dict(dests): + nr_dests =3D int(dests.nr_dests) + node_id_arr =3D [] + weight_arr =3D [] + for i in range(nr_dests): + node_id_arr.append(int(dests.node_id_arr[i])) + weight_arr.append(int(dests.weight_arr[i])) + return { + 'node_id_arr': node_id_arr, + 'weight_arr': weight_arr, + 'nr_dests': nr_dests, + } + def scheme_to_dict(scheme): return to_dict(scheme, [ ['pattern', damos_access_pattern_to_dict], @@ -125,6 +138,7 @@ def scheme_to_dict(scheme): ['quota', damos_quota_to_dict], ['wmarks', damos_watermarks_to_dict], ['target_nid', int], + ['migrate_dests', damos_migrate_dests_to_dict], ]) =20 def schemes_to_list(schemes): --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 BA8D322127B; Sun, 20 Jul 2025 17:17:07 +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=1753031827; cv=none; b=X9iNbB9IkdmTEqbHbQI+S8j8PdS4Bl34XVukokgpSNTaTt06H6Qv3WZ0FUP6Z4P8p0XFTqNRX3+fqIBrDbrLcKHkB1CbZDuhCol2yzPOMjhAxDhXb2IHLqalNczDyKKX49AyYXZBGOhOK4WB7GU4zQGL0DPFTBrVnzagv8sNXAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031827; c=relaxed/simple; bh=DFNV//C+QgXrmI/GjL4BHGLlAxbvvBZJy/zmKoFxFVs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=t9baeGpnWiQdKgHdt2xKl86cN0kfugE1TQSh7UzWDkJNpZp3SS9b9/T1ly6eD+o9WUx4N+YrOxlQxSDcw3gsTbPG+KRRFBFxQCyh2++vrU9WqtzDLV7blpog/xSdl6Ct2Qvdoc/kWnxGSqPOLY4bBzB+Ypo9i7HMbWxVxgIgIZ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=di9WADvY; 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="di9WADvY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3BA08C4CEEB; Sun, 20 Jul 2025 17:17:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031827; bh=DFNV//C+QgXrmI/GjL4BHGLlAxbvvBZJy/zmKoFxFVs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=di9WADvYirNrmIHFOoFdaneoNUmciL7vfeLzP0zHhw8eM4z8KMtTpSuz3tve5AZTC 4X/MJJHeS0utc3yaINYE52XskbfBBE3gop98m6oUkijfvU/FxOustKTCb9HSLgquBK e0lgPamXMEZzhDsg1XmMBbi/OYh89i2SBg5YpET8vze7KK68xDzrh7evUZjBuKgW/d WWlY7RT94Ho/JZ0TYI9uUnFZaTLAS6gs0Sy85TGrcuqKqHLrqwSjmYR69SdM5HjQwu JgBU49Qky+++R/GM6g3nyD4tzNg4ymM+lSVslv8MGSnfpS/j+UjE3C3UcLEXZr1qJW k5noQ7PgrDq0w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 10/22] selftests/damon/drgn_dump_damon_status: dump ctx->ops.id Date: Sun, 20 Jul 2025 10:16:40 -0700 Message-Id: <20250720171652.92309-11-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" drgn_dump_damon_status.py is a script for dumping DAMON internal status in json format. It is being used for seeing if DAMON parameters that are set using _damon_sysfs.py are actually passed to DAMON in the kernel space. It is, however, not dumping full DAMON internal status, and it makes increasing test coverage difficult. Add ctx->ops.id dumping for more tests. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/drgn_dump_damon_status.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/damon/drgn_dump_damon_status.py b/tool= s/testing/selftests/damon/drgn_dump_damon_status.py index 8db081f965f5..cf5d492670d8 100755 --- a/tools/testing/selftests/damon/drgn_dump_damon_status.py +++ b/tools/testing/selftests/damon/drgn_dump_damon_status.py @@ -25,6 +25,11 @@ def to_dict(object, attr_name_converter): d[attr_name] =3D converter(getattr(object, attr_name)) return d =20 +def ops_to_dict(ops): + return to_dict(ops, [ + ['id', int], + ]) + def intervals_goal_to_dict(goal): return to_dict(goal, [ ['access_bp', int], @@ -148,6 +153,7 @@ def schemes_to_list(schemes): =20 def damon_ctx_to_dict(ctx): return to_dict(ctx, [ + ['ops', ops_to_dict], ['attrs', attrs_to_dict], ['adaptive_targets', targets_to_list], ['schemes', schemes_to_list], --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 9039522156D; Sun, 20 Jul 2025 17:17:08 +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=1753031828; cv=none; b=oC2uaWC+FgzMcrpnhcdxPVwX5NiZnt27pBjZZ9YMfNpwGQYnfzzPyV+VTYvxluDBPsSyFH+qtlZ8CP8E1GnXfijDb4p2f3SPaYbENiQ8yPY1JBfk+eEhmc1UcRp5u49YB+QqwNmSRP/GSFyGB7FYzc2OvpRQGfS+mdIwK/HpJVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031828; c=relaxed/simple; bh=Wceb9ArDixVkfJWULunRIrNmsNWtcFz3oVNo4mLAvbo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n1u3L7W3U1XkjFd7tNCF/tK/vcKGLx994VCJWN1fdDMJRrss846dy2DRrQ5UjezdPQffuHqYhRFImdMsGcptCyQ2z6amFHqUPJ0QMviSFd1nwF6It2z2VfoQaTc2tPW7GN9x2m1ftcomzAXeuPUGskpvIAB7FDwTN0tEsmE6ryE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JMXsHj0Y; 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="JMXsHj0Y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4B301C4CEF6; Sun, 20 Jul 2025 17:17:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031828; bh=Wceb9ArDixVkfJWULunRIrNmsNWtcFz3oVNo4mLAvbo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JMXsHj0YZz9us6RSod5WaJviNIlobPKj1lkhfkBHxblgcViTGP4mKwPfYok4YJRH1 yr8InuUOE2+bwBLQZCqD+Z0a3ZFu0Kgo/sQsx5Kkno92OMf2bmCSl8qkA2DFXiHc/z /96chNgKboautKIjJDGHr66W/6WTpbbjH5dihwfwGVNv+UaYJHF6oXwgDt9Im4I6RS qw1pAQqYVxDfoY1aLWI2UVpQuPBENBRp82xH1vTRLLli2Cju8u5svTmyk73mqJ2lMb JexlRm79DsDg8phBdspk0MU5dI3QO8iAYNvG0vU73LoYsPBYmZ6/f/9E/AHQdL/lP4 KM/Gv/w748UZQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 11/22] selftests/damon/drgn_dump_damon_status: dump DAMOS filters Date: Sun, 20 Jul 2025 10:16:41 -0700 Message-Id: <20250720171652.92309-12-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" drgn_dump_damon_status.py is a script for dumping DAMON internal status in json format. It is being used for seeing if DAMON parameters that are set using _damon_sysfs.py are actually passed to DAMON in the kernel space. It is, however, not dumping full DAMON internal status, and it makes increasing test coverage difficult. Add damos filters dumping for more tests. Signed-off-by: SeongJae Park --- .../selftests/damon/drgn_dump_damon_status.py | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/drgn_dump_damon_status.py b/tool= s/testing/selftests/damon/drgn_dump_damon_status.py index cf5d492670d8..7233369a3a44 100755 --- a/tools/testing/selftests/damon/drgn_dump_damon_status.py +++ b/tools/testing/selftests/damon/drgn_dump_damon_status.py @@ -135,8 +135,37 @@ def damos_migrate_dests_to_dict(dests): 'nr_dests': nr_dests, } =20 +def damos_filter_to_dict(damos_filter): + filter_type_keyword =3D { + 0: 'anon', + 1: 'active', + 2: 'memcg', + 3: 'young', + 4: 'hugepage_size', + 5: 'unmapped', + 6: 'addr', + 7: 'target' + } + dict_ =3D { + 'type': filter_type_keyword[int(damos_filter.type)], + 'matching': bool(damos_filter.matching), + 'allow': bool(damos_filter.allow), + } + type_ =3D dict_['type'] + if type_ =3D=3D 'memcg': + dict_['memcg_id'] =3D int(damos_filter.memcg_id) + elif type_ =3D=3D 'addr': + dict_['addr_range'] =3D [int(damos_filter.addr_range.start), + int(damos_filter.addr_range.end)] + elif type_ =3D=3D 'target': + dict_['target_idx'] =3D int(damos_filter.target_idx) + elif type_ =3D=3D 'hugeapge_size': + dict_['sz_range'] =3D [int(damos_filter.sz_range.min), + int(damos_filter.sz_range.max)] + return dict_ + def scheme_to_dict(scheme): - return to_dict(scheme, [ + dict_ =3D to_dict(scheme, [ ['pattern', damos_access_pattern_to_dict], ['action', int], ['apply_interval_us', int], @@ -145,6 +174,18 @@ def scheme_to_dict(scheme): ['target_nid', int], ['migrate_dests', damos_migrate_dests_to_dict], ]) + filters =3D [] + for f in list_for_each_entry( + 'struct damos_filter', scheme.filters.address_of_(), 'list'): + filters.append(damos_filter_to_dict(f)) + dict_['filters'] =3D filters + ops_filters =3D [] + for f in list_for_each_entry( + 'struct damos_filter', scheme.ops_filters.address_of_(), 'list= '): + ops_filters.append(damos_filter_to_dict(f)) + dict_['ops_filters'] =3D ops_filters + + return dict_ =20 def schemes_to_list(schemes): return [scheme_to_dict(s) --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 D921822172C; Sun, 20 Jul 2025 17:17:09 +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=1753031830; cv=none; b=TCAbSz4YI0LuyJnxpmc61d067ZjKzLUjDITuJ3jvz3uRe5P/k6Zn2M5ljfzS9drE5njyDEg6SO0+wW8IQYvmt81mm4HyOdHm6NxhCIvu5xP2Og/y5DFmLtcqk7t3XJzXdzaireZNi/KWBTwumsRF0L5S+LAkBZKweqf1SbDgjGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031830; c=relaxed/simple; bh=5DVJPjAFv4Z5cR2LSqJtd6K261syubl14OoCYWIJf+M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=g2lwS0ugqsCba18rMOls220ch6cmpDF7U/B+q8nPrS9qnPZvQeslvYWkFxSK3Y+Gj1X7DXxKov7aqY4n1zt6HyPezJeuqIMQ3RRHQoEkH0cligBifjvY9RvCR/E5NWQiC0cE0HvRAXwRL1AII3HRz7msPUOwGqrpduxLdIEUeFc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=X+FErqnG; 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="X+FErqnG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55046C4CEE7; Sun, 20 Jul 2025 17:17:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031829; bh=5DVJPjAFv4Z5cR2LSqJtd6K261syubl14OoCYWIJf+M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X+FErqnGuJLxgqC6IN+1c2UIPAD1gj80yPK72GJB7xmInTGtNcTMNLiRVAQagIPip IQrDEy+upWQgjgXm4Dzgl5eHwm9x79c6XwVyS8635JLr4+VXVLlx2GHsrYAIC+X5H8 AkQsUdhm7Uq8lfb9uliP90ZYj+6BgW1tKyuzI+XHgmB4dn6otjHE5W8beON+iynU1e SKO1X8kD+SP656xYtVD4yi74jBYN7eSszIlUg41NTsUe80HHQFhT16ag6fnKqYokmh mjCO7lus0/m43kwX3Y3iequsKlw6JMD0cvtnVZVaxpMmYQHqFWubyqtDHzATiw2RAz uHDbHVEMsm+vg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 12/22] selftests/damon/sysfs.py: generalize DAMOS Watermarks commit assertion Date: Sun, 20 Jul 2025 10:16:42 -0700 Message-Id: <20250720171652.92309-13-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" DamosWatermarks commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index e67008fd055d..91a28d97b015 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -25,6 +25,22 @@ def fail(expectation, status): print(json.dumps(status, indent=3D4)) exit(1) =20 +def assert_true(condition, expectation, status): + if condition is not True: + fail(expectation, status) + +def assert_watermarks_committed(watermarks, dump): + wmark_metric_val =3D { + 'none': 0, + 'free_mem_rate': 1, + } + assert_true(dump['metric'] =3D=3D wmark_metric_val[watermarks.metric], + 'metric', dump) + assert_true(dump['interval'] =3D=3D watermarks.interval, 'interval', d= ump) + assert_true(dump['high'] =3D=3D watermarks.high, 'high', dump) + assert_true(dump['mid'] =3D=3D watermarks.mid, 'mid', dump) + assert_true(dump['low'] =3D=3D watermarks.low, 'low', dump) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -100,14 +116,8 @@ def main(): }: fail('damos quota', status) =20 - if scheme['wmarks'] !=3D { - 'metric': 0, - 'interval': 0, - 'high': 0, - 'mid': 0, - 'low': 0, - }: - fail('damos wmarks', status) + assert_watermarks_committed(_damon_sysfs.DamosWatermarks(), + scheme['wmarks']) =20 kdamonds.stop() =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 0D461235078; Sun, 20 Jul 2025 17:17:10 +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=1753031831; cv=none; b=EO5E2mTf41xmxu+9psBrXfz+BSfW/bgcICYfiFWLOWNFmWWoLavFavbevXP9WNVrSLPIaQv8KuJkhUupFh9Xjw0QopO1/M48kEP1xoml2kSg6RApkABUgjJuBCh+vdsiDGOTol4JkPZDM/A6R5ujrCu5fC7dMqbvNeFItPwgres= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031831; c=relaxed/simple; bh=lGHkMcba/CR1vJvOM12egev5VxmQknIZ9A3KZprvdZ8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gtP0/cuzjF1ZUJJ4ypqwvbRzAorzi3F2KHZHXpOXRKjyLocuAY09VdXNVlaKhdXZVMhgvELa9dN9J0Rn2/EAVxCNbW2BgoXDx8/WgnR5UvalB0GO42LOdyhYvbNI/sTFihfEXU1jgVxskJKQEMCQr24iIbcRzuCNir74UmdxfeQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SIO8Tzv4; 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="SIO8Tzv4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 717DAC4CEE7; Sun, 20 Jul 2025 17:17:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031830; bh=lGHkMcba/CR1vJvOM12egev5VxmQknIZ9A3KZprvdZ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SIO8Tzv4fUCNM0P6jf76Nt74AOJffaEqtg8Upt26Vzlh5BkNlrCX5knjfLpNglUbn gR3dYlWh2jXjQnsDHNS+S0uZgdkiq6khC+8v+s9glfteIdg0mmbviujpUYteT7zwH8 CqIc0+A0ibyrVgFIa+slw0ZuP7dq2+v5aUVTRyUhQhNg+iiTJPsL6UluBLg4/UiAgf cwHWmBSE8YePcPjui8LW+YkAhtr0juiM/FZ60golVCwTnaFh6Em+F2ZuBsOYSESfCO O262crcFEqyh7OQVEnzF9fg3zDwhTmV/7GLA+feFK985hYRimLAhJrNmCcb2TEVJPE 7Fvi2ppOiizqg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 13/22] selftests/damon/sysfs.py: generalize DamosQuota commit assertion Date: Sun, 20 Jul 2025 10:16:43 -0700 Message-Id: <20250720171652.92309-14-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" DamosQuota commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 31 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 91a28d97b015..dbe9f1a3b976 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -41,6 +41,18 @@ def assert_watermarks_committed(watermarks, dump): assert_true(dump['mid'] =3D=3D watermarks.mid, 'mid', dump) assert_true(dump['low'] =3D=3D watermarks.low, 'low', dump) =20 +def assert_quota_committed(quota, dump): + assert_true(dump['reset_interval'] =3D=3D quota.reset_interval_ms, + 'reset_interval', dump) + assert_true(dump['ms'] =3D=3D quota.ms, 'ms', dump) + assert_true(dump['sz'] =3D=3D quota.sz, 'sz', dump) + # TODO: assert goals are committed + assert_true(dump['weight_sz'] =3D=3D quota.weight_sz_permil, 'weight_s= z', dump) + assert_true(dump['weight_nr_accesses'] =3D=3D quota.weight_nr_accesses= _permil, + 'weight_nr_accesses', dump) + assert_true( + dump['weight_age'] =3D=3D quota.weight_age_permil, 'weight_age= ', dump) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -104,18 +116,15 @@ def main(): if scheme['target_nid'] !=3D -1: fail('damos target nid', status) =20 - if scheme['quota'] !=3D { - 'reset_interval': 0, - 'ms': 0, - 'sz': 0, - 'goals': [], - 'esz': 0, - 'weight_sz': 0, - 'weight_nr_accesses': 0, - 'weight_age': 0, - }: - fail('damos quota', status) + migrate_dests =3D scheme['migrate_dests'] + if migrate_dests['nr_dests'] !=3D 0: + fail('nr_dests', status) + if migrate_dests['node_id_arr'] !=3D []: + fail('node_id_arr', status) + if migrate_dests['weight_arr'] !=3D []: + fail('weight_arr', status) =20 + assert_quota_committed(_damon_sysfs.DamosQuota(), scheme['quota']) assert_watermarks_committed(_damon_sysfs.DamosWatermarks(), scheme['wmarks']) =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 24404239562; Sun, 20 Jul 2025 17:17:11 +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=1753031832; cv=none; b=TQUmMeKt8FZWoGWe1ae06zHvq33K6KVrRVaCTsX1rlXObNrhpUumbo1xBdckcZwolo1KcfsVeAG6M7ljTwjmNZzJJY8BWH9UsIlg3Sh6m3DF9oaKxR8GrNljHpqp9BNvBGoEEujRtEdCYBsTdOYdDDN56JPI75l/7EwJn2l3W38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031832; c=relaxed/simple; bh=kZP9TMK44j+18HVVnFB5kNP/rbjB4yM/tzS9BLvJR7I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bEYDcwkmkVkwKTup0qDW4QFHFNl7eoH3yvegmVeMRiJIdODZYq5od2Buj06SEOiPsVJIScw2F3bvCi0PYY+7shfmpQg87KfNvDjZwihIZg9bmoySiHnyE6FRGQRF9+m3e7x0Z5agMMULnl/ptn388hecIVFuL69mdhFI97U0ubE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n7URi843; 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="n7URi843" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8340BC4CEE7; Sun, 20 Jul 2025 17:17:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031831; bh=kZP9TMK44j+18HVVnFB5kNP/rbjB4yM/tzS9BLvJR7I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n7URi843ye5z+FYnT5BlTEizCjI5a7L/inkAcz+qOdP3nV0HjVFbUM2oDweGXvjK4 DsOgf0HimSDZnjX1VF5VpxGMBfZab7VheCvgpESZIPfR6h3/r6xRIM0At9EdfyXVLI nueEeNBt9h0tUZ72XHVidSoMzo9G9s5VYRKHDnCZPFySmtgVXE+huEB/5FaXU3u8fm gSScyR8q5ojarz26PFQTX4g2Y/o6pqEuHW3c+LjLywBZDblU5fdHRQGUYZHTEhFx3Y 0MpA1Raifm+YLhKfucKL6iZlbsMNuTbeKn1TQ4r2JnQgfOTj63ExdCGaA0GfzF1mAi 7MBBxVxXpQh5A== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 14/22] selftests/damon/sysfs.py: test quota goal commitment Date: Sun, 20 Jul 2025 10:16:44 -0700 Message-Id: <20250720171652.92309-15-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" Current DAMOS quota commitment assertion is not testing quota goal commitment. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index dbe9f1a3b976..93f20c5c6780 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -41,12 +41,28 @@ def assert_watermarks_committed(watermarks, dump): assert_true(dump['mid'] =3D=3D watermarks.mid, 'mid', dump) assert_true(dump['low'] =3D=3D watermarks.low, 'low', dump) =20 +def assert_quota_goal_committed(qgoal, dump): + metric_val =3D { + 'user_input': 0, + 'some_mem_psi_us': 1, + 'node_mem_used_bp': 2, + 'node_mem_free_bp': 3, + } + assert_true(dump['metric'] =3D=3D metric_val[qgoal.metric], 'metric', = dump) + assert_true(dump['target_value'] =3D=3D qgoal.target_value, 'target_va= lue', + dump) + if qgoal.metric =3D=3D 'user_input': + assert_true(dump['current_value'] =3D=3D qgoal.current_value, + 'current_value', dump) + assert_true(dump['nid'] =3D=3D qgoal.nid, 'nid', dump) + def assert_quota_committed(quota, dump): assert_true(dump['reset_interval'] =3D=3D quota.reset_interval_ms, 'reset_interval', dump) assert_true(dump['ms'] =3D=3D quota.ms, 'ms', dump) assert_true(dump['sz'] =3D=3D quota.sz, 'sz', dump) - # TODO: assert goals are committed + for idx, qgoal in enumerate(quota.goals): + assert_quota_goal_committed(qgoal, dump['goals'][idx]) assert_true(dump['weight_sz'] =3D=3D quota.weight_sz_permil, 'weight_s= z', dump) assert_true(dump['weight_nr_accesses'] =3D=3D quota.weight_nr_accesses= _permil, 'weight_nr_accesses', dump) --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 F2EC6239E8A; Sun, 20 Jul 2025 17:17:12 +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=1753031833; cv=none; b=KxHJsDK1A5oFhDdyYPCGzph1ao68TgGH6jPO/KI2ETcaLpUK1OniGqxEaYVeK2SZRDFKmWrxMlfzO8d/edu8463eua66/xFdA8wnKYjUCBUPAl54x7nPXRMZyNeFZcGv1Hgb6ODxqXdkxK9rkd3mgYMD4vKyDCr7ANExvTvkMNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031833; c=relaxed/simple; bh=ERpV8blO5HNqiTijey9V1Uxn0Ow5E/IYjTdkk8p12JU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rwsLt5alxiLZaKO1a+ZD0E3hHR1QzIA012Rq54vpdvgroWed6vogEPTma8HjzOBs9GiH5xB29ZLjmXAKrysCfxcdd53nDanZPmUfz0Cm8BVfWnhB9ubi4vkVIj5WzgOW48NoD7hmWCWLpRTrKkXPsbXtAGNWN8rRuebP36P25M0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F3W69egp; 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="F3W69egp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A08B3C4CEE7; Sun, 20 Jul 2025 17:17:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031832; bh=ERpV8blO5HNqiTijey9V1Uxn0Ow5E/IYjTdkk8p12JU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F3W69egp4Lt7yKSHpQdSNCJC91Zv6+Jo5RaSAXKK4AluK9lXV2QP9pvsKB/fSvT2H 0Xbk7kEsKifnO7NQheDvMBRS65mm5ncl364TKaHZEfpRzp4PobZEbj/39iUalevILx 7lxzNBVdRoxTQkhR2SFerG6TTHYjwF5vt0ZJio07y69eM/QjADC56iwtCqy3qp3Jym BQBkWniGejfogDTM56EI3KDMrcQrjunI9SLf9J5V7bsUdIQzPvzVMl1ojPSDvYiC5O O9z/fLnzl//BE7Ddw9PKQkflM+v7pVpGNpzk7Tczo6jkkonDgVDsUJUT4kOxw91Tut CU414XfXX5/2A== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 15/22] selftests/damon/sysfs.py: test DAMOS destinations commitment Date: Sun, 20 Jul 2025 10:16:45 -0700 Message-Id: <20250720171652.92309-16-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" Current DAMOS commitment assertion is not testing quota destinations commitment. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 93f20c5c6780..803f38b61ab3 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -69,6 +69,13 @@ def assert_quota_committed(quota, dump): assert_true( dump['weight_age'] =3D=3D quota.weight_age_permil, 'weight_age= ', dump) =20 + +def assert_migrate_dests_committed(dests, dump): + assert_true(dump['nr_dests'] =3D=3D len(dests.dests), 'nr_dests', dump) + for idx, dest in enumerate(dests.dests): + assert_true(dump['node_id_arr'][idx] =3D=3D dest.id, 'node_id', du= mp) + assert_true(dump['weight_arr'][idx] =3D=3D dest.weight, 'weight', = dump) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -132,14 +139,8 @@ def main(): if scheme['target_nid'] !=3D -1: fail('damos target nid', status) =20 - migrate_dests =3D scheme['migrate_dests'] - if migrate_dests['nr_dests'] !=3D 0: - fail('nr_dests', status) - if migrate_dests['node_id_arr'] !=3D []: - fail('node_id_arr', status) - if migrate_dests['weight_arr'] !=3D []: - fail('weight_arr', status) - + assert_migrate_dests_committed(_damon_sysfs.DamosDests(), + scheme['migrate_dests']) assert_quota_committed(_damon_sysfs.DamosQuota(), scheme['quota']) assert_watermarks_committed(_damon_sysfs.DamosWatermarks(), scheme['wmarks']) --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 3D93723ABBF; Sun, 20 Jul 2025 17:17:13 +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=1753031835; cv=none; b=BCv9lpA2kO289WYTF2oWUoasU+i1PcmSy9y2XBGnaiFGJhS0SL0NizX62+teLs7V9Q9yEy6RmN44OjBOdQMzI/cBNrAr5/GAbhhurb3rR1WHtU6DG9Uuf6S6VhyoLPX3GiNSineIT1MUbCCd3aczRUlrpFF1dQGh5f0N6M6Vv3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031835; c=relaxed/simple; bh=C+MxPYrYclaVcjxNdOPDcCVwFLKAkLjsoAGfPMtg1OA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Nyi5YTpTW7//ubhDP8BLV+YSgBNUt+VwmhtOKSY68pNOgID0eGWa/eBVDGOwXymUDMwhzHq22hKzedYqB+3Sdtkd7IC2u7s7Bb56eZzKrR8pAAEZfuOP2efGSGGd7mCGjYv/jHyGl69ncQDycuOkSqbLhNbZKw2s0xdShJknIyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sXB5Von2; 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="sXB5Von2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AECB5C4CEEB; Sun, 20 Jul 2025 17:17:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031833; bh=C+MxPYrYclaVcjxNdOPDcCVwFLKAkLjsoAGfPMtg1OA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sXB5Von2EQuwiNj2cE5N7Xo2r4+0Urh50yw+hf7Jyb8tgbWzn3FBGP+eZSDWpMOGA NmJ62BsRk8eMKEKWUIH8QVdT5XRxJ2UNgU9IJsU5F972j4Kd3fhrL1d9b2atb7xXCd yO6BobtBGJOBBcTj5NS0y2hpF6gRTBd6M9J9TAFkcU2WQzRttzz2coueEawxG419BA gUr6I2MvtB+d+KzTDaD37SnqNyo5HbNjxrO/Fo1xjofMziYvUNYJQ5DGbS1JeQHQSk 8v0MyiDOaakxx4+7ZyGpiiFJxwYg5Xh24bUa7R4StMH8bnr3R7nAt9d/A0iv93c1Oh dN7KxJ3gPTHdQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 16/22] selftests/damon/sysfs.py: generalize DAMOS schemes commit assertion Date: Sun, 20 Jul 2025 10:16:46 -0700 Message-Id: <20250720171652.92309-17-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" DAMOS scheme commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 59 ++++++++++++++++---------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 803f38b61ab3..584a71cbb891 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -76,6 +76,42 @@ def assert_migrate_dests_committed(dests, dump): assert_true(dump['node_id_arr'][idx] =3D=3D dest.id, 'node_id', du= mp) assert_true(dump['weight_arr'][idx] =3D=3D dest.weight, 'weight', = dump) =20 +def assert_access_pattern_committed(pattern, dump): + assert_true(dump['min_sz_region'] =3D=3D pattern.size[0], 'min_sz_regi= on', + dump) + assert_true(dump['max_sz_region'] =3D=3D pattern.size[1], 'max_sz_regi= on', + dump) + assert_true(dump['min_nr_accesses'] =3D=3D pattern.nr_accesses[0], + 'min_nr_accesses', dump) + assert_true(dump['max_nr_accesses'] =3D=3D pattern.nr_accesses[1], + 'max_nr_accesses', dump) + assert_true(dump['min_age_region'] =3D=3D pattern.age[0], 'min_age_reg= ion', + dump) + assert_true(dump['max_age_region'] =3D=3D pattern.age[1], 'miaxage_reg= ion', + dump) + +def assert_scheme_committed(scheme, dump): + assert_access_pattern_committed(scheme.access_pattern, dump['pattern']) + action_val =3D { + 'willneed': 0, + 'cold': 1, + 'pageout': 2, + 'hugepage': 3, + 'nohugeapge': 4, + 'lru_prio': 5, + 'lru_deprio': 6, + 'migrate_hot': 7, + 'migrate_cold': 8, + 'stat': 9, + } + assert_true(dump['action'] =3D=3D action_val[scheme.action], 'action',= dump) + assert_true(dump['apply_interval_us'] =3D=3D scheme. apply_interval_us, + 'apply_interval_us', dump) + assert_true(dump['target_nid'] =3D=3D scheme.target_nid, 'target_nid',= dump) + assert_migrate_dests_committed(scheme.dests, dump['migrate_dests']) + assert_quota_committed(scheme.quota, dump['quota']) + assert_watermarks_committed(scheme.watermarks, dump['wmarks']) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -122,28 +158,7 @@ def main(): if len(ctx['schemes']) !=3D 1: fail('number of schemes', status) =20 - scheme =3D ctx['schemes'][0] - if scheme['pattern'] !=3D { - 'min_sz_region': 0, - 'max_sz_region': 2**64 - 1, - 'min_nr_accesses': 0, - 'max_nr_accesses': 2**32 - 1, - 'min_age_region': 0, - 'max_age_region': 2**32 - 1, - }: - fail('damos pattern', status) - if scheme['action'] !=3D 9: # stat - fail('damos action', status) - if scheme['apply_interval_us'] !=3D 0: - fail('damos apply interval', status) - if scheme['target_nid'] !=3D -1: - fail('damos target nid', status) - - assert_migrate_dests_committed(_damon_sysfs.DamosDests(), - scheme['migrate_dests']) - assert_quota_committed(_damon_sysfs.DamosQuota(), scheme['quota']) - assert_watermarks_committed(_damon_sysfs.DamosWatermarks(), - scheme['wmarks']) + assert_scheme_committed(_damon_sysfs.Damos(), ctx['schemes'][0]) =20 kdamonds.stop() =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 3D9C823AE60; Sun, 20 Jul 2025 17:17:15 +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=1753031835; cv=none; b=ZiGSven2DYGkzvutwNN3B2I8SdYleOs+k/VqcmHGmOevUgX5E8IXbVtVyzMkjOp+rZqEYzUK1FzXKaiiatvEQysUnoPNnpSLHyagNmta2VY5jZ3Gfi9/lqd+oFv5BK/+jKt1oaA5go3Dpd73mgMCeAnzP+RgVTCrmcx5ebaY5w4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031835; c=relaxed/simple; bh=bR51yZnycsbgoJiidDex0kuSAciWqmDBKUStvRDYoIQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kffvNUDwDIrPp9Q4mST8XnUrcXEcOdjIcZVh2L2InHhZgfzWibliR8bJoRsEovmyEOFJQQTr9aEysumokuSufCocXkGz9QciAsfX7wF5l6sPXAsqB9czWw9FHzYgZjako54z/CQAEkOY+ZOYCqCNXUR/CQ8wnQDb71H3e72uPeU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sf17WfHO; 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="sf17WfHO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B771EC4CEE7; Sun, 20 Jul 2025 17:17:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031834; bh=bR51yZnycsbgoJiidDex0kuSAciWqmDBKUStvRDYoIQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sf17WfHOk3fh7lglUV7XUILRreRNOxM/D0Cm6Z6PcSrE5tS5jn0RWHTWMs2OgWzU4 3SC16LP+Sxe1FnyDCA9lRIBGhz431LToMGG1Mnqe3LiNjUWYHuduHvzTUhqMK2xID1 bWw2vcPjd9+sHG/ymDtn7s4VXFsNxt8df41yl4DqzCcNde4fMDCBaiT8XlzTyw9xpx dIK48SahW2jn6UqJVqeIogfYMpkWqFViHE44zrpYtE6fKl+yxHBwc12tbjgUOPca5P czYKNs73Rpi2nGFIk5aE8u2iHO8Huo4ETq8qK9nJ6ol9UIAbMSXbn1vGHWxuRlgUNO 9RaJaJaAKbblw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 17/22] selftests/damon/sysfs.py: test DAMOS filters commitment Date: Sun, 20 Jul 2025 10:16:47 -0700 Message-Id: <20250720171652.92309-18-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" Current DAMOS scheme commitment assertion is not testing DAMOS filters. Add the test. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 584a71cbb891..a32871b9b0f2 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -76,6 +76,21 @@ def assert_migrate_dests_committed(dests, dump): assert_true(dump['node_id_arr'][idx] =3D=3D dest.id, 'node_id', du= mp) assert_true(dump['weight_arr'][idx] =3D=3D dest.weight, 'weight', = dump) =20 +def assert_filter_committed(filter_, dump): + assert_true(filter_.type_ =3D=3D dump['type'], 'type', dump) + assert_true(filter_.matching =3D=3D dump['matching'], 'matching', dump) + assert_true(filter_.allow =3D=3D dump['allow'], 'allow', dump) + # TODO: check memcg_path and memcg_id if type is memcg + if filter_.type_ =3D=3D 'addr': + assert_true([filter_.addr_start, filter_.addr_end] =3D=3D + dump['addr_range'], 'addr_range', dump) + elif filter_.type_ =3D=3D 'target': + assert_true(filter_.target_idx =3D=3D dump['target_idx'], 'target_= idx', + dump) + elif filter_.type_ =3D=3D 'hugepage_size': + assert_true([filter_.min_, filter_.max_] =3D=3D dump['sz_range'], + 'sz_range', dump) + def assert_access_pattern_committed(pattern, dump): assert_true(dump['min_sz_region'] =3D=3D pattern.size[0], 'min_sz_regi= on', dump) @@ -111,6 +126,11 @@ def assert_scheme_committed(scheme, dump): assert_migrate_dests_committed(scheme.dests, dump['migrate_dests']) assert_quota_committed(scheme.quota, dump['quota']) assert_watermarks_committed(scheme.watermarks, dump['wmarks']) + # TODO: test filters directory + for idx, f in enumerate(scheme.core_filters.filters): + assert_filter_committed(f, dump['filters'][idx]) + for idx, f in enumerate(scheme.ops_filters.filters): + assert_filter_committed(f, dump['ops_filters'][idx]) =20 def main(): kdamonds =3D _damon_sysfs.Kdamonds( --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 1A76C23B625; Sun, 20 Jul 2025 17:17:16 +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=1753031836; cv=none; b=e+R6pGFHrHW2Rhv+W6O8X2cXWHfVNjb3nJR9NsO7fVhsEvaoBuI74ai9JIa9rBRGHkWzf1zcPLnexnlL4GW4nmpAUy2NnG2wdIAKc8lRhM23IOYb5ki+4Imw6bl9RykyOez5YU638PTLZHkyEE/QJVtCnRkzXZPpTwmmak3RWg0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031836; c=relaxed/simple; bh=U0CEnqMMj5kXnKHmB7UhROQ2roqc2bfcpe4lzup4E34=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PuHtwUNG52JOPIdfNjV2/oAO3FWhiAflaiWcOefvTR9peeL5bOwl1dHtprYRLbCRFNUvz9cf7GGa2kjI8IAoW2uIC/7Ab6X8NxM/LOIEUp4kLGVKx2sqG7+XQbbqQIekfXgG/h+UGsX/TPeR4TIRE2ryTy4d85Vuz9JykU9Ner8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=m5aCdeWp; 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="m5aCdeWp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA9E0C4CEE7; Sun, 20 Jul 2025 17:17:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031836; bh=U0CEnqMMj5kXnKHmB7UhROQ2roqc2bfcpe4lzup4E34=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m5aCdeWpswsvzmd4L631j0YCcNw6l0h8LIex3LUKLpOPD5QyMZo5nz4lvqQy54y0S wsJQubeYVe2u6tgsLyA7HIn+Uub2+rJjdruSu5iNuuMmyKK/bo5RYlAuhJdJs658PU l20rNNjvydC2mPa3Lfecu7lYOvLVoGg5oKxBKBfe9bTj8aLg9P6FX7QMKBK7fuC+gn hPMTGEC1A57dgv83EFl7SAnmjkd+Z7ZFXUCKenMfjpJL9nzRCeIDUj/HJUa9Rcn3Ax iP70ImUwsqcymJ8iLTdCtL57CtImRWVpdQu+jeCj1CWkm2XGfpCQGesVsbz6qA1cnZ Fizo7FvuQM9FQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 18/22] selftests/damon/sysfs.py: generalize DAMOS schemes commit assertion Date: Sun, 20 Jul 2025 10:16:48 -0700 Message-Id: <20250720171652.92309-19-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" DAMOS schemes commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index a32871b9b0f2..9e5c72804edf 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -132,6 +132,11 @@ def assert_scheme_committed(scheme, dump): for idx, f in enumerate(scheme.ops_filters.filters): assert_filter_committed(f, dump['ops_filters'][idx]) =20 +def assert_schemes_committed(schemes, dump): + assert_true(len(schemes) =3D=3D len(dump), 'len_schemes', dump) + for idx, scheme in enumerate(schemes): + assert_scheme_committed(scheme, dump[idx]) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -175,10 +180,7 @@ def main(): { 'pid': 0, 'nr_regions': 0, 'regions_list': []}]: fail('adaptive targets', status) =20 - if len(ctx['schemes']) !=3D 1: - fail('number of schemes', status) - - assert_scheme_committed(_damon_sysfs.Damos(), ctx['schemes'][0]) + assert_schemes_committed([_damon_sysfs.Damos()], ctx['schemes']) =20 kdamonds.stop() =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 731C221CA14; Sun, 20 Jul 2025 17:17:17 +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=1753031838; cv=none; b=Hbomb6jx2mBYib81pki2PyP/U4QuRk290KbKTcBEGjTdk60aVwEtDX5UQSf5+pGz1j/jHeoENs+RCQDJbNwABOuup/wuOx7cr4f4NwaVZPyE4LiiYx43NBZMRjIg59lgqxURkl3Jepb1VjA3nSt/fE099J7pM/g2bcNa9iZwa34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031838; c=relaxed/simple; bh=XaEwHmsTCEj3MYPTKjfzApW/gRohngxzmhlfcQnc+6k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TqIWdDK3rbg8QdRWoDkTLpUgk61tv4oU0sj8Derr+6wAQvdJVU5rzGa7inIvls8C6yGt07DmovEwzEbMFrrGH/PE7GBsO4Ua5vn9o8a8PJrN4H2/p9I7Ja+jfk14mwc1rsARNC9IzDJV4zFFkfXJGWYXV9kWiXrH5MCdySN46B4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O6FYk7+F; 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="O6FYk7+F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2FF0C4CEE7; Sun, 20 Jul 2025 17:17:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031837; bh=XaEwHmsTCEj3MYPTKjfzApW/gRohngxzmhlfcQnc+6k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=O6FYk7+FjY2JFzMMV/RSnEMvOGF6gOf+bdziruxGPA3qqqOs33FyJmu+nWZrQQkqj Wjs+G4n5fXv03zT9S3DSxG/bXjRV37UmpJGZS1WhLe5gFaZjK2dF27r0JcY39Fg6g+ 96Wc5nVV1mgyYieftkotK9xmG0JgtTuRDc8lHB3gZEDoQXzPm5a9baklAObWMyoDw5 gptlsEF78FxELQHH25WNL65NWs8iaI+15piasMmEvJrdxsZF2llhDoo4dPm0DYYd/D s8dae4vLtcEsyJsnhl9cwNrVcCYV7Lz1wTLZZaNYeklx70AL2oNvzKvhagYwrV8k1y fJeIFmccr3MCg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 19/22] selftests/damon/sysfs.py: generalize monitoring attributes commit assertion Date: Sun, 20 Jul 2025 10:16:49 -0700 Message-Id: <20250720171652.92309-20-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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 monitoring attributes commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 42 +++++++++++++++----------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 9e5c72804edf..ed4c3e9fc972 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -137,6 +137,29 @@ def assert_schemes_committed(schemes, dump): for idx, scheme in enumerate(schemes): assert_scheme_committed(scheme, dump[idx]) =20 +def assert_monitoring_attrs_committed(attrs, dump): + assert_true(dump['sample_interval'] =3D=3D attrs.sample_us, 'sample_in= terval', + dump) + assert_true(dump['aggr_interval'] =3D=3D attrs.aggr_us, 'aggr_interval= ', dump) + assert_true(dump['intervals_goal']['access_bp'] =3D=3D + attrs.intervals_goal.access_bp, 'access_bp', + dump['intervals_goal']) + assert_true(dump['intervals_goal']['aggrs'] =3D=3D attrs.intervals_goa= l.aggrs, + 'aggrs', dump['intervals_goal']) + assert_true(dump['intervals_goal']['min_sample_us'] =3D=3D + attrs.intervals_goal.min_sample_us, 'min_sample_us', + dump['intervals_goal']) + assert_true(dump['intervals_goal']['max_sample_us'] =3D=3D + attrs.intervals_goal.max_sample_us, 'max_sample_us', + dump['intervals_goal']) + + assert_true(dump['ops_update_interval'] =3D=3D attrs.update_us, + 'ops_update_interval', dump) + assert_true(dump['min_nr_regions'] =3D=3D attrs.min_nr_regions, + 'min_nr_regions', dump) + assert_true(dump['max_nr_regions'] =3D=3D attrs.max_nr_regions, + 'max_nr_regions', dump) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -158,23 +181,8 @@ def main(): fail('number of contexts', status) =20 ctx =3D status['contexts'][0] - attrs =3D ctx['attrs'] - if attrs['sample_interval'] !=3D 5000: - fail('sample interval', status) - if attrs['aggr_interval'] !=3D 100000: - fail('aggr interval', status) - if attrs['ops_update_interval'] !=3D 1000000: - fail('ops updte interval', status) - - if attrs['intervals_goal'] !=3D { - 'access_bp': 0, 'aggrs': 0, - 'min_sample_us': 0, 'max_sample_us': 0}: - fail('intervals goal') - - if attrs['min_nr_regions'] !=3D 10: - fail('min_nr_regions') - if attrs['max_nr_regions'] !=3D 1000: - fail('max_nr_regions') + + assert_monitoring_attrs_committed(_damon_sysfs.DamonAttrs(), ctx['attr= s']) =20 if ctx['adaptive_targets'] !=3D [ { 'pid': 0, 'nr_regions': 0, 'regions_list': []}]: --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 676CE23D28D; Sun, 20 Jul 2025 17:17:18 +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=1753031838; cv=none; b=oJ9BtmL9J1S0e3xg9Lqn04ZR/b2zksnJ2WTxY4yWLe9MxtRqab4A3ex0w94ulVFKOUyLjHfPPf7JpfCC+hJDMKpmZHsdCZRnGXhDatr/5qdOItSzAoPX8au2ps+EPsKfTF8K+0i41IohYnMejcbmRMMlgWxdEO7IeavLE5hE40M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031838; c=relaxed/simple; bh=tlyYCuebypsS1rYr+0TB9gAjyBmHC3iclhm4zOJtldg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QYwDSgulmkpLq2/K5NbWpu8QAb+X4eKQoRtj0fABBsT7NoG2b0kAd5V36EfGOtUvTNOVzoX5aLyQsQi0foW6YJq6A2ZSqeAtCZdg4gnYOvKwH6cOavzxkLs1AUjv3Cxo+eU77uBAHQI/aaOhKiZvhAu0iPAbhTJJP4YWv75QRcg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PVTw87av; 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="PVTw87av" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02DFCC4CEEB; Sun, 20 Jul 2025 17:17:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031838; bh=tlyYCuebypsS1rYr+0TB9gAjyBmHC3iclhm4zOJtldg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PVTw87avXtYA3rlMLOZL0pfGKrDZ+cdzVOb4lTjpiTIF84ms95iyxsh+rOfq7gags LwDwKL84bi8mp+zA0YauWcVJpjJZNXOD1yTnsdWC+RMGpDL9AaObxqiox8VE0ANHZQ XNVB7HkLj3rtOw26WEV5JrgiNZwzcpCvysg6S11oRMyWG3hof371doDi0mbiMXj8cI 404auVsTNIBKzvbjbu3n5OQ/N/VIliWnFwU3yG2EjKegKBGUpxowLabI+uPtYskZpu 3CAJ757G+dIrEoHTY8GInkFyqugT/gpiTOgyUMrUBRl9NZhtwbfJxbVYHnrBgvegCT /rys963tR8GZw== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 20/22] selftests/damon/sysfs.py: generalize DAMON context commit assertion Date: Sun, 20 Jul 2025 10:16:50 -0700 Message-Id: <20250720171652.92309-21-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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 context commitment assertion is hard-coded for a specific test case. Split it out into a general version that can be reused for different test cases. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 28 +++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index ed4c3e9fc972..429865e5ac9c 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -160,6 +160,21 @@ def assert_monitoring_attrs_committed(attrs, dump): assert_true(dump['max_nr_regions'] =3D=3D attrs.max_nr_regions, 'max_nr_regions', dump) =20 +def assert_ctx_committed(ctx, dump): + ops_val =3D { + 'vaddr': 0, + 'fvaddr': 1, + 'paddr': 2, + } + assert_true(dump['ops']['id'] =3D=3D ops_val[ctx.ops], 'ops_id', dump) + assert_monitoring_attrs_committed(ctx.monitoring_attrs, dump['attrs']) + assert_schemes_committed(ctx.schemes, dump['schemes']) + +def assert_ctxs_committed(ctxs, dump): + assert_true(len(ctxs) =3D=3D len(dump), 'ctxs length', dump) + for idx, ctx in enumerate(ctxs): + assert_ctx_committed(ctx, dump[idx]) + def main(): kdamonds =3D _damon_sysfs.Kdamonds( [_damon_sysfs.Kdamond( @@ -177,18 +192,7 @@ def main(): print(err) exit(1) =20 - if len(status['contexts']) !=3D 1: - fail('number of contexts', status) - - ctx =3D status['contexts'][0] - - assert_monitoring_attrs_committed(_damon_sysfs.DamonAttrs(), ctx['attr= s']) - - if ctx['adaptive_targets'] !=3D [ - { 'pid': 0, 'nr_regions': 0, 'regions_list': []}]: - fail('adaptive targets', status) - - assert_schemes_committed([_damon_sysfs.Damos()], ctx['schemes']) + assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) =20 kdamonds.stop() =20 --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 7133D23E25B; Sun, 20 Jul 2025 17:17:19 +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=1753031839; cv=none; b=CMx3d/wOM8kb7aRH3ajbu3cK03mz/a69R3tUtRhkFjnTuqs2j0WrxQXqL10yKJB/OKbeSrWDK2kH+hgvFJ4JSB9J+UQlMTX1+NGYFnYAxr9/i8CLtawuMXzPLnOKf2b8NsDxFb2KqOydGdgJZ0Qi2A8wvkh+COTF7T2Y/2PJ838= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031839; c=relaxed/simple; bh=YYPpAhV0Q2sUhsH9Nl2X69H/hWtTyYi5oXTnfRZyejg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JWmsEFmTz4j1Jvk2nh71CO4v8l/9Bl5q2hT+NC0Pp/YgslpP/fDSIKh6uk9bmJ5nYosFA8nxAlnlt2ROSL+iWb59amkR7HoWh3xBusfuMOAFznsg0sTE+GEx7I3UffdhlhMt+7KLGE7fX4lCzo6wyqxIHswCzAJ6LrKPBrErK0E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=T32J1KG3; 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="T32J1KG3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 03BE9C4CEF6; Sun, 20 Jul 2025 17:17:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031839; bh=YYPpAhV0Q2sUhsH9Nl2X69H/hWtTyYi5oXTnfRZyejg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=T32J1KG3uKsQ7UQl9LfjeFQlf85s4pehoO+UGWx4bBQY5nRlmlN7qO7KZMvfRS7b4 4dyMO2jM4w5lpwytCR171X8m6M3iBllFkbxljGFr94yNppi4LwPw6nBrPm1SCl401c oXko3CDFXijQidbmNpWM9DHGgp6U7q6LlAMY2B1/7Trb0VSVKZFfhY/6yGUKSsVMVI Z46Yra/A0pLVf690EfSxbr1GEnv4SnQY7bwgwemQM1MOlReu/8Xc+t4iXxEyG2TCuJ SvCShf6pZyk4pbje9MQdawVE3M4ZM5D6SuJSyal8mvVhx8x3Ct8msgKY8Ogv5qxGWx Jk/7MeoDM5kZg== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 21/22] selftests/damon/sysfs.py: test non-default parameters runtime commit Date: Sun, 20 Jul 2025 10:16:51 -0700 Message-Id: <20250720171652.92309-22-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" sysfs.py is testing only the default and minimum DAMON parameters. Add another test case for more non-default additional DAMON parameters commitment on runtime. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index 429865e5ac9c..b2cb178dda15 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -194,6 +194,59 @@ def main(): =20 assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) =20 + context =3D _damon_sysfs.DamonCtx( + monitoring_attrs=3D_damon_sysfs.DamonAttrs( + sample_us=3D100000, aggr_us=3D2000000, + intervals_goal=3D_damon_sysfs.IntervalsGoal( + access_bp=3D400, aggrs=3D3, min_sample_us=3D5000, + max_sample_us=3D10000000), + update_us=3D2000000), + schemes=3D[_damon_sysfs.Damos( + action=3D'pageout', + access_pattern=3D_damon_sysfs.DamosAccessPattern( + size=3D[4096, 2**10], + nr_accesses=3D[3, 317], + age=3D[5,71]), + quota=3D_damon_sysfs.DamosQuota( + sz=3D100*1024*1024, ms=3D100, + goals=3D[_damon_sysfs.DamosQuotaGoal( + metric=3D'node_mem_used_bp', + target_value=3D9950, + nid=3D1)], + reset_interval_ms=3D1500, + weight_sz_permil=3D20, + weight_nr_accesses_permil=3D200, + weight_age_permil=3D1000), + watermarks=3D_damon_sysfs.DamosWatermarks( + metric =3D 'free_mem_rate', interval =3D 500000, # 500= ms + high =3D 500, mid =3D 400, low =3D 50), + target_nid=3D1, + apply_interval_us=3D1000000, + dests=3D_damon_sysfs.DamosDests( + dests=3D[_damon_sysfs.DamosDest(id=3D1, weight=3D30), + _damon_sysfs.DamosDest(id=3D0, weight=3D70)]), + core_filters=3D[ + _damon_sysfs.DamosFilter(type_=3D'addr', matching=3DTr= ue, + allow=3DFalse, addr_start=3D4= 2, + addr_end=3D4242), + ], + ops_filters=3D[ + _damon_sysfs.DamosFilter(type_=3D'anon', matching=3DTr= ue, + allow=3DTrue), + ], + )]) + context.idx =3D 0 + context.kdamond =3D kdamonds.kdamonds[0] + kdamonds.kdamonds[0].contexts =3D [context] + kdamonds.kdamonds[0].commit() + + status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) + if err is not None: + print(err) + exit(1) + + assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) + kdamonds.stop() =20 if __name__ =3D=3D '__main__': --=20 2.39.5 From nobody Mon Oct 6 13:35:27 2025 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 90AE823FC7D; Sun, 20 Jul 2025 17:17:20 +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=1753031841; cv=none; b=o8TiU0CdAe29BdFlRePS/F1inyhbxTMFN40ZI3BKtEWXTiZPt7W7AxqUXDrfIoQ/f/VLBt2cg42aYAtGX4pMSMYQ+6Qx1wTVz/UhTCT0IknW02xOBGnrEmagpCrhdG2nvGMzkVkdc2j6XhHozguYN5PY75PsVu1u9nC+JJnUEo4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753031841; c=relaxed/simple; bh=ec6Z15ZJoYXT0bezGsQ3tUZMxWIpt+Ad5P0Bbazn0/o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SsA6BYuwISjwSNlyrz9bULwUYxuZRDxxbjmTiYM899sWc+Br219o5TLj1GpDYYMSZxzCjbnYVj7tBt7Ak51g0gx5MNV5D+MUcs+APuPe0rQhoZ9E0Z/EoxJwzy2AWv+g8xYTcj+PzDdlt1uZoeBCfm1+zFCeR4pn77IkKkUtrYQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rTO9IfKG; 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="rTO9IfKG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 099ECC4CEEB; Sun, 20 Jul 2025 17:17:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1753031840; bh=ec6Z15ZJoYXT0bezGsQ3tUZMxWIpt+Ad5P0Bbazn0/o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rTO9IfKGbWqX5x3rw1bUdwOQnp45m56Gq8/NECKWuvTUZA/ojaG5UqFeflSGCly3R l+62B3I4F3R5Ru27piljAXpbGMy9jBPxGRitDVbhhXuXapmIlA5/LTpfwNkOC8IgiS Fwcg6+TPP92EJLUJIANcRVyC/lliAh/oVM9wWehm3ldTwc8Bw/H/xUVAbzAnWtzhCN WOjPgw3Rv3f5z/TlAjQAqOZYTfUHDTix2dHslShtIdsn+UnJHLZ9X93IhiLp0IMKBQ cZdNq9imtCR/tS2SQXdc/YU6VUtSMkQRKzCkLC2EysIBQHmDaj0KcycNN3PD7kmAFK vV1uMsgaj1e6g== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Shuah Khan , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 22/22] selftests/damon/sysfs.py: test runtime reduction of DAMON parameters Date: Sun, 20 Jul 2025 10:16:52 -0700 Message-Id: <20250720171652.92309-23-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250720171652.92309-1-sj@kernel.org> References: <20250720171652.92309-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" sysfs.py is testing if non-default additional parameters can be committed. Add a test case for further reducing the parameters to the default set. Signed-off-by: SeongJae Park --- tools/testing/selftests/damon/sysfs.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/damon/sysfs.py b/tools/testing/selftes= ts/damon/sysfs.py index b2cb178dda15..e0753ed92a98 100755 --- a/tools/testing/selftests/damon/sysfs.py +++ b/tools/testing/selftests/damon/sysfs.py @@ -247,6 +247,20 @@ def main(): =20 assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) =20 + # test online commitment of minimum context. + context =3D _damon_sysfs.DamonCtx() + context.idx =3D 0 + context.kdamond =3D kdamonds.kdamonds[0] + kdamonds.kdamonds[0].contexts =3D [context] + kdamonds.kdamonds[0].commit() + + status, err =3D dump_damon_status_dict(kdamonds.kdamonds[0].pid) + if err is not None: + print(err) + exit(1) + + assert_ctxs_committed(kdamonds.kdamonds[0].contexts, status['contexts'= ]) + kdamonds.stop() =20 if __name__ =3D=3D '__main__': --=20 2.39.5