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 C7A90C32793 for ; Wed, 18 Jan 2023 14:06:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 37F1B6B0074; Wed, 18 Jan 2023 09:06:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 32EF56B0075; Wed, 18 Jan 2023 09:06:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1816C6B0078; Wed, 18 Jan 2023 09:06:34 -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 0868A6B0074 for ; Wed, 18 Jan 2023 09:06:34 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CE99540BFD for ; Wed, 18 Jan 2023 14:06:33 +0000 (UTC) X-FDA: 80368095066.06.939DBB5 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by imf14.hostedemail.com (Postfix) with ESMTP id 47761100029 for ; Wed, 18 Jan 2023 14:06:21 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=CMzL74JO; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf14.hostedemail.com: domain of fengwei.yin@intel.com designates 134.134.136.126 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674050790; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=l1v2j0UGa8WSjYCll6lQ+Ouo76cGqUVs03vHyk8R/RM=; b=vj6PA5+J6aqzx1mOfsd5gY/YBrsVh1rQB/d4dOSodcRLvxJWC1BPZ9IjryOeKp/OLEhgjI OaKNYWoJD0I60L2l3SAE0ZVIQa4QcKDn7IZ0UicGn5qtuLq2ojaL325U2se74eRa0GtEFd 4O4xZukJtLdtObqJ1s2TisIWUe0wxBE= ARC-Authentication-Results: i=2; imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=CMzL74JO; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf14.hostedemail.com: domain of fengwei.yin@intel.com designates 134.134.136.126 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1674050790; a=rsa-sha256; cv=fail; b=uCn+z7PjpNV6Xz+04HK/vWurHSLkeTHu5HQuodlatrmGat2cN691RxjJinAGrAlHha+60O VXJdhH1hyIckfMWO94KkdmIqkGJdcUy/7Wb1GrOToDcE6+DFO43XGjePWgqCmU0HQ24afm toZ+YqE0UceI8jmpaV62y81yhN6pQMA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674050782; x=1705586782; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=N/EkdP2y2Fqaw93qxgdoxUpkgpXqWW8DYnxhAJVDVZk=; b=CMzL74JOsEdKuZ0uqTvbn+tI84TnXYA9X4KntLfgo7SXGdu1adR5FakJ QLan2DsF6rBSFz9AJ4OgDMTnOFZuaNaU96kY2/i0F5hKbN4ko7IhpiuUJ q/kt476E/lGLZm4sqrL97+b3bZfWQzB46GmyHYm0vyO6gB8gAj6ySb0CV HRHOJ0GWSeYDjN+XXx16PgP/BvHCo8qa3czF61+UvRjTRN+2AG2gQac9D lj4fZQVHUMeDsPGUg1QpN/4jbpSKlKzajzIe8TCLnVPFm/GSnVBf65Glp q6lQLLvmlNnFPVG0gWu9UbJQ8URl8pm/L4/Dpdnm68PQlUTYhd8vL30iY Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="308547663" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="308547663" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 06:05:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="748484071" X-IronPort-AV: E=Sophos;i="5.97,226,1669104000"; d="scan'208";a="748484071" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 18 Jan 2023 06:05:59 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Wed, 18 Jan 2023 06:05:59 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Wed, 18 Jan 2023 06:05:59 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Wed, 18 Jan 2023 06:05:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bjInlDH8YmY6k5muqDN/Uq5kPaJDcHxOcydF+3NQqWU389AX5RnaQNUBICd/3KpxKCmHiw7qTofCRFHY+uOa6e5quVbqbQkhDspPQk0+4/U/jnMV7MMVfY8oy40XjBKv47RJizfadJNFFmr15wt+naixT8ffwYU7A78sWoEDrOqbIyCpSALDPH7LhkQbFn9SH3BCCn3HbqRpaIB6z3/FCecHLGY/5IUR5xmh7mWgsQgyCKoxKez46y66sKClxHwzFlRZRtgE/yMfzlDiQ6WZ/cHoVwqFhjdarBC7PIfgJk6itrUHHzHDVslVkiX7xY7lE3PVCzQaz1Kha4FaUWazhw== 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=l1v2j0UGa8WSjYCll6lQ+Ouo76cGqUVs03vHyk8R/RM=; b=HdxRaI8ZzXxzKiIWdIoDWxzAUchpvePJIgj5Jj4m/gMJ95YyUdfOg0IwIV0HUA2LtYkT7C2pkHjqz/Z0Y3kTFnFV6CVEdpUldiaCHKly26wp8UuaPfXYGrH5zYCya7Sx7LU7heGgCEcmJssMph8XoGYD6CqpTFABncm3DCcPdbDBD58rhKjflI/cnzXnx9pBTCivENwGjwd0+wCRtQivELGRkmcpGnr/0JWIDofgf21EXvPKMUsdb/Ou1UpV8xid2Q5MvJEJVZKWXU6G4tNk1Tm6z/npVOG9b5/chrZcFrpuNKAmQIHQ424m8RGqEqbg/MfdeO/KAOx0sysEtrU7+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4820.namprd11.prod.outlook.com (2603:10b6:303:6f::8) by CY5PR11MB6343.namprd11.prod.outlook.com (2603:10b6:930:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Wed, 18 Jan 2023 14:05:56 +0000 Received: from CO1PR11MB4820.namprd11.prod.outlook.com ([fe80::1531:707:dec4:68b4]) by CO1PR11MB4820.namprd11.prod.outlook.com ([fe80::1531:707:dec4:68b4%3]) with mapi id 15.20.6002.024; Wed, 18 Jan 2023 14:05:56 +0000 Message-ID: <77d3c982-fc3f-c20b-ac67-b70df9361823@intel.com> Date: Wed, 18 Jan 2023 22:05:45 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.6.1 Subject: Re: [RFC PATCH] mm: populate multiple PTEs if file page is large folio To: Matthew Wilcox , David Hildenbrand CC: , , , References: <20230113163538.23412-1-fengwei.yin@intel.com> <2100e7c9-2a5c-4c1a-6e22-9710a2b0c66f@intel.com> Content-Language: en-US From: "Yin, Fengwei" In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SG2PR02CA0025.apcprd02.prod.outlook.com (2603:1096:3:18::13) To CO1PR11MB4820.namprd11.prod.outlook.com (2603:10b6:303:6f::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PR11MB4820:EE_|CY5PR11MB6343:EE_ X-MS-Office365-Filtering-Correlation-Id: 3755bf75-7b58-4e46-2e85-08daf95d1e4b X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BcRGHOaROV1WondLjCAR3bOw1MexkbRo0AbCZxpNMZgD6WS+H5e7YaPHmqYCxP6oUvRU7sFzMJLv92jcgm3Qt6mABkp6cRQi4Zo2cZYla7zCEilRs8oj5k+1/L5sHWFCtyhFbWkisFupI96z5x16KfZGAMGdUSJ8iNT7pQ70HdEYVo57daTOKo8J7+h5H3cJk8IGRAx7Yaomzq6Wmro4xqWIAefI6RjSHN1bBlNPqSGTdvm+/PP7FXkElR7UpORA8vqvyJt8LeRgYIkT5IYmJgZPq3SNtOHS+JUHduHE8NhKOBX74bohgZCNVM+l6n0gj1/BlHrZLeCb55XD8a7qGL02SNfklbrf60Nyqs68PHcWePykERMdWSfbCJK2tOIFXS0fA57UwJF/ypSXWqLiIWw8/shhic0Y3YuQvKccvf4U1tN+JEXz5ghCg7AOpnCUeL8GNh8cfxyaj0Kx3s832ogslJMIVswkpits6x7n6xKfOET9s371y5ADqxZqQCjIi/Ye3+SIz7ZDqMSCZgkUMVoWEvWhBatazGNbU1wrw7k2m+Y1YIY1xVPFHL/halQeQBFvJg9TlYc0oQdIr2CBmQouwxF8OD4a1kawdbeDQBTDhAcIYfQYq1PcnUk9EbWLUJuuJFlWrw62eZQgjqtWD+V94Fsl5sA7xEDTVx1wDYszlDqzrVXA/RctVYiveCWKnHQJ+HYdludyoWHoFAqZMNC62B8EnTed1kppWURefYV2L1wuc3+TC0oIDVg2Ccc5T5aevjXSNZkXjFDoAUeoVw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4820.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(136003)(376002)(346002)(39860400002)(451199015)(36756003)(83380400001)(41300700001)(8936002)(2616005)(8676002)(316002)(110136005)(4326008)(53546011)(5660300002)(38100700002)(86362001)(82960400001)(31696002)(2906002)(66556008)(66946007)(66476007)(966005)(6512007)(6486002)(26005)(186003)(478600001)(31686004)(107886003)(6666004)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RDVURkZtQS9hN1lDM0VVejNhVnUrOWt6TXpkdzlMZmVGMFF4R2dxUGpBdm45?= =?utf-8?B?cTVVdmdkWUM3Z0Qza2lsOFloTmsxUXh5NHR0QmZtYm91Ty9TSlJycWNHTjg3?= =?utf-8?B?d3RhR2Mwb3VuT0ZERkFEdm1mTE91VUpXVE8yRjVrNWlzbFhaSUV2YXVIUkQ5?= =?utf-8?B?RVVWeGYyRHV5cDNXYklSRXJmSDlGbGpWSUwxMGJsR3lBcGVXOXFHZWpZcmVD?= =?utf-8?B?NDBCUm5yZkpINnhvcDhUMDJJUjF6cHA0Slk3elBBWG9VUnpacFNJN2lFV3Vs?= =?utf-8?B?dXdadzFwL0FZNUg2SkVBMTFPWUp3eFZ6K3BFY0Q2SWpEcTdpdTV2cHJ6QnpP?= =?utf-8?B?NURzUHFEZmhmSGFzLzhIaFdxbUhGRFlWR3RUOXBmS2JOVVVkV2pnQXBCeFhm?= =?utf-8?B?bm9OUzJ6L2lEb001ZGFzNk02QUV2ZFRkU3FpTGJYWXJEcEpOcVJIUk5lb0xk?= =?utf-8?B?Ni9SZlFpc3BZU3kxZ0FYWFVIQ0h2UTFSdk5VVTJHK2tlK05ScTJXbWI5eWRM?= =?utf-8?B?QkpGM0d1SjdlNlB0S2JhTis4VllmdHhsY2k5dGthc0dablRXMW5lcmJSanRU?= =?utf-8?B?QXY2L2xTYjJjNDhyV2NWZjNOTVJMMzlpcU1Cb0J5ckd0QnhuQ244WGtabnp3?= =?utf-8?B?TGxubzQzdUdzb2gzRlJlOXBBTGFXc24vRFVwcW9ReGtCbUIwMGdYZzczM0x3?= =?utf-8?B?S1RZZnNzRlJvanFRSW1Ia2VSZnA1SXdpYStkYmpOcVdMWVEzOEdaY2p4R0Rl?= =?utf-8?B?dU81OEl0VGNXRUd6ZzVReUNwZFpHNG5PT2dLRENzbDlqWmJuemZPRmN1aWhh?= =?utf-8?B?WHp1ZmlId1d4NGZBSEFqZE5wMXFqdS9pcmJRWFRvYVhzVTJOYUt4WjBCTU9v?= =?utf-8?B?b2FGUUZKUDBablp3dmZNejhaZ1podFI3M1k0amlZWmx0bmZXOGZ4WnU4YUNl?= =?utf-8?B?VzRLZVNhbkVBZFRvckNNK0xFZ3RoZFN2a0drOVNWMnN4TlJZckZsaFlUZkoz?= =?utf-8?B?NUtvSnZueXJDd1FjZXF2NStPTW9BQjVlR2xkbjZBUW1SME9GSitXMDkySkVE?= =?utf-8?B?N3JGZk9RbDVhUEpGanZUTllaeTJDb016b3ZzV0RFeDE5cWU0UUJEcG4vYUt6?= =?utf-8?B?U1BEVjdFQ1Y3eUI0bTFwSUNoVWJqSVIzUVdiQno5NzdiL2daeUdEUTVEU20y?= =?utf-8?B?dUN0NGdtQUFaZC9xUnRWMmx4dXpuMWlDRStHR1paWFZISzRuaTl5L0N2OXBB?= =?utf-8?B?bmVtMWtZb0F3QkZoQzlqQ05xTm0vcWNMdXNTZFM4K2JTMVhqeFJxQVZFa0Vt?= =?utf-8?B?MkkvMDZXSXM3YWE1aWhmU3M2RE5vWDRwbTVCNFBaVjVpbk4ySFNOck8rSVVs?= =?utf-8?B?bGJNdlppeUdIRng4V2U0Uk1kMEorZnpLRjF0UWFHZEk0MkZWd3IzOFpDUkRR?= =?utf-8?B?OFZ1cUhHTkFGRE92RzJIZ1pSUTlKNkg5cUhOR1lteXJ1OHlyQWoxSkllMTNY?= =?utf-8?B?R0kzM3BFTG8wbkdmOU1QZEk5bHhkWTdRa0wzaE53dUVTM21YaGhQRFJKY2Np?= =?utf-8?B?eE9nTDZLd05jV0xHdG44QVJjV0VYTTk1RnZCVEE2NE4yTnh5SS9mWXVHeWRw?= =?utf-8?B?TTlOMC9wMFZrS01tS1QxUXhVcytNOUdEUlNuU3NMdGRZMHFFR2RGVGI4dWZY?= =?utf-8?B?cHorZG1sNkRzZlpLbFpBZUttOVJWeGI1L2EvZ2kvTU02cnU2WTdYUTVNV0Nj?= =?utf-8?B?V1dOZHZTVDV3YWFCKzVTbFpLcUJ3YUoxMWo4MFdXY21rQ0Vzdm1MQ0NYMVNo?= =?utf-8?B?cGJ4cG5mS3hVN3VUOGNMSy83OEZFTk10bFNmWlh3OW1NMUFlVGZYd3FNaFUx?= =?utf-8?B?QWpoRHNDemt3aWNhbUZCSDkzMU53RmM3MG8ya0V5MmhCemM5TFFmYVpEYzBU?= =?utf-8?B?RjkxanpHaC83bERidlc2eXF6aFdETUd0SFpheVNVcFpQbDFQRUhlQytvc1o2?= =?utf-8?B?bjZsMnlDRFNnZGhyWE9NMjdTeGxsaGUrOVVWWmZ6VlFRRzBuaEdIUFFKdzEx?= =?utf-8?B?TkFNaURvdVdmQVA2NFo3Q1p5V0pVQ1EzMGdJS1lvTnVKMTV0Q21HVVlQeW96?= =?utf-8?Q?GaVyvoFmnAX/zpBFUf8QlxZ4Q?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3755bf75-7b58-4e46-2e85-08daf95d1e4b X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4820.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2023 14:05:56.4967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: v4x3l1m7ceAMvi1s04NcdTTj0zKYbFWY6ipEFAHXBTIMEK752IsLoQcSA9j5EaKoiurjimyWAuuWTHIVZOIFMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6343 X-OriginatorOrg: intel.com X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 47761100029 X-Stat-Signature: mnjcgbi61udekwdbent775ngogomzirp X-HE-Tag: 1674050781-848504 X-HE-Meta: U2FsdGVkX1/P/rv7Sp0KsMJqPK0JynSbhenmg9p385oZop+vBokuj7jqKZ1RATMSck/zMnllOzvr9lEjn/y0tKXxCSDqJO/wUflP2AoOXbPLhsmMKp6RLiVN75gROuw+Ix++c5RR3C8dM5ZIXtS5o/aLs1MPXjLn5ZNwdBLYHABoqUBN4pxh/3ojJ81+fdeK8dVRSeIhzyrI5CSx+HMYE2tu7i7NN74NQFx5WYvqhrWtWlu1IgDz6pGzMA64ScxjZwNXm9VUS4J/24hUAIDKfmHR9F6HwCABbk1H36ImB+kyzdxOciLF4FPvsF19h3c0DCUsdWvssiQBjtZ28aGVR0JlmqImTSY32R4vvuv42Y1NXPuC6WmYjxz66PkFkNEFV5uh4r7JYXSEBcYrRG0BA6tUQnEPMAPfcFbXEhfysvBmvFXbQKIqfsfrCdCK2X+KE7zmjcGwOHpgHcOk4iDbd3a6g45FkjtTY0iwHDsnnSHfO0TJqPmWbjmELb6bbyJHnSVLzZ2iHOyQXVfJRcRQoHGugG3vdbHCn6E9ZgPIR4oYw1nmEQ514VEHXigwF27VRChBR4eE2Bg8Ckzr2+2Dcox6VtIpnjKmDyGLU3ieDHHDQuE/g6mPDynMzhJLJUMtsBjk4qisA6DwC9bKLdJsL4xw7+0duKKQenLmWPA3n25WA1ZXC3vLtqnjgf4ooH5fr+3C/rMAAy6eDZD9mj+3iPEGWmgpYuCtO3C/dcThA9O2yjGDCRnS/zc9gh1OFKl0R4AfMLUqjHEKiyx0Boewnnat3DmsahG6wgmSzRZ1Ec0cWCIo41a0dwE7yxSZL7AvpW0QgZMj+CIfwsJjGYBuMLVLCMddYmDh1LKCjWWUDnmVtZUZxQXmxAbeUiXx7eNzx0/0Sz/XZmsMT25H38hvyoBkN5yrTjGfP9mFB9GlRZWqkP//TL5UNpQ6RMX4gsn3++082mpIm59hM8LJgeV /A0Vu3Gs Dl+KwdJ+ZD0gwnDZBEoSC1O38U8xxBiJE+zjQimPo9PMSvXYyprkRus2ds12zxBH9pb4YOTeYKUmo3u1ujPivv8G2D2FyUWcxF95U1Wh3ndZyMiNVXKwXcneefnl43f+Q6e3hIbw1psYORleKeLGkCCM9Fu9ugETW92m+v2Xz7OwM1pf63YRTszQYi5a5g2voJjoimeza9Dial4yNqDt93kt3Zw== 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 1/17/2023 10:46 PM, Matthew Wilcox wrote: > On Tue, Jan 17, 2023 at 11:37:05AM +0100, David Hildenbrand wrote: >> On 17.01.23 10:19, Yin, Fengwei wrote: >>> >>> >>> On 1/14/2023 2:13 AM, Matthew Wilcox wrote: >>>> On Sat, Jan 14, 2023 at 12:35:38AM +0800, Yin Fengwei wrote: >>>>> The page fault number can be reduced by batched PTEs population. >>>>> The batch size of PTEs population is not allowed to cross: >>>>> - page table boundaries >>>>> - vma range >>>>> - large folio size >>>>> - fault_around_bytes >>>> >>>> I find this patch very interesting. But is it really worth it? Most >>>> file-backed page faults are resolved through the ->map_pages() path >>>> which is almost always filemap_map_pages(), which does something >>>> fairly similar to this already. Do you have any performance numbers? >>>> >>> I tried the will-it-scale page_fault3: >>> https://github.com/antonblanchard/will-it-scale/blob/master/tests/page_fault3.c >>> with 96 processes on a test box with 48C/86T. >>> >>> The test result got about 3.75X better with 4.1X less page fault number >>> with this patch. >>> >>> But It's a micro benchmark which shows extreme friendly case to this patch. >>> >>> I didn't see observed performance gain with other workloads. I suppose >>> shared file write operations may not be common operations? Thanks. >> >> One question I have after reading "which does something fairly similar to >> this already", if both paths could be unified. > > I've been thinking about this already; not so much in terms of "unifying > these two implementations" but rather "What's the right API for mapping > the parts of a folio that fit into userspace in response to a fault". > I haven't got quite as far as drafting code, but I'm thinking there should > be an API where we pass in the vmf, a folio and some other information, > and that function takes care of mapping however many pages from this > folio that it can. > > And the reason to split it up like that is to batch as many page > operations into this folio as possible. eg filemap_map_pages() was > written "to get it working", not "to be efficient", so it does stupid > things like call folio_ref_inc() every time it maps a page instead of > counting how many pages it maps and calling folio_ref_add() at the end. > Similar optimisations should be done for mapcount, which implies some > kind of batched equivalent of page_add_*_rmap(). I did following experience (Just did boot testing in Qemu). I think another gain is no folio_trylock/folio_unlock to each sub-pages of large folio. Just need trylock/unlock entire folio once. Batching mapcount may need more changes. Like check no !pte_none case in advance and it's to map entire large folios. diff --git a/mm/filemap.c b/mm/filemap.c index c4d4ace9cc70..a79fd4766d2f 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3353,6 +3353,41 @@ static inline struct folio *next_map_page(struct address_space *mapping, mapping, xas, end_pgoff); } + +static vm_fault_t __filemap_map_folio(struct vm_fault *vmf, + struct folio *folio, unsigned long addr, pgoff_t idx, int count) +{ + struct vm_area_struct *vma = vmf->vma; + int i = 0, nr_pages = folio_nr_pages(folio); + int len = ((count + idx) > nr_pages) ? (nr_pages - idx) : count; + int ref_count = 0; + vm_fault_t ret = 0; + + do { + struct page *page; + + page = folio_page(folio, i + idx); + if (PageHWPoison(page)) + continue; + + if (!pte_none(*vmf->pte)) + continue; + + if (vmf->address == addr) + ret = VM_FAULT_NOPAGE; + + ref_count++; + + do_set_pte(vmf, page, addr); + update_mmu_cache(vma, addr, vmf->pte); + } while (vmf->pte++, addr += PAGE_SIZE, ++i < len); + + vmf->pte -= len; + folio_ref_add(folio, ref_count); + + return ret; +} + vm_fault_t filemap_map_pages(struct vm_fault *vmf, pgoff_t start_pgoff, pgoff_t end_pgoff) { @@ -3363,9 +3398,9 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, unsigned long addr; XA_STATE(xas, &mapping->i_pages, start_pgoff); struct folio *folio; - struct page *page; unsigned int mmap_miss = READ_ONCE(file->f_ra.mmap_miss); vm_fault_t ret = 0; + int idx; rcu_read_lock(); folio = first_map_page(mapping, &xas, end_pgoff); @@ -3380,45 +3415,21 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, addr = vma->vm_start + ((start_pgoff - vma->vm_pgoff) << PAGE_SHIFT); vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, addr, &vmf->ptl); do { -again: - page = folio_file_page(folio, xas.xa_index); - if (PageHWPoison(page)) - goto unlock; - - if (mmap_miss > 0) - mmap_miss--; + int count; + idx = xas.xa_index & (folio_nr_pages(folio) - 1); addr += (xas.xa_index - last_pgoff) << PAGE_SHIFT; vmf->pte += xas.xa_index - last_pgoff; last_pgoff = xas.xa_index; - /* - * NOTE: If there're PTE markers, we'll leave them to be - * handled in the specific fault path, and it'll prohibit the - * fault-around logic. - */ - if (!pte_none(*vmf->pte)) - goto unlock; + count = end_pgoff - last_pgoff + 1; - /* We're about to handle the fault */ - if (vmf->address == addr) + if (VM_FAULT_NOPAGE == + __filemap_map_folio(vmf, folio, addr, idx, count)) ret = VM_FAULT_NOPAGE; - do_set_pte(vmf, page, addr); - /* no need to invalidate: a not-present page won't be cached */ - update_mmu_cache(vma, addr, vmf->pte); - if (folio_more_pages(folio, xas.xa_index, end_pgoff)) { - xas.xa_index++; - folio_ref_inc(folio); - goto again; - } - folio_unlock(folio); - continue; -unlock: - if (folio_more_pages(folio, xas.xa_index, end_pgoff)) { - xas.xa_index++; - goto again; - } + xas.xa_index += folio_nr_pages(folio) - idx; + folio_unlock(folio); folio_put(folio); } while ((folio = next_map_page(mapping, &xas, end_pgoff)) != NULL); NOTE: PoC code doesn't cover file->f_ra.mmap_miss. Thanks. Regards Yin, Fengwei