From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 102F81B6CEA for ; Fri, 3 Jan 2025 07:04:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735887900; cv=none; b=Z/viGU8tYaGRcClWgPCmEIJVM0lsR90VrmJfiV3cHaZz3j534EAX2yhlUdNQXf8PbmM2HpeLExs5PSgYQM+pLakTMIPztPrQC+2bTW0BUeH7U/nlIfjGEnj5XnThSF/s8sU8ZPAy3xC7bCEJ4zcq220BNGy/gRP2evdktv9R61k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735887900; c=relaxed/simple; bh=H8Ghxhn1j4+tMb/1bHUaM96iv1mqO1DYgnHbl2NtRxA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=tk+8OIppRmqK1hE3uAPbM6aqeeH80I8pBcB3Q/AjMrKFZB/srwFaDhXetWajYWclx5CyihoPG7O7Abg/Hvz2cWQ7gSvYz1uLCmEbIHAuYJKlUDt32rRLdg+bX0KInf1H7mr1TYeQLIvonf65poU4qbLgXVc0KJhFRzdYas6NMDM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=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 CF2261516; Thu, 2 Jan 2025 23:05:18 -0800 (PST) Received: from [10.162.41.37] (K4MQJ0H1H2.blr.arm.com [10.162.41.37]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A0F823F6A8; Thu, 2 Jan 2025 23:04:40 -0800 (PST) Message-ID: <821f7496-2799-48e5-9cb9-58f948277cba@arm.com> Date: Fri, 3 Jan 2025 12:34:37 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 00/12] khugepaged: Asynchronous mTHP collapse To: Nico Pache Cc: akpm@linux-foundation.org, david@redhat.com, willy@infradead.org, kirill.shutemov@linux.intel.com, ryan.roberts@arm.com, anshuman.khandual@arm.com, catalin.marinas@arm.com, cl@gentwo.org, vbabka@suse.cz, mhocko@suse.com, apopple@nvidia.com, dave.hansen@linux.intel.com, will@kernel.org, baohua@kernel.org, jack@suse.cz, srivatsa@csail.mit.edu, haowenchao22@gmail.com, hughd@google.com, aneesh.kumar@kernel.org, yang@os.amperecomputing.com, peterx@redhat.com, ioworker0@gmail.com, wangkefeng.wang@huawei.com, ziy@nvidia.com, jglisse@google.com, surenb@google.com, vishal.moola@gmail.com, zokeefe@google.com, zhengqi.arch@bytedance.com, jhubbard@nvidia.com, 21cnbao@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20241216165105.56185-1-dev.jain@arm.com> <6f7fe967-0864-4b96-8426-cd9d6655d207@arm.com> Content-Language: en-US From: Dev Jain In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 03/01/25 3:28 am, Nico Pache wrote: > On Mon, Dec 16, 2024 at 10:31 AM Dev Jain wrote: >> +Nico, apologies, forgot to CC you. > Hey Dev, > > Happy New Year! Happy New Year to you too! > > Thanks! I'm trying to apply/test your patches, but am failing to apply > them due to mm-unstable which has "unstable" sha values, making > applying them difficult. That is strange. This works for me: Clone mm from akpm, checkout to mm-unstable, hard reset to e7e89af21ffcfd1077ca6d2188de6497db1ad84c , then apply the patches. > Could you share a public git repo to your patches? > > Also, have you seen any issues with your patches? My version of > khugepaged mTHP support was mostly done before the holidays but I > haven't posted due to some issues with (BAD PAGE) refcount issues when > trying to reclaim pages that I haven't found the cause of yet. > > -- Nico Did not find any obvious issues till now with debug configs on :) > >> On 16/12/24 10:20 pm, Dev Jain wrote: >>> This patchset extends khugepaged from collapsing only PMD-sized THPs to >>> collapsing anonymous mTHPs. >>> >>> mTHPs were introduced in the kernel to improve memory management by allocating >>> chunks of larger memory, so as to reduce number of page faults, TLB misses (due >>> to TLB coalescing), reduce length of LRU lists, etc. However, the mTHP property >>> is often lost due to CoW, swap-in/out, and when the kernel just cannot find >>> enough physically contiguous memory to allocate on fault. Henceforth, there is a >>> need to regain mTHPs in the system asynchronously. This work is an attempt in >>> this direction, starting with anonymous folios. >>> >>> In the fault handler, we select the THP order in a greedy manner; the same has >>> been used here, along with the same sysfs interface to control the order of >>> collapse. In contrast to PMD-collapse, we (hopefully) get rid of the mmap_write_lock(). >>> >>> --------------------------------------------------------- >>> Testing >>> --------------------------------------------------------- >>> >>> The set has been build tested on x86_64. >>> For Aarch64, >>> 1. mm-selftests: No regressions. >>> 2. Analyzing with tools/mm/thpmaps on different userspace programs mapping >>> aligned VMAs of a large size, faulting in basepages/mTHPs (according to sysfs), >>> and then madvise()'ing the VMA, khugepaged is able to 100% collapse the VMAs. >>> >>> This patchset is rebased on mm-unstable (e7e89af21ffcfd1077ca6d2188de6497db1ad84c). >>> >>> Some points to be noted: >>> 1. Some stats like pages_collapsed for khugepaged have not been extended for mTHP. >>> I'd welcome suggestions on any updation, or addition to the sysfs interface. >>> 2. Please see patch 9 for lock handling. >>> >>> Dev Jain (12): >>> khugepaged: Rename hpage_collapse_scan_pmd() -> ptes() >>> khugepaged: Generalize alloc_charge_folio() >>> khugepaged: Generalize hugepage_vma_revalidate() >>> khugepaged: Generalize __collapse_huge_page_swapin() >>> khugepaged: Generalize __collapse_huge_page_isolate() >>> khugepaged: Generalize __collapse_huge_page_copy_failed() >>> khugepaged: Scan PTEs order-wise >>> khugepaged: Abstract PMD-THP collapse >>> khugepaged: Introduce vma_collapse_anon_folio() >>> khugepaged: Skip PTE range if a larger mTHP is already mapped >>> khugepaged: Enable sysfs to control order of collapse >>> selftests/mm: khugepaged: Enlighten for mTHP collapse >>> >>> include/linux/huge_mm.h | 2 + >>> mm/huge_memory.c | 4 + >>> mm/khugepaged.c | 445 +++++++++++++++++------- >>> tools/testing/selftests/mm/khugepaged.c | 5 +- >>> 4 files changed, 319 insertions(+), 137 deletions(-) >>>