From patchwork Thu Dec 26 22:14:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13921476 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2EDD4E7718E for ; Thu, 26 Dec 2024 22:15:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9B2996B0082; Thu, 26 Dec 2024 17:15:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 962276B0083; Thu, 26 Dec 2024 17:15:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 829C46B0085; Thu, 26 Dec 2024 17:15:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 6030B6B0082 for ; Thu, 26 Dec 2024 17:15:02 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D180E1C79A1 for ; Thu, 26 Dec 2024 22:15:01 +0000 (UTC) X-FDA: 82938514722.27.E01B81C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf09.hostedemail.com (Postfix) with ESMTP id 6937D14000B for ; Thu, 26 Dec 2024 22:14:31 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="Ce/F10A8"; spf=pass (imf09.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1735251271; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=fsiXr7nTnEnQoEprp5PoaXdMPVulT1OOlbMV/n+ven4=; b=gHqwFrxigV24HY+csB46erqu3WjX4WgHjkoXtVSAphOvzgWW4D189KbBUQl6cib4Pn9t6d 7GaSEIPfEj3bSVrJgw/YsaeyIBLBni8Or+UjVBhQgLwvbdj8aADP1tWsEvmShi6NI0p0Ql 1A2Uf5Ac/NQ6LmF3wpPjggTGk860Vk0= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="Ce/F10A8"; spf=pass (imf09.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1735251271; a=rsa-sha256; cv=none; b=qo4qfGXwzn3N5tiyZAkCr07c3myUoStSZTezlsQDArN+6EAqMJYyroDHtS9pcVICKM5Tn0 oGcFolk2q/tSZvlxkB3OBM8RL3FsQ6TzIOWPA5qQ4CFqkPbtkXdEgFySu+5Tk6s5vQHvzb y6k5FIa4qTtyPyzhiJiopUbx2r2hsdI= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 827F95C61C4; Thu, 26 Dec 2024 22:14:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9351C4CED1; Thu, 26 Dec 2024 22:14:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735251298; bh=D1ZhJfQu00uYQDvRBQE8igXA6gwNlq3NdEPU9xaPj5Q=; h=From:To:Cc:Subject:Date:From; b=Ce/F10A8cOlAw9eRPDKEj2PpQzJHn/jpoSsd525rPqar0EQ+cZ9ZwwF95Ysr5e2Mu J+a5j3mS/P+bhWK32+ugSMg/rxtbru6ropSrZx25EE8ObgYhzfaTyQaWciwtoWrAVc hVnQ44071eK86VpGNeIvbvf8MWQNNaZow8ltlbwc+606SW4LWzpfO4GOtvc5lMW8sc hrn9QtH4uon3B1t75on4f+pKvUtzhhUmaq3mw4yQhe48VbnsCxKiZa68o2fauMLMo9 b8bityahR5ft/MdRvXXLSe69e5mm/g0YqhuZMLWAIRtbK7le4oGkURqUrHwdQydVWw +48+lzETWUeAA== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Jonathan Corbet , damon@lists.linux.dev, kernel-team@meta.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 00/10] mm/damon: extend DAMOS filters for inclusion of target memory Date: Thu, 26 Dec 2024 14:14:35 -0800 Message-Id: <20241226221445.78433-1-sj@kernel.org> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Stat-Signature: 9oxmzfg9p3fra91odk1jm5ge476f66nu X-Rspamd-Queue-Id: 6937D14000B X-Rspam-User: X-HE-Tag: 1735251271-965086 X-HE-Meta: U2FsdGVkX185qOrrcX1eFyNflIDjz/JXyMGg9t45y6AjMKIQuJdddJaAYp3NroelX/mosX90aRtNGASqNXL8CDxJ4yiVSH9h3Papl+7PlYtBhS7R0cpnzpspvEf9uJUo4QjYaABbrNgk9GiJPawztTqeRT3bBRF5BQNDooG4K+fPUu9EM6DZlgs4wMB93WRbr9UMULZBXeaOY19NLmfIbVKnIvwdrJEEgg+hYc+FW2NyWSLpSPzpZ4Nn6Fpg8WLT0HjB3gdSPr3bh4htQCqwFVB/F4F8Gh86vp/ulYzSbp7LFam3Y49d2I8vAzUxHszxcfye5PQ5RgWfICPvdtrfAvNILGjEEmQkMh1Sw98PFURvERM/FRxoetfECTxZzPZeKmx+LmqDyqmQOvjNEmE4oqqVY0ywRSEd9ssS2lVnndp0mVdaMBiuOlMP/sAL1Tz9/RpbWYKQrm8ji+b+eRkRYgc3gPbZPgJYcRsMzaf1yOJYbELqRrYvZ5YJOE8NCt6alzbgogUmVXQQdvROpBxxoFKTZtOr7rNj3VQUF+NmksFaU8/LVbmjLPR8dEfMvHtJFSgD0QWar8Drkt1O1BvVBqQBVkaLRm417iFEvJW4oK7rdPeSFYNQw/q77m8eP3ALEYkln3wsUz8FLhooZ6zM4aBejuyFdGzCOygvnVaQpLbVlY2xGxsD3vmKsfc8VmHLpOLn7ZUl1FyeWGfKptGMYkAjHCQf8I9ICaLlerd2A7vjLb11UTTLD56o9BW9rcl3mdW2qWCyXmNeDxrKH5WxqqK//KiceLQnIvB1FNZUSkYmecXsIIhDZW377Anj/O+G75egfL/3xrqRq4tQsgGZb+9YkqMZnI69j6xKHsA6yrmNXSmxTmRXpGa9RuFlruVxLQuX9C9F4vDgx6zK8Aej/N4HcS+Dlhg6vjmzD+Ucyv8GK0vyOXki3fhSCFB6lI9GawYHOyOj8hPGUaxUOFz hpnSJYkp e6+65kJvkEXrewPQEixJIoPCPAKZgHy9O6DA87QMp1O/VszvC1Wb0e/CKZL5FsLpYhLE3AvKahAbeiiYdLn5RiyUL0Bkczogbwz1mHRz9f1XEKw5rx1lkm2F6GCwR4WZksP/6ERcF6tBj0tFudBqHBs0BcTjlIk99Xp1TPmp2irkDaWzT6U38nXgU8oFQzSj27NSdtTKFVO9MyKzuoq+VYunrlcDLrfTfSnrSKcHyc0pa628= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: DAMOS fitlers are exclusive filters. It only excludes memory of specific types from the DAMOS action targets. This has below problems. First, the name is not explicitly explaining the behavior. This actually resulted in confusions[1] and works to improve the siaution[2], including wordsmithing documentations and adding features to DAMON user-space tool, damo. Secondly, the functionality is restrictive. This is especially problematic when multiple filters need to be used. For example, building a DAMOS scheme that applies the action to memory that belongs to cgroup A "or" cgroup B is impossible. A workaroudn is using two schemes, each filtering out memory that not belong to cgroup A and cgroup B, respectively. It is cumbersome, and makes control of quota-like additional factors difficult. Extend DAMOS filters to support not only excluding (blocking), but also including (pass-through) behavior. For the extension, add a new damos_filter struct field called 'pass' for DAMON kernel API users. Using the API, add a DAMON sysfs file of same name under DAMOS filter sysfs directory, for DAMON user-space ABI users. To prevent breaking old users with a behavioral change, set the blocking as the default behavior. Note that DAMOS' default behavior without DAMOS filters is applying the action to any memory. And DAMOS filters work for only memory that satisfies 'type' and 'matching'. Hence installing pass filter without any block filter after them makes no filter-behavioral change. [1] https://lore.kernel.org/20240320165619.71478-1-sj@kernel.org [2] https://git.kernel.org/sj/damo/c/b6a722c85ff91e5abe9dd47135e300df243da056 SeongJae Park (10): mm/damon: fixup damos_filter kernel-doc mm/damon/core: add damos_filter->pass field mm/damon/core: support damos_filter->pass mm/damon/paddr: support damos_filter->pass mm/damon: add pass argument to damos_new_filter() mm/damon/sysfs-schemes: add a file for setting damos_filter->pass Docs/mm/damon/design: document pass/block filters behaviors Docs/ABI/damon: document DAMOS filter pass sysfs file Docs/admin-guide/mm/damon/usage: omit DAMOS filter details in favor of design doc Docs/admin-guide/mm/damon/usage: document DAMOS filter 'pass' sysfs file .../ABI/testing/sysfs-kernel-mm-damon | 14 +++-- Documentation/admin-guide/mm/damon/usage.rst | 55 ++++++++++--------- Documentation/mm/damon/design.rst | 29 ++++++++-- include/linux/damon.h | 15 +++-- mm/damon/core.c | 12 ++-- mm/damon/paddr.c | 9 +-- mm/damon/reclaim.c | 2 +- mm/damon/sysfs-schemes.c | 32 ++++++++++- mm/damon/tests/core-kunit.h | 14 ++--- 9 files changed, 125 insertions(+), 57 deletions(-)