From mboxrd@z Thu Jan 1 00:00:00 1970 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 3BF93CD8CAE for ; Tue, 10 Oct 2023 17:50:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 977C18D00D5; Tue, 10 Oct 2023 13:50:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 928568D0002; Tue, 10 Oct 2023 13:50:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C87F8D00D5; Tue, 10 Oct 2023 13:50:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 6938A8D0002 for ; Tue, 10 Oct 2023 13:50:12 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 352DDA023C for ; Tue, 10 Oct 2023 17:50:12 +0000 (UTC) X-FDA: 81330290664.29.3EC70DF Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2086.outbound.protection.outlook.com [40.107.94.86]) by imf07.hostedemail.com (Postfix) with ESMTP id 3E68940013 for ; Tue, 10 Oct 2023 17:50:08 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=memverge.com header.s=selector2 header.b=jfimbw7F; spf=pass (imf07.hostedemail.com: domain of gregory.price@memverge.com designates 40.107.94.86 as permitted sender) smtp.mailfrom=gregory.price@memverge.com; dmarc=pass (policy=none) header.from=memverge.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696960209; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=0FS5B225dhCReZjrCHL1Tws9UdiPQfmwsEBFr91e9Vc=; b=zRvV0ZhoAjtWWLPoOIp/VrrxGAt6yQCLkz3y2TR4KLMHVfcnM1hEYyO/oyn9aLsbX9Ak7q 1CGoxX0JQ5R2wp9qPxOHalIhKhjgy8MKJ50v2SVQZGnPv0VsziZQDfu3dpRVWR0ybdc/q2 ZHcwGAXWOgMsr07NGI/D4aBtuqEia+k= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1696960209; a=rsa-sha256; cv=pass; b=e8KwCHMDI204SFqTv+uF6Dr3PiLoBQLakm7Mzk9H/GZ3expnK/Y3NQefSA8xrPjvp6cPk5 lNkCcAGAlm1VARvgIp+zRGGSJYM/kvNSkh0VznniQv1nv/dLlORAmZpqVjNGggAU1aP+bC CXwsqzZl1hK1nLsJbiAivfD5WKKTz1E= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=memverge.com header.s=selector2 header.b=jfimbw7F; spf=pass (imf07.hostedemail.com: domain of gregory.price@memverge.com designates 40.107.94.86 as permitted sender) smtp.mailfrom=gregory.price@memverge.com; dmarc=pass (policy=none) header.from=memverge.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oUBCwP4gLb7t8+VZawUfUrnbQlbAj/vmlNQEzQ4p2Fuaw/x2DDDsRcfxokFwfHEZQr+Axc6T4CiTVZ7skyxl7w5iLJkBvOTv8ihqC5sQm0tec1LHwbE+4ROWy2r2KTRg7DxnJDTgah0Zm/q11+I3hRcMBZalpTjrSbjMtCFKW7v5d374EcClGiETgCD7YNB+3Ds/F1R4yJm9Cy87Szuur0khs7ffjQ5P4DNZf8EajbCGbxQzOCoCjUn2prTokyjhVy1ndx/GyJfKmvbOJW/SVLarbO1i6JpDPG5DBHnRj1r5phARLSlU3vZNUuxtplaYweCixw3Yc5iv7LFepQPbMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0FS5B225dhCReZjrCHL1Tws9UdiPQfmwsEBFr91e9Vc=; b=V1xfw9H7Gz8pmAR6Ch39YVgSIFJEq0yZK714vUtjpsplEwHHgxEgdWTVWXcYuwWg+NfjDmvkrBNKPWSIboawtGbwk4YfvWm9iDpr8nscQJ9E238o9aLkENZJuFqhrcVBYb1j8rDKlE4gsXsX9kv6QygneZ2LL0JHZTk/4qLKWj5E7QJOpwhS0DjjRMRE9pFy+J7wHe+q0wdp+w1EVOD5l87Kp3xlPa2qo4C45RJqZZWPKos1+ff1JqeRVA4BSwhH62TqKarWsDRKveI/HGtVGyGtyXc7cCT04zk62uColJFi51scCtYwldpau28/X7TyMhSRGx26kOPFi8s9gJHx0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=memverge.com; dmarc=pass action=none header.from=memverge.com; dkim=pass header.d=memverge.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=memverge.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0FS5B225dhCReZjrCHL1Tws9UdiPQfmwsEBFr91e9Vc=; b=jfimbw7FclIK2kdsOtBPldjOH7X3dFEngng7FLVL3bN1NhbhovYuxC9BBg1IrAgNOUb5r6LyxoyqJ14VxJ1aFWglELPrJJ6q928IFEtnojwRDx7+YQbyp0gWz3v097VQ7r0lNC8OVGsEwkprZoU7n5valfX6qWtonLTRlpMMrOo= Received: from SJ0PR17MB5512.namprd17.prod.outlook.com (2603:10b6:a03:394::19) by DM6PR17MB3961.namprd17.prod.outlook.com (2603:10b6:5:252::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.38; Tue, 10 Oct 2023 17:50:05 +0000 Received: from SJ0PR17MB5512.namprd17.prod.outlook.com ([fe80::bdfd:7c88:7f47:2ecd]) by SJ0PR17MB5512.namprd17.prod.outlook.com ([fe80::bdfd:7c88:7f47:2ecd%6]) with mapi id 15.20.6863.032; Tue, 10 Oct 2023 17:50:04 +0000 Date: Sun, 8 Oct 2023 11:34:45 -0400 From: Gregory Price To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH v14 08/39] mm/swap: Add folio_mark_accessed() Message-ID: Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210715200030.899216-9-willy@infradead.org> X-ClientProxiedBy: BYAPR11CA0081.namprd11.prod.outlook.com (2603:10b6:a03:f4::22) To SJ0PR17MB5512.namprd17.prod.outlook.com (2603:10b6:a03:394::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR17MB5512:EE_|DM6PR17MB3961:EE_ X-MS-Office365-Filtering-Correlation-Id: ce7dea48-bbb2-4051-0675-08dbc9b9559a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rC3dGq6VY6oYKTWJRXWuUtV2WlGTBAxGwc3h3kLnIhCxxGvXAKnKZNRgDYYBlBq20BZAYwFv4V8B1a+p8xriDB4AKi34IWKyXRIJwf+s69HNvKImCjNP3g3NsnG8GKsTQyezIjRT/sYKG7fY6voX5ot22y4RBVWQPqTx3WrrWHZfgGzyFOcJHTcQ2ByNJiO1Tqviy6X77Typq7m2jmgbUV0I09XmXzxYqJSMOCC9dgEZpIaRhJI3HMBNLpPnCXhDlHlGKdbBG+/LYeaFtPvPpHGnGC/ZPfOcED0tGDTxVBj/KqJEwKB+7HWUKnkBS+Sp8r7OcrhCvBWVobF8OmyR8Q4s+j9Be1uzSzbNw8A5SV3dsXFxS1USyWmuare3kr7I9Ve66S5VbAafJvkE0LBfwZRUI+UDqkcWVwNQLr3G/zx9oMkUXdiNOWyM/iiNY6uPK1iGeC3qtZwrPeLdsQIPppMqmARQk7sKnTUw8/GNBjjd0PFFig+/DJtCMxLfc7vKNqPkpuLJwwNm+Oj75JGP0vSNrC3xz6BUa+ur85gCJPHq+V65LZ04zoYUWVvsnDhH X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR17MB5512.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(136003)(366004)(39840400004)(346002)(230922051799003)(1800799009)(186009)(451199024)(64100799003)(6512007)(2616005)(478600001)(6486002)(6666004)(44832011)(26005)(83380400001)(2906002)(5660300002)(66556008)(66946007)(66476007)(4326008)(8936002)(6916009)(8676002)(41300700001)(316002)(36756003)(86362001)(6506007)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ax/pH/Fjel6t/kmUgF0KHaSz2plzLoaX3e+OTpH7QR58Y0q40RYcH0u0LjGE?= =?us-ascii?Q?VrYRlmr4qtkyrEycI7zYUAgPldIh++3CbnFLsM3BtvLDand6ZHC2BFKtVL6k?= =?us-ascii?Q?/eXqjSGVKbdLbpKx0lx6LMygMnweRkn3X6arWhtTHPR01VX1rMApHN+CpkL9?= =?us-ascii?Q?JcSbqIWI59gA4bF+iInHbDVV6Yp02DI+m9crdhwiEwVe0s30q0S7s54kA0O4?= =?us-ascii?Q?8wLwNyN+IMp+3uyNpFC4a4JBekFWkPaS0Gu0dk3nsfsV1zyUq7VedrjCGhdJ?= =?us-ascii?Q?uCUwpUr/Dpz4hFBX97ocvc/VQNcMgZ3h48Dc+f5yxuxNuEnRbzOK7/olSyco?= =?us-ascii?Q?l1nHlbWIv0GmBiVxoXpDGqU3LQ7cxr03yp0c2l6ZhH60sXWoiUC1ykzaRCFa?= =?us-ascii?Q?Fb57SVLFRKPFrved5cvuePekyqbap4hgcN4kQG1sC2ttFbc2K9+6sXoulYzY?= =?us-ascii?Q?hBcD4HD2cRxZWYljhAijpzZmm3DhfaD67hgPSL+FmS6H6jpLhlzv2LSF3Ham?= =?us-ascii?Q?IWVIY9mOVLO/PR3WV08a+r9sxZ0owFYwwhZqJI5I6ZLFTGUyAEiOSlhbf4ns?= =?us-ascii?Q?7I4b8UMMEMCFSuNz7rMUBmdRITfUI5M3nEZgF8HfuCSxH0pjkqw6Q1nQ0WJn?= =?us-ascii?Q?QG2J/G4NrGhv828HDkEGTdPm9lMFU1ZnNn4u8Ouus9WCXMbFf7RJMhK8XESP?= =?us-ascii?Q?8VkbRg+pRXJsoH+m6p86PFEjJRI1gNiPAZfl0Kvd3uvrnMUTNW1kePDywx1M?= =?us-ascii?Q?XLS4DOh3FSh7wo97Xbj0Ixz2kFoRIg7t0z8vZP32im8tbFnA9B/pxrpHYBST?= =?us-ascii?Q?rCa/9RJQxbDusamWxGP0qwcS3ss5XjByOgPehJTohfla/uMUtuIx1nLumAhC?= =?us-ascii?Q?wSCxkF9XfAdk5ea+dwe9ZNhW0MenNfnk+TxvkjPbYOC9SpnIiWAXf91jSdbS?= =?us-ascii?Q?ATj/W6whwWgzzVn8RzA4G7Zp/7oHGaV4xJKGkE5r+COVUs6ngAQDPpA2CWgY?= =?us-ascii?Q?BPAJVnTriMB6gqduaFYaQAXVoovTo27dNnGyiTT5jdIlPNjPPCm6ZTvj776M?= =?us-ascii?Q?78AQvICLRzg3ZjygKtBj8On09Ld4zDX4OOpQSCrskRitWXs66YiUdTidEwkW?= =?us-ascii?Q?wgJCV/w2dftb7GINa591qXkFRv/G9i93vyfwEr9FMs/d2p4kIempTQFDMULn?= =?us-ascii?Q?/at1ZIadohVOcuqMdoLeP+FvI8mWQqTY7WLHvfyqivottMXkHWcPbzkGV2Y/?= =?us-ascii?Q?9ZLy29KK0QkUl8AdubnAhhwQvO6hzGyc9qfr9LDziToZO/MuYSDoUk5YWd+S?= =?us-ascii?Q?L7DVpbjMbDSilZb3XlBf3ILN4Hz0L/ovORNZKV2r1HZwfSSXc82YbLDyHCsQ?= =?us-ascii?Q?V0gBrW2EpS3zJOrL5w4IYOs8aCbdESKYruxx5cg4wu3zQ8UyTQxgI11yR4zk?= =?us-ascii?Q?fCK0zZMDoGFaWZYxw5FWqc8hAFpo/ZoxpkXsueMoaPjIhc+DZ9NT9MG21c/D?= =?us-ascii?Q?67XtJo6s64Vg+khb1L19Y3RjWJR2I01TnCPtA/6Qv8dus01IooeWU+Mq/MEf?= =?us-ascii?Q?mv7p0q6qGxA6jVTc3TIJZ4MKSwJwFtKeLkCk/yD4FUTZlLAZCFTXguVsPCgB?= =?us-ascii?Q?DQ=3D=3D?= X-OriginatorOrg: memverge.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce7dea48-bbb2-4051-0675-08dbc9b9559a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR17MB5512.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2023 17:50:04.7607 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5c90cb59-37e7-4c81-9c07-00473d5fb682 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mLgJphU8XbCN2/6IAg9LBZ5HivrxrxgpB5kD4ezhWevyxzhAhbYUA49RlLR9i0z31jgMpy3lfOpCDdISx3yl5uyWwj6VZte5e8I9r1olunM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR17MB3961 X-Rspamd-Queue-Id: 3E68940013 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: f9oguia7ck7beibdzaio69mhe4zeegse X-HE-Tag: 1696960208-869881 X-HE-Meta: U2FsdGVkX18Mz/2mkG5dP1xsOUgK1Fuhhrg8YV39RybO7izqyvvXH3schpqvwMKlkToYoLxoj7f8r9xMy6EczSno7zeDUBdk2zq29zvjkB+LGuBMxQ6A7V7hXMb2aya0BgdO+yDME5ackx6jyAUm011nEx0pbV5YNlF/wuAGJp+EiHvfmDcPe3QG3NlfuXKDb4gcqPazefNH1m3DdlNzvQnfJvL62EijRChi96lGpVHkv9eNGoE86altT5E5g/CcnMHX4xvYE2jeDn3hHQDROtPCVXQofZ9/Dd6M19fLbTTpCH+ZMh2+1tlVypnizy2X8h8T9/58W7P11cnljwk+wCBi+qUofj++Ex2ueI8XW7MLJyP2S2UlfJ0Thv4gvzmF2TviiuZLHNJTS4fFMoEvbZm3Ja6RL9hKb/2xVhI7tUFg9acR8vIiDuoz8U7yjNkVzCe/S2gs/0iTmR7SFuUwOLb/2gemH5vc+zW7Zi/wyzWxXhVParyCBAeurQTcvGurEKefN7a3NcqBZ7opaojgyfzZCw701OSBDPWWTYvqr+nCrjF/iLuP8H991SboUFV5ui4j2EkqTx/SQiXuY8CemADrCcN55EwpYgg5guQPOq2boTQYgkZCDOlv+7hmVdM1iPz2o4Rksv9pa1kwmBE5wLj3lunM4IpNmOtESvaSIHXcW4o3tRHYpcbNKamwJLmC4jFjsqgzjYQtljjS8l2bPI44DtzmFMUJ3HTTs7Fc+Xs+8i1qacAqPqNiV1/Gz5vr9pEGxghFAyhaHI0dsXQVh0fTTnfxWsmAUfp9MMujhvLQi9V31P6K1qY9gZWtXpz6SfCy7bCx6h62xx5bMj5xJyHhO9C3lQ3O7bnrZlzDVylqzWYYNfFjvr1nsxELe84IJk8e5dcaVZgabisS6RfRmzmNXl6pfQWc42+GwIMKzl9bItcxry0rnGL/D8GeSUpME5bOtDgtBzx07mTrj9d A7ak/iix LBierrd0EswFQyNq+NatiexHwypG8p5y5784x2ehka6bZ1rICYHMO/dt+yAvjkoOoDGZZ+xE+/Ow5QDBFkuciO02QElUooPIxHHO9q0YWtnjxUl9b+QhBlkQqVvuMnCF+0BCgEPF0xNzay7dDgxlXUZndXXfT+LSaL/MoXAv/H6vzCXjreKWjrKWVtiJmSQ8BxXigEeJY3csGq1w8QrxD8dOO+QNP6A+BAA528PC/mJg+uYDLd/aItyVJEOZdbpP3kS5NH/FXugw74iHf29dZT5Ui2cPtO2169j3JE3F67PmsTQY= 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: On Thu, 15 Jul 2021 20:59:59 +0100, Matthew Wilcox wrote > diff --git a/include/linux/swap.h b/include/linux/swap.h > index 989d8f78c256..c7a4c0a5863d 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -352,7 +352,8 @@ extern void lru_note_cost(struct lruvec *lruvec, bool file, > unsigned int nr_pages); > extern void lru_note_cost_page(struct page *); > extern void lru_cache_add(struct page *); > -extern void mark_page_accessed(struct page *); > +void mark_page_accessed(struct page *); > +void folio_mark_accessed(struct folio *); > > extern atomic_t lru_disable_count; > > diff --git a/mm/folio-compat.c b/mm/folio-compat.c > index 7044fcc8a8aa..a374747ae1c6 100644 > --- a/mm/folio-compat.c > +++ b/mm/folio-compat.c > @@ -5,6 +5,7 @@ > */ > > #include > +#include > > struct address_space *page_mapping(struct page *page) > { > @@ -41,3 +42,9 @@ bool page_mapped(struct page *page) > return folio_mapped(page_folio(page)); > } > EXPORT_SYMBOL(page_mapped); > + > +void mark_page_accessed(struct page *page) > +{ > + folio_mark_accessed(page_folio(page)); > +} > +EXPORT_SYMBOL(mark_page_accessed); ... snip ... > > @@ -430,36 +430,34 @@ static void __lru_cache_activate_page(struct page *page) > * When a newly allocated page is not yet visible, so safe for non-atomic ops, > * __SetPageReferenced(page) may be substituted for mark_page_accessed(page). > */ > -void mark_page_accessed(struct page *page) > +void folio_mark_accessed(struct folio *folio) > { > - page = compound_head(page); > - > - if (!PageReferenced(page)) { > - SetPageReferenced(page); > - } else if (PageUnevictable(page)) { > + if (!folio_test_referenced(folio)) { > + folio_set_referenced(folio); > + } else if (folio_test_unevictable(folio)) { Hi Matthew, My colleagues and I have been testing some page-tracking algorithms and we tried using the reference bit by using /proc/pid/clear_clears, /proc/pid/pagemap, and /proc/kpageflags. I'm not 100% of the issue, but we're finding some inconsistencies when tracking page reference bits, and this seems to be at least one of the patches we saw that might be in the mix. >From reading up on folios, it seems like this change prevents each individual page in a folio from being marked referenced, and instead prefers to simply mark the entire folio containing the page as accessed. When looking at the proc/ interface, it seems like it is still referencing the page and not using the folio for a page (see below). Our current suspicion is that since only the folio head gets marked referenced, any pages inside the folio that aren't the head will basically never be marked referenced, leading to an inconsistent view. I'm curious your thoughts on whether (or neither): a) Should we update kpageflags_read to use page_folio() and get the folio flags for the head page or b) the above change to mark_page_accessed() should mark both the individual page flags to accessed as well as the folio head accessed. Thanks for your time. Gregory Price (relevant fs/proc/page.c code:) static ssize_t kpageflags_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { ... snip ... ppage = pfn_to_online_page(pfn); if (put_user(stable_page_flags(ppage), out)) { ret = -EFAULT; break; } ... snip ... } u64 stable_page_flags(struct page *page) { ... snip ... k = page->flags; ... snip ... }