From patchwork Tue Feb 11 12:43:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Usama Arif X-Patchwork-Id: 13969546 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 195E8C021A1 for ; Tue, 11 Feb 2025 12:44:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 50B43280004; Tue, 11 Feb 2025 07:44:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 46C6C280002; Tue, 11 Feb 2025 07:44:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 30D4F280004; Tue, 11 Feb 2025 07:44:50 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 14F71280002 for ; Tue, 11 Feb 2025 07:44:50 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C4B521C8AA1 for ; Tue, 11 Feb 2025 12:44:49 +0000 (UTC) X-FDA: 83107633098.07.B8AF348 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by imf17.hostedemail.com (Postfix) with ESMTP id DD89140010 for ; Tue, 11 Feb 2025 12:44:47 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CqMnsYOl; spf=pass (imf17.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.169 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739277887; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=hMONiW56Kzu0ciAkO3PDySjZmgbC1d6a5x6dVsP970k=; b=4eMR/SL/3/RoccNGSYAfHQA+FB1CmWCkVqGKovg0Qn6W3E5AyvfI6fs7MHdBWJw5WzxXyb ppO2VbeiC9VL8wfZZmWiHv2B5ynjkBWfYX4gDlOzu8wuOgXJoD9Bh3jNRaRfUk/YTI23f7 aiv0ZHsGbX+XYMBc1yJV6uMDHD+pW60= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CqMnsYOl; spf=pass (imf17.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.169 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739277887; a=rsa-sha256; cv=none; b=Wk7AjjwOBRfm6kMnZZI84PBTGIIudwuTvjiZmYT0QWJQfVj6pdGQd19kegfYOFbHCoFWmf Js8ZFzlSIgTyziyoXroQmJZIcQpXcr0ksq6L2lwCVTQ56M8I0g/T7AlgX7Dy8X7Z5Y6S4O kh7cUguu8zfYxd+7kBExbQnVONr0WP4= Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-7be8efa231aso563016885a.2 for ; Tue, 11 Feb 2025 04:44:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739277887; x=1739882687; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hMONiW56Kzu0ciAkO3PDySjZmgbC1d6a5x6dVsP970k=; b=CqMnsYOlB5cXEHx7T4pS8Br219ubF8zCQyjs8d6fvjDlsf3WJTBmAeIF+zCK9lnSdf Dsp8YC/DBzgFMlB4gpWds54DorxnEFIe/1R0ETOzwnrWNzCFWnVAUH8BiN7DhUsvot1+ 02LmYq6MKr3J8TE+GRmnMLMZWUHLk7uHACYv0ti4FEKRPgp95rtiF3FWIK/OuYnEBYAP QfZc1WiCzq2mRRu21ETwTuL+wNaZBELyri+2MLTNkcPo7VqJMaQ8ugHMMgTI+bO/edjn sQCKmB0cP5GNUpN/ZeQCZ/NQzLrPtqFgR/0Bq1aECplQIS/Oi5Iks6XWmiLqkiO/Ns/M C/cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739277887; x=1739882687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hMONiW56Kzu0ciAkO3PDySjZmgbC1d6a5x6dVsP970k=; b=I6muumtJZOkn8t/L7fWVlOYw4DuEr23EpmsSdxxh/DPbKHFKb2ktYVLxxNRmnwlo3r TvyM1crx5bwOJS0IQ28nS4XeaC6lef7H+mnt7W6pkTc6qPjaHrEjDhQbw53UfqaNu4ya 3paX+nPm9Zvp+cvXbtBIJwR50gqsulnGdEmPyBENsQOAbwsp2PEce7//wsmcyIl+sUP2 9HRib0Aj+8tE23WvjirrecBtGUVUCVfCpH9NLpI+tqDHrs76jeEAuuCByU6Lp0bYqv1N A8UEcrCFUAHQ7+XZtUaKl/czjMEB4ADqI1HmGziqcmsiZA9gIYw7VcXsxqq9GHLW3VQO CUqg== X-Forwarded-Encrypted: i=1; AJvYcCUpkBqDUd+Iuw6YXk8kwK/O4pNgE0sKqSumOwWI1sGBJT6YxxDPSmwjkKa+rwwVPd3blQwRS0uySg==@kvack.org X-Gm-Message-State: AOJu0YyzNLAITjNjeuMaFRkghvdu2cc8qbznXsQW9eGbIwHrhcSWiHxv frCVTwaCZCEjrEOc/wSFvtKcjon2baq8YHhm9rSyCrB538brDknj X-Gm-Gg: ASbGncsZ7dBS/bdJ7wawZ7Jo3D1P0hMO3b3i2tMVtv/dccFAuEwNucAcoiO6yth954D wR84I07IL4zeN9l9Lmvvws5gFOOgsUrtk+7F769eflkqGCUIuvagGXBXh964etahA+Fq3qMiiKG BgGTgIsBPvOy4GPJnm0Y9dkAYBYvoEEY93z8wSKasDsDZPNXakLq9sBYakzuQ61ibCNfQJo/TwY cIooryZJd8eL8nuzPDDBxuoqfFvPRd7ystDalcZ6bcRWaH03jFS5eiDvdELFE/0pnnGtSaSgzqG HqxYQYc9oQjafA== X-Google-Smtp-Source: AGHT+IFKntpXB2K8ZD124mh79ttrIMlKqsgtcQpvmiG3JL+RES1YLXKDTI/bJD0DBnChJdR3XXbF6Q== X-Received: by 2002:a05:620a:3945:b0:7b1:4f5c:6e86 with SMTP id af79cd13be357-7c047c4fc32mr2525466985a.17.1739277886776; Tue, 11 Feb 2025 04:44:46 -0800 (PST) Received: from localhost ([2a03:2880:20ff:47::]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c05bf73803sm306654585a.75.2025.02.11.04.44.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:44:45 -0800 (PST) From: Usama Arif To: sj@kernel.org, akpm@linux-foundation.org Cc: damon@lists.linux.dev, linux-mm@kvack.org, hannes@cmpxchg.org, david@redhat.com, kernel-team@meta.com, Usama Arif Subject: [PATCH v5 1/4] mm/damon: introduce DAMOS filter type hugepage_size Date: Tue, 11 Feb 2025 12:43:40 +0000 Message-ID: <20250211124437.278873-2-usamaarif642@gmail.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250211124437.278873-1-usamaarif642@gmail.com> References: <20250211124437.278873-1-usamaarif642@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: w4i9th8nhpunczbnuqdxag51cee7nu7c X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DD89140010 X-HE-Tag: 1739277887-410366 X-HE-Meta: U2FsdGVkX18U1lb9DwCs9Po3OCcrXT80b3adgdW52gSXsV54U8Nri1XjamHmnCRZRRjGBZ+VCV8Ve5+IB1TzWjMKGvteXsJV8RIv0jdjgZ3WT+kZEHcY02OpDfkZ+iQudfvGMD0EXbGXSA6URrdT9+Dddu3wncGlTlkdkF/wem3ve0bCGNGYPDlEjYR+bdoc4faJwV4y0Nni8gAfyD9uff6sP5BuWaRqF5eNHHvLs1aTwPnzOw39vj6CA47uOHP1hTz5Xw7HVkNGYFl2LWxgGOtUZcKchd7AqldfA9BrQpuQeVX1VKQktGkHdOlgum1z8teNW5zZ1GcJkINV9CCfpkGBidLsrQVNlqq58ywhO0FjoduL1YG5fc9joUf3KdnK3R6sleDFj9T7QP0HhLTUE7J4IPY6cw3T2vJZ3W+KZHhWdqEC3AxqM49yf9IrU7iZUE2tw7Z20w100zXxGgMqc3nu+JCPiuOdx6mpd8oSXH4n/NA8lug+MJW2JfhWZ2wXqIgIec5+IdizF5lDdkh7tsHYeMePRb51q4dRBPMoJhVg9CqDp8gePpoe3nl80AMbjybjpXUSN/aiM8avP0xsLUeuT1r30/LE+3G3B09biKSWn2YxKFdcDO4cDhBOThaph6LXvH0j6Egue1tnSOMXGAyvmw6iGHJCCnEqIM4SUKrEXJCWmo9dI4TaVTxI182s8fBAFiFF1xfLfPAs0YVVRezWDAXhNdvKKGvXZP6NdYqj5srAyN6Owb2WC80TrlmQ8reiniy2KjOaiwjG+9GV5ny7tp52UDuovk0Q+qcgywi147dykHq+E4NHyaEOy46Hg6pEqTlISKWKbroY2D7vXzYiPZsOgm/l4MrzizcYFwuo1RWbN2Iz/4rIGaS0zuU1yodQMQsZmtjjKSDOCqgQWZEPpc/rfk2+6qB/Ch/Nq01zgKsqnpu1cDgzAuzUi4s/IbPeiamqVuUShoAJ+fL NEzFalhX 762RVCkKiwFyLbgQenDAFYRPA6l/ijG1KvswUe8rRRIWhebduRjCd5orsw038DB9NuI4En8qDIbyhSEr1oCIUIu3wG4gSHUxL0Gc80b6pU/tdpvBLmjh5HeIDonaRwLXfOTnrnemGXAJiIiWCYFlgc51IYdHsAb2M2j6kbkpqbUCClj5VI35VI10Yo+ntcCj2FEV12VI/dQrQfjV6i6dsU4eJomCNeSD9iWGjQ+EvfyudQW30WHu4ToWomOmLCj4cv+DkvT9V0+k+AsKzB01Rlq8rBLTNvBjRhQCJuUsQZJirJfyX5zHwQ5yv8cpeHlMRzi5s4SlOK0s8ngnwbdPfInpU8ptJEkAbF6OL/uarY4oSJ32RIRV0MRJ3oD5y7/guVKsr6Stvx/EFZRsWgiG2Gtk4fCbT/o34CCn9Ia7m55Xk1hGdOfXG1lj7FgssqB8b0aiJglUZQAWheyaI6kOHN1NxRpUglqcJC2JqnCnLzARX7V0q9bHprBDNoA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This is to gather statistics to check if memory regions of specific access tempratures are backed by pages of a size in a specific range. This filter can help to observe and prove the effectivenes of different schemes for shrinking/collapsing hugepages. Signed-off-by: Usama Arif Reviewed-by: SeongJae Park --- include/linux/damon.h | 13 +++++++++++++ mm/damon/core.c | 3 +++ mm/damon/paddr.c | 6 ++++++ mm/damon/sysfs-schemes.c | 1 + 4 files changed, 23 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index a390af84cf0f..0adfc2f4ca75 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -35,6 +35,16 @@ struct damon_addr_range { unsigned long end; }; +/** + * struct damon_size_range - Represents size for filter to operate on [@min, @max]. + * @min: Min size (inclusive). + * @max: Max size (inclusive). + */ +struct damon_size_range { + unsigned long min; + unsigned long max; +}; + /** * struct damon_region - Represents a monitoring target region. * @ar: The address range of the region. @@ -326,6 +336,7 @@ struct damos_stat { * @DAMOS_FILTER_TYPE_ANON: Anonymous pages. * @DAMOS_FILTER_TYPE_MEMCG: Specific memcg's pages. * @DAMOS_FILTER_TYPE_YOUNG: Recently accessed pages. + * @DAMOS_FILTER_TYPE_HUGEPAGE_SIZE: Page is part of a hugepage. * @DAMOS_FILTER_TYPE_ADDR: Address range. * @DAMOS_FILTER_TYPE_TARGET: Data Access Monitoring target. * @NR_DAMOS_FILTER_TYPES: Number of filter types. @@ -345,6 +356,7 @@ enum damos_filter_type { DAMOS_FILTER_TYPE_ANON, DAMOS_FILTER_TYPE_MEMCG, DAMOS_FILTER_TYPE_YOUNG, + DAMOS_FILTER_TYPE_HUGEPAGE_SIZE, DAMOS_FILTER_TYPE_ADDR, DAMOS_FILTER_TYPE_TARGET, NR_DAMOS_FILTER_TYPES, @@ -376,6 +388,7 @@ struct damos_filter { unsigned short memcg_id; struct damon_addr_range addr_range; int target_idx; + struct damon_size_range sz_range; }; struct list_head list; }; diff --git a/mm/damon/core.c b/mm/damon/core.c index 1a4dd644949b..81aafdd8644d 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -776,6 +776,9 @@ static void damos_commit_filter_arg( case DAMOS_FILTER_TYPE_TARGET: dst->target_idx = src->target_idx; break; + case DAMOS_FILTER_TYPE_HUGEPAGE_SIZE: + dst->sz_range = src->sz_range; + break; default: break; } diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index d64c6fe28667..e04f0b4a7df0 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -203,6 +203,7 @@ static bool damos_pa_filter_match(struct damos_filter *filter, { bool matched = false; struct mem_cgroup *memcg; + size_t folio_sz; switch (filter->type) { case DAMOS_FILTER_TYPE_ANON: @@ -222,6 +223,11 @@ static bool damos_pa_filter_match(struct damos_filter *filter, if (matched) damon_folio_mkold(folio); break; + case DAMOS_FILTER_TYPE_HUGEPAGE_SIZE: + folio_sz = folio_size(folio); + matched = filter->sz_range.min <= folio_sz && + folio_sz <= filter->sz_range.max; + break; default: break; } diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 98f93ae9f59e..9020bc9befac 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -329,6 +329,7 @@ static const char * const damon_sysfs_scheme_filter_type_strs[] = { "anon", "memcg", "young", + "hugepage_size", "addr", "target", };