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 5D8EFC636CD for ; Fri, 10 Feb 2023 15:15:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3F586B014A; Fri, 10 Feb 2023 10:15:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AEEF36B014B; Fri, 10 Feb 2023 10:15:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9902D6B014C; Fri, 10 Feb 2023 10:15:10 -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 851BF6B014A for ; Fri, 10 Feb 2023 10:15:10 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 444F481037 for ; Fri, 10 Feb 2023 15:15:10 +0000 (UTC) X-FDA: 80451730380.18.A82418B Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2058.outbound.protection.outlook.com [40.107.92.58]) by imf23.hostedemail.com (Postfix) with ESMTP id 7E35D140008 for ; Fri, 10 Feb 2023 15:15:05 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=dsfT0kSz; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf23.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.58 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676042105; 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:references:dkim-signature; bh=PEeQCBRum1KpFo2y8qrLSNsomMqPO8JA8WpcS70gmks=; b=H/pcPPTHv1l1VywP8RCgV/8wLloOnG9Cz7dbSK05HyQ6z1E/y3RZjq5NsJAnn+uUX1/S1q A8dfNfue67GAA9vrM0Md5Jf3exbEuVSNv8dhv33efT4VGxhjIgFmk4ROWSWtsUl0k/Y4mj BOvtOjfjsMd/L7YCqUSAJAgCB6BFpAQ= ARC-Authentication-Results: i=2; imf23.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=dsfT0kSz; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf23.hostedemail.com: domain of ziy@nvidia.com designates 40.107.92.58 as permitted sender) smtp.mailfrom=ziy@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1676042105; a=rsa-sha256; cv=pass; b=Joh0FFuQAp9mOCk3/XkalflXBh1LKp19NWUPmsn0BXBTZbYrXhHBLPrXojEOWIXaigI1cj y7CrhYG0RsvGZyYuG6Jc4wpaWKTtsmy9Y2Q/KossH7nrHqjU5TK2GDzAUWZz3BzZzO0fyk av57OOEg8aDpEWv4vAonHPXQkEC9kNA= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C8GYEYSXQWsVm+P1p6/NH/tcVjRqZlt1YBgp1X3GzjIekTf1bde40TIgoBQqIpu/u2dC+UA0Mjfb3Lk9ec3ixRs5HONhzcfBj2CeN7r2LJngYb1sGgdb2oj+RwLciAy7RR01AuNGgQm5Fm5RoN/1nXcdnSmGn8Ti7jcBuwz0k6rczGF6XhVwHzQ3VhEfOfptqetWsJkg/P/EOsY/1DWfKiJ8dgpjvBydjTBhyeYiVR5CgF6SoloU1158gRy1WroCEI0WpOio6PkVCIpgyMmM2BFHll+LBykM7VaNY6HYhI7J/GNIHMRzZT+geohd/95LB2bK9/WWFxW/iwQzwP9xQg== 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=PEeQCBRum1KpFo2y8qrLSNsomMqPO8JA8WpcS70gmks=; b=PAy5a1rJ3+Jf+bO8OKAQoxZbXmtnAriIfFKwEKG1k3KPTwtsGsfvQT7TK6aDlKCXqod+c7hs50sYWRvAI5CG/yZczoUOUdmRPEwGsRLCQNECgvJ5F9mp82Z3ttUHMi54nIJImvQGuZqcQo10kDcJrO6oHNEILh8UXtgQh4Jy4sUG0z4xMujqPZTI6IkCx7k3GSdILO0FFxNR2KAPQu/delFRY8GbZUw1ewqMstvUZrr+NPtLWRk1srlbcbqZsSRFQi92S01RNdw8ngHJP8OoJ6cUNauAE0X40+aITbHhPATdzeFT80bsM7+0poe9PY7zlwh1QQOTmNTJq5de3J0/Wg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PEeQCBRum1KpFo2y8qrLSNsomMqPO8JA8WpcS70gmks=; b=dsfT0kSzDIuDSwSaibFrqJODRv/l0uad1fXnW8VR5qVYrzQkAVs4aMLRczMxYkubtC1GsyYRb/h/uS2XUZ8jBw9jYcNkRznc6KsZ4kGYwrYn8v7IYZ5Kidf1VabiOAgQZu4sT+aM7zPnhHxe3K3kGrCM3tFcioVCa3a6s/LD9lCWpTLKtClbxLrIIJoRXOlc2CBhEG0XhsPS6G8yI9MQxmlgg0J5ggJ/bm3oIkMGFWvIilIe9pVybtHuS3ywC8fvREzu6O4IRVcfOlgFgtknLXwyic1TlsRhev2TnHU+I7L0mK1Zn9dvq3HaKs7vZpeA/ps19or5V/8F2N5B4dWsvg== Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by IA1PR12MB7639.namprd12.prod.outlook.com (2603:10b6:208:425::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19; Fri, 10 Feb 2023 15:15:02 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::7f2e:5e8:9129:8663%4]) with mapi id 15.20.6086.017; Fri, 10 Feb 2023 15:15:02 +0000 From: Zi Yan To: Matthew Wilcox Cc: linux-mm@kvack.org, Vishal Moola , Hugh Dickins , Rik van Riel , David Hildenbrand , "Yin, Fengwei" Subject: Re: Folio mapcount Date: Fri, 10 Feb 2023 10:15:00 -0500 X-Mailer: MailMate (1.14r5937) Message-ID: <4AACFAC5-635D-4A7C-AEB7-59BCD68E7943@nvidia.com> In-Reply-To: References: <7DCA075B-1E43-47B1-9402-66C54513D52E@nvidia.com> Content-Type: multipart/signed; boundary="=_MailMate_3631661D-6E65-42A9-8CE6-6695B0C387FD_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: MN2PR12CA0022.namprd12.prod.outlook.com (2603:10b6:208:a8::35) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|IA1PR12MB7639:EE_ X-MS-Office365-Filtering-Correlation-Id: 49ed5689-478c-4d37-967c-08db0b7994f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Th0KweQ2g/ZU4s8sNM/q997JrloeKB7LtGMYzR0EpMLNsVqqk6zkI5+D3mHF7aPor/y9FpIpWYpHBaVpZ0tREBjCljM5N1EUhKd6h9dG44xFENb6TVV1n+j6j51r+2CMi5EOM7BjccUPxGaCSvngoDsFiOEcBO8a3fl73KlGkdmWmtsTbqHZmOFUX73rSihPWvmxEXhx0A0W5RWgqI5TVEldMnYbpSwURDHp9nK/lQ4CId7tyh2k+sp3ff+LURNLVWbo6SDiwP+ZI3ry54sxP7uLV+wa7+wQ6eCNJfsmhoi/Yen3o8V3glD7wsq3JidN6lU3wMAKM4ZUgW4w0heoccEgZlnyV3jL6f0Y4bcY1Tu00OW9V1lHNvj504Ql6hIVCuXUMOlETrMRTyMQVvzEZKtdDpwE0YaV2GEyFyVSzVJWvqudaU2MmtSi54rQVE+fLwuUyJQ7311nJEfhJhLGEXcQavQaoqfsMggHgcwnkubX9BYQ6OAWjB1FflcR8awTZ9+sAvZipgLHJgeR7h9F90KEnqUhjhNlTj85Wt1HKrrENNtKq9pTLk1TfSlBjEtUFpY38x7xRxhjmtiPNv3gR4Zg7pqn4bUq31kW94kbAfU08Dkafd8FjIaK8NGy9ErDb1WwpvEHbIXHcAaCUL9LzR/y2wIj2c+hwrpLRF9OOSoZTJ8LY13Gc+S1FBCt7N5EplAC0qWStaUdPmpwa/VgyRNwa9CSjVGcbL7N93jxBf/IEdaehVAmWN+M8cHQ2WWQhJywBiGFs/T3TFSyYmVTGMK4u5lQmYagAldmmg4LxnhR1CV5m1rjFobBfSLEY8YVFvFj32Jn/xhUdbCsSgGiKUTlaiJdoE66ZaZXKdTFvKY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(396003)(366004)(346002)(376002)(451199018)(66556008)(66476007)(6486002)(66946007)(966005)(41300700001)(478600001)(6506007)(316002)(6512007)(53546011)(8936002)(7116003)(26005)(6916009)(8676002)(4326008)(54906003)(186003)(235185007)(5660300002)(2616005)(2906002)(83380400001)(3480700007)(36756003)(38100700002)(86362001)(33656002)(45980500001)(72826004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kJIsWYj1pg+BmH8sso2szeGVjzY2A10S4ZKp4PxoHELtVI39OLoBQvuO4wW5?= =?us-ascii?Q?+3a8sA0Q9wNAIwdGQez10loQuceq+4vOeM4QLAy7wcZUQSsM4qJPfJ50pfPS?= =?us-ascii?Q?q3djAEtXgJTeO1lejS8Q1AGs4wWNsNHQriTl0InYG6Rws7zCYU8zqFsftQhb?= =?us-ascii?Q?kfyvMbC4Ngn19sRGBmpvIcspNLQ2cA5Wv1A5Jh0M41rRV5A8xJDJixFn69TF?= =?us-ascii?Q?J2K5PPVbyLIghM4dBBNI0YdGJq25XjjSmEfnAdJw5+1NPRAueqj5FOTx5Azz?= =?us-ascii?Q?C/+xUKeZ4Fu9XwMRP3TU+jzwm1365z3fgmjcOv4AUnT8vIDw/aR+QTCe+ptX?= =?us-ascii?Q?X7/8kFBskUvMYbBDatYJ0AcpymjlHhudRthdsB9j9B00N50eYKFemDjVNypp?= =?us-ascii?Q?jtWs1UussXhuGKpq3GH0lhhG9qnsK05jtBycdiKJm2p9jDPx8vPFFTkRU5RR?= =?us-ascii?Q?t5DStHgEwTxY8aBPDohNOSDHOw1IZaGH1HTdvyVN6Q8pYCENOJbTjjtL8OfA?= =?us-ascii?Q?oMkPA+HN8U/dKy4d6ENVn06qg6R/zbnODwmuGhDRNkDknwf0ObH6XCIhMKW+?= =?us-ascii?Q?qE+Xm5Tx0xwpgA+4lnT/meXAoyMM8+RQUuPfZVaMan6eHJiXs1il95ZGgNe2?= =?us-ascii?Q?4YxEEV7UiqomFlC78wvwYFg+rEHjIA5CXVURdofe5YG6ZP4rnstUF6OPIhzR?= =?us-ascii?Q?gfV2jxOa72vrEZAk6HvnRX43+TR2rKt/m8nkplMpAO1qlOjjuEFiIvq4zw7H?= =?us-ascii?Q?mp+2uM67YpGCXnvTDlgbr3AUKcbBihZRX2wGBJl197CdgaM90nS4olI9lCbJ?= =?us-ascii?Q?4w8BtnbDafPQDY7KwOxlcBV3HXvixRJQ0bXC0YSqz1+eHojIdO06HKUlxIEM?= =?us-ascii?Q?U2sGkNQuGkHMsjKGoKvVXfa1bprISD1RXwMktdwNsmC1njJUy8JP0GRR8sjo?= =?us-ascii?Q?mEDQ489SH5Z7I4l1GzOFL4mZvJSPqoebGYAhpcEHvTAXqgzqE0Jg6PE+o2Ko?= =?us-ascii?Q?YxD4r+RYX+JPf/wlzyxWIr7itH/v7Pjqt7tu4Cw7CKgtugvd5AWeEipEWdmD?= =?us-ascii?Q?XiIlhLj0EQvas8JhjLATWQDUxrEnWKSUVyTosENpKViDLLWIjsBShh0VDjOp?= =?us-ascii?Q?1p+/IrfVSEQyAKcrEwDp3mTAiV9/kUPEmYh9NTZ8x66C0sM/Rvzvdu9E+Uqa?= =?us-ascii?Q?QiMNmG0yVnvMcwqerEZC5VF3aKrJ6svVILMff4Iafxjq9hg4wQrxvsT2pzil?= =?us-ascii?Q?aFXSolB+DqQrXNpo4h0QqbzVS4LBzKdiL4jqYrLz1WPEOdEBFJDiHZG/rMxA?= =?us-ascii?Q?dYdBbKp963scvW6lL5Ngf2zasOYwOPSZYi9iGSRs35ZONucZa4y1UgPzP0pv?= =?us-ascii?Q?Eq4KeYDWofqmoYxnNwCaBqYo3ewE9blwnMwA5HQKgvOzLbeJk3lxOWHQHoVi?= =?us-ascii?Q?GnbyJOU9lvmnuXgMOifmJC/5C3wjQGlEZZzBo3nnHVbaQ1bHZrRc4996vLUO?= =?us-ascii?Q?F3g4xkd6fWoZALAWFZKMFzjwkbN1PGIOlAtX00FnDCujfuCy49iRfyvKSBJW?= =?us-ascii?Q?T+DzFHg8emLbgDtRkuvZuVvHQPewYvI7mRAT+xNx?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49ed5689-478c-4d37-967c-08db0b7994f6 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 15:15:02.2924 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IV+fcPSefr1pdRoSmU6USSscldYdmWtOLEaiKvZD5qrIOS/8qsECu/qPdUcYxa6E X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7639 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7E35D140008 X-Rspam-User: X-Stat-Signature: oek399ahfsexn3dqwmyuf5n655dnq4hi X-HE-Tag: 1676042105-425829 X-HE-Meta: U2FsdGVkX183KhRjCCLWX/RbZVX+6Tffm5Md280Kcd8Fy/9+TJXMRHTIy8lMgbDu951Ad9n/1Kcdwo9adr2jzlwcjQN4qx7dvEL3xyxcXuIhhc22EWQKTfiJBTy1zSbadR4nYH4B9uGDJdV/ZotH12VApYBFhPy0R5YJIja6fsJUpRKfvh21t/bq2JisDfNEh9ocvRID0xb6JAO4XsTuw/5YXtjFda3YAiVEn4pQZkMMnIAcVU5T/AdeqGwszmH7FjA8bFLvhHknRvGr7YC1Qn4O/8KL3rv321JDLTGo8WTIQ7POX/lA0TRjS+q4+U3IxJ8RJuI2qPMoHChoi+FD/J9sBYuQAmIOKR6dON+6gwAS1y4zSO5RAIf2kIi61sR22uJ84VUpvHuMLhLvqN4hy1tMckoX33rb0qGL9MLgre0PuPwJy670HucxtrQwPK3HVs/Fzr5Y/uO7C8y7MVGNWeG4RNclLUeLYMdu5O/rviuiPhKyV3OwWacJxHWp33uYvs/tfEkzAU8Zr3mCgxqZYO9SHenTLrnQUYQLM33tNwiG3A2rY4n8EuG9eXTa5f++0q9xEbsCI4GuGAG3gwzoBTws+5nIvjKLzJBgBkgs9ckwEzTLPygYzeVHlC2BAEUFG77jgQBOluaB5JHQ5ak1ukFmcrjBOIhg9U6W0kZLyyg+vzoPvH4NU5aOS0nmLEmFYAFX3d2TVrtNAMgN5RF618N7QcCYm1rZCKwluXUmhv79yMTllG+qzZN8hELUeRWat3it6gPkxdZ+rEilvvvIPe6Ig51BJUgPQg1Yx+bJh5HhIRhnspr2KOMFLkRyHD95yQu7grk6OgGsSF/U8jbkIn4Ad9EMRv+JpGm34S1WeXZB2aHRPQG0gDsYeGz8fMJNLBd0Czzez4rS16rnuYEm1uVS7czrps5uHcelG4M8U3WPEwUji960WPJm0Cw9qikGlnrFQLat5pBmvSaGzoO dt+0uXW2 Rm1UP/gtQMxk7YfAN2wF/zG8mS5sPZb7Vwh5HMmXk3eOjekVv3OIBz6DAtX/xokDqCdsvailpb6oP9Lz8nXXD1WrPRpRozFiL6O674pNeQuOtkYRhzCjmS5y6BkAe4pH83+8qz8k65+CdmXCyarNxlSpE4JjOB3kAixAauUfHqdIO/HzxLJXWmElSyrquJNE9CX/7qqwfXVUH2aK94UpbDg6GEQMgD/xjSGky/Ee8aQpZwGxRGI64HPjv3UZeTKoc47/1Zmln6uheOnxzaIRU3Bk3g8sHeS+1xlI6Or/y6muTXVMIwVorQg+gVbWbw9xZvqglQlDKjAqO1VSFTP76UIulBL7oqo/0Ac6bmIwNpasgH7tEa2Ow8ZWfrh9cZ4EM0cpcahlZyn1UVM8k5q7OOMj7jV4/OC1MTEqjUYS2OzxN1lOftXL+RJWGJGFf/WZWA3vu3nym2aA/xTY8E7vPuDFGYmWvbqqLXhl+Xv014HYQOx4SPYoRk3k6Dg== 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: --=_MailMate_3631661D-6E65-42A9-8CE6-6695B0C387FD_= Content-Type: text/plain On 8 Feb 2023, at 14:54, Matthew Wilcox wrote: > On Wed, Feb 08, 2023 at 02:36:41PM -0500, Zi Yan wrote: >> On 7 Feb 2023, at 11:51, Matthew Wilcox wrote: >> >>> On Tue, Feb 07, 2023 at 11:23:31AM -0500, Zi Yan wrote: >>>> On 24 Jan 2023, at 13:13, Matthew Wilcox wrote: >>>> >>>>> Once we get to the part of the folio journey where we have >>>>> one-pointer-per-page, we can't afford to maintain per-page state. >>>>> Currently we maintain a per-page mapcount, and that will have to go. >>>>> We can maintain extra state for a multi-page folio, but it has to be a >>>>> constant amount of extra state no matter how many pages are in the folio. >>>>> >>>>> My proposal is that we maintain a single mapcount per folio, and its >>>>> definition is the number of (vma, page table) tuples which have a >>>>> reference to any pages in this folio. >>>> >>>> How about having two, full_folio_mapcount and partial_folio_mapcount? >>>> If partial_folio_mapcount is 0, we can have a fast path without doing >>>> anything at page level. >>> >>> A fast path for what? I don't understand your vision; can you spell it >>> out for me? My current proposal is here: >> >> A fast code path for only handling folios as a whole. For cases that >> subpages are mapped from a folio, traversing through subpages might be >> needed and will be slow. A code separation might be cleaner and makes >> folio as a whole handling quicker. > > To be clear, in this proposal, there is no subpage mapcount. I've got > my eye on one struct folio per allocation, so there will be no more > tail pages. The proposal has one mapcount, and that's it. I'd be > open to saying "OK, we need two mapcounts", but not to anything that > needs to scale per number of pages in the folio. > >> For your proposal, "How many VMAs have one-or-more pages of this folio mapped" >> should be the responsibility of rmap. We could add a counter to rmap >> instead. It seems that you are mixing page table mapping with virtual >> address space (VMA) mapping together. > > rmap tells you how many VMAs cover this folio. It doesn't tell you > how many of those VMAs have actually got any pages from it mapped. > It's also rather slower than a simple atomic_read(), so I think > you'll have an uphill battle trying to convince people to use rmap > for this purpose. > > I'm not sure what you mean by "add a counter to rmap"? One count > per mapped page in the vma? > >>> >>> https://lore.kernel.org/linux-mm/Y+FkV4fBxHlp6FTH@casper.infradead.org/ >>> >>> The three questions we need to be able to answer (in my current >>> understanding) are laid out here: >>> >>> https://lore.kernel.org/linux-mm/Y+HblAN5bM1uYD2f@casper.infradead.org/ >> >> I think we probably need to clarify the definition of "map" in your >> questions. Does it mean mapped by page tables or VMAs? When a page >> is mapped into a VMA, it can be mapped by one or more page table entries, >> but not the other way around, right? Or is shared page table entry merged >> now so that more than one VMAs can use a single page table entry to map >> a folio? > > Mapped by page tables, just like today. It'd be quite the change to > figure out the mapcount of a page newly brought into the page cache; > we'd have to do an rmap walk to see how many mapcounts to give it. > I don't think this is a great idea. > > As far as I know, shared page tables are only supported by hugetlbfs, > and I prefer to stick cheese in my ears and pretend they don't exist. > > To be absolutely concrete about this, my proposal is: > > Folio brought into page cache has mapcount 0 (whether or not there are any VMAs > that cover it) > When we take a page fault on one of the pages in it, its mapcount > increases from 0 to 1. > When we take another page fault on a page in it, we do a pvmw to > determine if any pages from this folio are already mapped by this VMA; > we see that there is one and we do not increment the mapcount. > We partially munmap() so that we need to unmap one of the pages. > We remove it from the page tables and call page_remove_rmap(). > That does another pvmw and sees there's still a page in this folio > mapped by this VMA, does not decrement the refcount > We truncate() the file smaller than the position of the folio, which > causes us to unmap the rest of the folio. The pvmw walk detects no > more pages from this folio mapped and we decrement the mapcount. > > Clear enough? Yes. Thanks. -- Best Regards, Yan, Zi --=_MailMate_3631661D-6E65-42A9-8CE6-6695B0C387FD_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmPmX3QPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhUKyUP/RlZqgOfuaCxrLrX/togH9WZxLhx7UBB9TIH CUnp5o2YwpQ5IY6iSnzwnDmJ5A0Oyps5kfI78lg0fa6G4LYgiyVdfMFI/Zx4+1GO T8k44f2ACAs7WqMH1S360yHcAFAHImrzYqfDO/uxIjl0o3LOKemabuihQKxdj2bm uQ/cPuFO72B6nUelz4ZFqJpDSz8FRfaNCAF+OehgJh/Xy8/46N/laGgFDcJUKuyX K/kBJ1VQTISFF1nGX+bx/Snwe1e6D+ztAR7Jea5pdU3LYca96xW7Zn2sEH1TUXKy gyp1DmA0V+d9zPLsL8C/sJwlUDLMVsCTl0w8RY3qTkstmBjIo2Un+ISJDUCzJerV 9FcZbvSWs2UfNTx5HIIc77Qw6HIgjcduxUhK9UytzOijsHrKvWMlPXrSE7AoD14k RwNyk/ffr1bVNprk9lk8LMlC1cq2uD5hGsmS8LPTyO08AfdPde4jg54DmHD07ulD 0700/+zRl67ZI3dtInaYCeVqwo7udZatrEvu9BULcrK2h32EUs2glewSQvpXY2ha 6K07qNCqBYw0ZGBmadYyP9SxXfc4siBG+4ZFa4WZ+Pt2vPY/VSH44JkA60yCE6DZ nTmI8y+P+1K1zk53NGM/Pb0joPZ5FEJ4gATd9uqkmfEgDH7c2F95/tXzR0nJJvFP lWs/bFIO =B5m+ -----END PGP SIGNATURE----- --=_MailMate_3631661D-6E65-42A9-8CE6-6695B0C387FD_=--