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 8B3C5EB64DD for ; Thu, 3 Aug 2023 12:48:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F2DBD280245; Thu, 3 Aug 2023 08:48:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EB67E28022C; Thu, 3 Aug 2023 08:48:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7E09280245; Thu, 3 Aug 2023 08:48:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C4E7628022C for ; Thu, 3 Aug 2023 08:48:55 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6CA9F121171 for ; Thu, 3 Aug 2023 12:48:55 +0000 (UTC) X-FDA: 81082773030.09.601F36B Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 98B7F1C0005 for ; Thu, 3 Aug 2023 12:48:53 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691066933; 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; bh=Qa7yIYyQghYAhcOFBDaKNarj96s/PZk7WSoWRLHnKMU=; b=NZctvdesbFN7JC/GPMGyla0WxmJpIiGdAR1HRE1SkuNrbQxiRLDj9vJQ5znj2hoxO9nD/m Uy2fyPWnikZUYBn7G5aBwSXc+FJD9VLzAQREtSu4zVFF9ijk17XOAwzXPoyfZDUkaFTlRy K6Tay+5HL9+REEmXhxvr2KBuYxrXIUI= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691066933; a=rsa-sha256; cv=none; b=PgTESr7CDnJaYod+4oJVhb/Uf5HQfOmoalvpY7udfcfFi3WtOE2NhNkcWGXVE35PAGAfCG BQlkc4WVghkKd1PbGoYT5GRjddms4ELzcwAEyZTwZ7D29papKVbUd0Omj+gRgfmEqyOVCW bxZmbRTEMNweA7Q2zJKx+KwSDr2n5So= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 78F26113E; Thu, 3 Aug 2023 05:49:35 -0700 (PDT) Received: from [10.1.35.53] (C02Z41KALVDN.cambridge.arm.com [10.1.35.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 964493F6C4; Thu, 3 Aug 2023 05:48:50 -0700 (PDT) Message-ID: <2f3a4ab5-dea3-deaf-6f6d-01ac4a5716b2@arm.com> Date: Thu, 3 Aug 2023 13:48:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH v4 0/3] Optimize large folio interaction with deferred split To: "Kirill A. Shutemov" Cc: Andrew Morton , Matthew Wilcox , Yin Fengwei , David Hildenbrand , Yu Zhao , Yang Shi , "Huang, Ying" , Zi Yan , Nathan Chancellor , Alexander Gordeev , Gerald Schaefer , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20230727141837.3386072-1-ryan.roberts@arm.com> <20230803120100.2glxdc4yf7sjn7h5@box.shutemov.name> From: Ryan Roberts In-Reply-To: <20230803120100.2glxdc4yf7sjn7h5@box.shutemov.name> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 98B7F1C0005 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 1emfcajm5p6txc7dfmnhsiq3jecgmp3g X-HE-Tag: 1691066933-239660 X-HE-Meta: U2FsdGVkX19JBf894kBJs5JlzAK/NFUzd4YBvZxremrNoNtx7pxeiHovoKG14qCYG4sW8DsX19bOeZq0WeGcDMvJMkxjuc0Cxray82ure21VuJsAgIr1oQhQJDL66lIHGPzqZ3/7MrTy7zxLlJR9pA6HYTUgicLCA6fqvW3S27mUHY9rG7BFWKoWlhwGNvtz1mIjNOhoIh+l9U2wp7c0Hidv17hj1pGUNNxixSXOh7cWOcemJVaFg7ZZdDpoLUxyO4PN2D0KCVd20MFwgSwtrTVIhxJn3W1l7Eu7PE56zCCL0nDniX5E/UYoVXe0rCTW1amgFeM2q0Bb6XZT2kHYZr8/ApoDCQv8I8HEFYgMiZHXnh/B+TmlhVC66GSVZVAp3Ir9sPH4s0IDkBx7Mp3cZ3I2KoHqc10+GWgsEQYGMmASFAI84yL8uyg9GWTK1RdaKqiP7uPOvjqj46ANhzDFsH/xhjpeCWNvAzB7FI1kI4DzM8niFE96p6IdSg3n9T9eT6jhrh6bAYw1GX3ws8pAPtkt80WaZ9p5jhZn0f8TFfBVCLoInSTcB2o95EPsvatzaJh6YIoPT+uQankEGnZKf/qL1xISqlfwxKRkEFmbKhGEfgoc1dkVsPGB1hj8vCLgMi7qxgX+AXbKCUtP3bdIHSs0tIIn5f3BJi+G56mwV6SNQqBd2vGFMtrrwORWF+U5DcVKjvsBdoxTn1ygUtyWjxfYfa6TsaLrmUzAvm0g9nXrH74yLiDga9/32RpQwyjgvFzH8OE/ELEIHPw2FaD5da9FiS6WNInXHYcxq6GHcJHsi7JAWP3iqC+0iwOroMrGUsFLrmF6NSHt+xHu2gAk+JvusYJxbtQM8HbFZ8EPqbsU0m+Ur1Ugls6VzihjdGbfbwovgFspebHHs8Hl0ywpjBH55ocORTNGmMKf0FJDpyOJYNRJX4hU/tM+CMof9Mr/jcOCTTljfUn8Zu7Gn1Z H8rIyuYK wn3FCRRIO1Abb5itbP54qmaciJHUDWVt1aA4kUgAH20PYkrGAZMZOVm2ol3gMmTuO7McRMZH2VMWAqi4HFKSWTRrq6Dx1V2Er+LkQYdI/SiplGzfjjeOfQ9A0Q9JoFkp4OYoY 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 03/08/2023 13:01, Kirill A. Shutemov wrote: > On Wed, Aug 02, 2023 at 05:42:23PM +0100, Ryan Roberts wrote: >> - avoid the split lock contention by using mmu gather (suggested by Kirill) > > [Offlist] > > So, my idea is to embed struct deferred_split into struct mmu_gather and > make zap path to use it instead of per-node/per-memcg deferred_split. This > would avoid lock contention. If the list is not empty after zap, move the > to the per-node/per-memcg deferred_split. > > But it is only relevant if we see lock contention. > Thanks Kiryl, I understand the proposal now. Having thought about this over night, I'm thinking I'll just implement the full batch approach that Yu proposed. In this case, we will get the benefits of batching rmap removal (for all folio types) and as a side benefit we will get the lock contention reduction (if there is lock contention) without the need for the new per-mmu_gather struct deferred_split. Shout if you have issue with this.