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 9FC04C10F1A for ; Tue, 7 May 2024 10:20:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DCB06B0088; Tue, 7 May 2024 06:20:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28D486B0089; Tue, 7 May 2024 06:20:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 17BDE6B008C; Tue, 7 May 2024 06:20:31 -0400 (EDT) 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 ED60A6B0088 for ; Tue, 7 May 2024 06:20:30 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A474A1409C9 for ; Tue, 7 May 2024 10:20:30 +0000 (UTC) X-FDA: 82091205420.01.9CB2D87 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf12.hostedemail.com (Postfix) with ESMTP id CF9C840004 for ; Tue, 7 May 2024 10:20:28 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.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=1715077229; 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=LhvKQTSMUS16vWO0jPd+FJGOY1JQ8rp5DPZRwzAYaqQ=; b=T37EAEU4zXjb7esDCx2XYA5NAz1o/RHo782pRSxUVrrwhX9eGfUwHtScOuuYW7Y7guKHbV Nq1x7v0c1KOvnNELVl0imO+RkwnxkN4IEIOcbQSrLt7KFgYeXUi7MLyfuvnDSIz6gRNiBS sbwFe5cUTmKzxcJaotVRw1nQ7vS+o3E= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715077229; a=rsa-sha256; cv=none; b=wZvqryxGvBt0CVW6xideVMCZSONGpmal5f6/IHndFi1mBE4v+AMFl8NW8JZ/esLgENDbFs U8Nz0jcFKZ3Bl32hY7/Tp+ReRG58pE+M4F/aQo8BcgpLrsbFsQ/7KKhl/o8mY6FQSnVoUc +N0gzZhMwrkmmDrt2/0wMPPvxaMyqvc= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com 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 B6D361063; Tue, 7 May 2024 03:20:53 -0700 (PDT) Received: from [10.1.34.181] (unknown [10.1.34.181]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 26B1B3F587; Tue, 7 May 2024 03:20:26 -0700 (PDT) Message-ID: Date: Tue, 7 May 2024 11:20:24 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/8] add mTHP support for anonymous shmem Content-Language: en-GB To: Baolin Wang , akpm@linux-foundation.org, hughd@google.com Cc: willy@infradead.org, david@redhat.com, ioworker0@gmail.com, wangkefeng.wang@huawei.com, ying.huang@intel.com, 21cnbao@gmail.com, shy828301@gmail.com, ziy@nvidia.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CF9C840004 X-Stat-Signature: 678umtjkrfxtbaz4465c5yytmnk48ymw X-Rspam-User: X-HE-Tag: 1715077228-405317 X-HE-Meta: U2FsdGVkX19dkaMg88AVhddFcyM2ejW7vzJENH/hwQYP5xOndY5iCOWapi4WxOrP468Kp5gVaso/ixUkdxVpgGrMZvhVYx569ypPjmOlFv3iR2yB3gGqDVxkukSxksCOLhfxoVR9yrc99hghKZkoPZD/acQTHpMro+KuWTfoA5j1Ks0TVP9UlscCD2ac8hnHtXvrLmfBribfYeJCyw9gTB1MNW2hSqHJc6rmkbqMk/kV+w7qKISM2ABBbK2sQlsFqVIyUycvh4z69L9xUyIA5Wem3Sw77MC4Qo/ZjGZLKkQ7g5S9lQmmbUCJShwYe8Wa+t4l2pbNwsmJ7dMJNLY84+eEFQhBd8YGp/cssKy4vasU6DP34vK8lZQKqc/Bfg9UBNGFc+/legwAiZ4JWCzZQFMPqJwqEFvrfLK4+C2ZN88dBCWBkoNtAKg6vvYZ/QJ0FXsXcErJRqgRc7g7Z+Sp26/hLFvOXzDVpOzMP7w/XVXlP8jDarQlLlXBi13YyTOIbI9lrNe8xIoIrtIdqtdbrtnjyAwHgW6OaLc141K41lilg26TfwYv8EeN3MAZVpJntZs16AI3Pwcxvgyq5zQqzRmRL1AKwzUVS5JQX0sG8oxK/m8+do36bG4IRKKhaI2Zn2854jqrIq3x/pxcqrBZberAWntWXff1fKHnmpsAYKIS7FKj66dtDwTWx5AMiQCVO9mV56CNbvnaQdR2Ep003bOpXxYUJa0yS4OJqUDtyRWV33Bul8/QtBLN7Y/t0IwKC0OE9BqbPyiPDvSHieDr15TcYAvT05z5wFho2qW4OEW2AseZKco2l23b0bgN9FnFY2jJIS6MS4pQifVFhNTLz0VzQSXu93NORalfVdEbXZ8xk+Mg98Ua0BE6AMohkjzLZVcdJT9zKO9DVMSDGrSSty+paqrmQ50gi4bfLVLw0hU/vxgFsTCKvmma6WUW1UW+IBqGKmCpUoNfMKZQc9W SqnoqPcU WN4NrIZafKPc9Ou7114UcddZn4DmY9EL+QXB3DkPiWWXzYbb7qM/UYA4oAFCA7GbiW1xIuRKYwZiO/6l8gRiVmadT9pGSU3ldoOpmEqXcL1L1IxHF1WOqb47L12bGnZjKf5tRVuNJe4IVqs72nyRklLhoXQ== 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: List-Subscribe: List-Unsubscribe: On 06/05/2024 09:46, Baolin Wang wrote: > Anonymous pages have already been supported for multi-size (mTHP) allocation > through commit 19eaf44954df, that can allow THP to be configured through the > sysfs interface located at '/sys/kernel/mm/transparent_hugepage/hugepage-XXkb/enabled'. > > However, the anonymous shared pages will ignore the anonymous mTHP rule > configured through the sysfs interface, and can only use the PMD-mapped > THP, that is not reasonable. Many implement anonymous page sharing through > mmap(MAP_SHARED | MAP_ANONYMOUS), especially in database usage scenarios, > therefore, users expect to apply an unified mTHP strategy for anonymous pages, > also including the anonymous shared pages, in order to enjoy the benefits of > mTHP. For example, lower latency than PMD-mapped THP, smaller memory bloat > than PMD-mapped THP, contiguous PTEs on ARM architecture to reduce TLB miss etc. > > The primary strategy is similar to supporting anonymous mTHP. Introduce > a new interface '/mm/transparent_hugepage/hugepage-XXkb/shmem_enabled', > which can have all the same values as the top-level Didn't we agree that "force" would not be supported for now, and would return an error when attempting to set for a non-PMD-size hugepage-XXkb/shmem_enabled (or indirectly through inheritance)? > '/sys/kernel/mm/transparent_hugepage/shmem_enabled', with adding a new > additional "inherit" option. By default all sizes will be set to "never" > except PMD size, which is set to "inherit". This ensures backward compatibility > with the shmem enabled of the top level, meanwhile also allows independent > control of shmem enabled for each mTHP. > > Use the page fault latency tool to measure the performance of 1G anonymous shmem > with 32 threads on my machine environment with: ARM64 Architecture, 32 cores, > 125G memory: > base: mm-unstable > user-time sys_time faults_per_sec_per_cpu faults_per_sec > 0.04s 3.10s 83516.416 2669684.890 > > mm-unstable + patchset, anon shmem mTHP disabled > user-time sys_time faults_per_sec_per_cpu faults_per_sec > 0.02s 3.14s 82936.359 2630746.027 > > mm-unstable + patchset, anon shmem 64K mTHP enabled > user-time sys_time faults_per_sec_per_cpu faults_per_sec > 0.08s 0.31s 678630.231 17082522.495 > > From the data above, it is observed that the patchset has a minimal impact when > mTHP is not enabled (some fluctuations observed during testing). When enabling 64K > mTHP, there is a significant improvement of the page fault latency. > > TODO: > - Support mTHP for tmpfs. > - Do not split the large folio when share memory swap out. > - Can swap in a large folio for share memory. > > Changes from RFC: > - Rebase the patch set against the new mm-unstable branch, per Lance. > - Add a new patch to export highest_order() and next_order(). > - Add a new patch to align mTHP size in shmem_get_unmapped_area(). > - Handle the uffd case and the VMA limits case when building mapping for > large folio in the finish_fault() function, per Ryan. > - Remove unnecessary 'order' variable in patch 3, per Kefeng. > - Keep the anon shmem counters' name consistency. > - Modify the strategy to support mTHP for anonymous shmem, discussed with > Ryan and David. > - Add reviewed tag from Barry. > - Update the commit message. > > Baolin Wang (8): > mm: move highest_order() and next_order() out of the THP config > mm: memory: extend finish_fault() to support large folio > mm: shmem: add an 'order' parameter for shmem_alloc_hugefolio() > mm: shmem: add THP validation for PMD-mapped THP related statistics > mm: shmem: add multi-size THP sysfs interface for anonymous shmem > mm: shmem: add mTHP support for anonymous shmem > mm: shmem: add mTHP size alignment in shmem_get_unmapped_area > mm: shmem: add mTHP counters for anonymous shmem > > Documentation/admin-guide/mm/transhuge.rst | 29 ++ > include/linux/huge_mm.h | 35 ++- > mm/huge_memory.c | 17 +- > mm/memory.c | 43 ++- > mm/shmem.c | 335 ++++++++++++++++++--- > 5 files changed, 387 insertions(+), 72 deletions(-) >