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 BFAB1E7717F for ; Tue, 17 Dec 2024 17:09:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 353BF6B0083; Tue, 17 Dec 2024 12:09:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 303F46B0088; Tue, 17 Dec 2024 12:09:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1CB3D6B0089; Tue, 17 Dec 2024 12:09:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id EF7886B0083 for ; Tue, 17 Dec 2024 12:09:50 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 76621140584 for ; Tue, 17 Dec 2024 17:09:50 +0000 (UTC) X-FDA: 82905086712.19.4CF2CE0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf30.hostedemail.com (Postfix) with ESMTP id BA9958000B for ; Tue, 17 Dec 2024 17:08:49 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf30.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=1734455360; a=rsa-sha256; cv=none; b=LqDh6rNjCkZYiJ5mmtKJtW00wQ/F0UMghqwBkGr9bUObBYsOp3XkDNwD5m4m7+8yxLV/Gm OumX6oaIEOKQV8NMHi28xHj9OX/g008LGidURr7RWg7aMKeJS83ksz5qArwn73NMFtzWRX 4L5zol8fvk9tJL3R9Rn3gIqQqNIViRU= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf30.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=1734455360; 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=7JYXQxWeO532lD0KXlzRHkPhfg0v1qlvxvWvnc7utWM=; b=CEMpE2Iq1yGj+QMd5taKBKNiUzAQe/wSeBKP8JorUAukV+xrBSdEI0+oMdBinTcitZZxRs YCj4bgYcK0eo+atQtIZhu7fJas79TOzVrEJKg1E6KAMz3VFc5nFxr77kv827PujME7k/Jw MkGzjjIRPGppL1qNWNrEHXx8edYPxpU= 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 B7B6DFEC; Tue, 17 Dec 2024 09:10:15 -0800 (PST) Received: from [10.57.91.184] (unknown [10.57.91.184]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1DE703F7B4; Tue, 17 Dec 2024 09:09:41 -0800 (PST) Message-ID: <23e93e90-0681-4039-a3bb-f4b01b8eefeb@arm.com> Date: Tue, 17 Dec 2024 17:09:40 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 05/12] khugepaged: Generalize __collapse_huge_page_isolate() Content-Language: en-GB To: Dev Jain , akpm@linux-foundation.org, david@redhat.com, willy@infradead.org, kirill.shutemov@linux.intel.com Cc: 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> <20241216165105.56185-6-dev.jain@arm.com> From: Ryan Roberts In-Reply-To: <20241216165105.56185-6-dev.jain@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: 889sfxt38s7jyndytkz6tubu1ic6h1na X-Rspam-User: X-Rspamd-Queue-Id: BA9958000B X-Rspamd-Server: rspam08 X-HE-Tag: 1734455329-533984 X-HE-Meta: U2FsdGVkX18UxJdwereoGm6WFBBnHZNZX7GpjxqPtUz51ebZPsLRG971aum7mSvNekldFtma0G4NAw+D8oZ87WqduZpENKvxps2fjhTCReW5Y0+1tAXjTlP0shrnBfcq+pceQTVlhre5AMH3cdcHeFmCyUriT6WAANaMbnp7W/QR3lHy8vzurjj1PknE2DP2MXkos2FytsPvuoOkbXs3UVX004IJpjyctnG1c72sMKDVHCzomSpHghAYHd4ZtR20t8RZEtrDGfHKNThH7hb8exSIXGyGRO12QplVcBB1B/tUtPNr05+gL0ntYiImdeetZkP7Yi4rVEQnZrIHFU5v69eA1QhvXM0AX9336fwsIhFR5cnHZh2VNrZGtWjERwbWUsDb/ZBLb+6C7VNqXI7EchNtj//wSGM1Qwz9bMIrHYMLE4tGXIZPC1ZblW+7jipGqckA4tCmqRJJxGWJN16FRg2PIIo2YT2B2eLPue6uOrGcqNUohm8HVYQC4RUd4xHXShm9OE4oQZ48g415L427NOL8ufwzpUs8MnIKlgMW7Dau91/BpwCvBuEDtgIUtINbQlimHuXuxfkU549tWmrM/golrlba4xc1l7pWQsK/1xljFl+1zPOhdIaUVflLkwf8dO9dyAfnRnoISW0iXtoonxFebk38vaZSpIiWw554bz3+8nOYfypcAcq82EUbLu641LkbWncujQIOf6fSG9vhPF8L3ZEO+LzZJcx2jYOur/zVDNjy+luBYgHRL2qaZiA2oDwMxxiuxyU4IBicjyeHMhBq1zZNxIONKjxlCGMm0cGX0cyFKcR4FUExjgSI6tx+n4i8AbBSv9x/+KmoVfwG1k9EVWOhFaajq2tsQdGmCQoRwT6WMJBuzpufv9UF2/Ypghs+SN3BKWn9gOpduN/Mfqt6wkKZ4bgiK0huahf8Bo4sB3/TARVWDgQMl9lkuTN9rDeHhf6s07EklEJ1oe2 TAasr/Yu PVIjSVGZ1ZxyianViBnjeuWDfHZr79zdiqroRyTgPbwDQtd5NqrQkvu4uo80dCW2n7XaCWjbBFDHPrCY+AKYf9+l6dfjzO74URmOcbi3YXgvKSKTxyjPJe+gtF6KlFvjMFhZC9c8HhE+sYL2SG/aiaVcbZMZ6iG+p7+JYORajeK4bT6BCEQRmZIA/ZZrWC9cHjbakaCQtdf43EjAFVYLRCOV2WIwQ49Vxcd0YEtnp++mDUTnHJCqW/3XUyqpdBVNJCW4lUXr5Fi6Dr1dg/AhT5iCCNqfada5T39nKFJ0p1xm+ERVvVlaZFdRDvLbQJQcKOzxBJhnotZqH7pE6xMRc8zH4BLgg9uIeq0P0yH5AKHJlvTi7posrbqucaG1xvGhHbBEWXkVQGaD8xUmwJ4FEmOc8iuhLvRi1ZtL5cXpmpwFSuQPUB/lzCm+5DZZe9iIg63HE 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 16/12/2024 16:50, Dev Jain wrote: > Scale down the scan range and the sysfs tunables according to the scan order, > and isolate the folios. > > Signed-off-by: Dev Jain > --- > mm/khugepaged.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index f52dae7d5179..de044b1f83d4 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -564,15 +564,18 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma, > unsigned long address, > pte_t *pte, > struct collapse_control *cc, > - struct list_head *compound_pagelist) > + struct list_head *compound_pagelist, int order) > { > - struct page *page = NULL; > - struct folio *folio = NULL; > - pte_t *_pte; > + unsigned int max_ptes_shared = khugepaged_max_ptes_shared >> (HPAGE_PMD_ORDER - order); > + unsigned int max_ptes_none = khugepaged_max_ptes_none >> (HPAGE_PMD_ORDER - order); This is implicitly rounding down. I think that's the right thing to do; it's better to be conservative. > int none_or_zero = 0, shared = 0, result = SCAN_FAIL, referenced = 0; > + struct folio *folio = NULL; > + struct page *page = NULL; > bool writable = false; > + pte_t *_pte; > > - for (_pte = pte; _pte < pte + HPAGE_PMD_NR; > + > + for (_pte = pte; _pte < pte + (1UL << order); > _pte++, address += PAGE_SIZE) { > pte_t pteval = ptep_get(_pte); > if (pte_none(pteval) || (pte_present(pteval) && > @@ -580,7 +583,7 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma, > ++none_or_zero; > if (!userfaultfd_armed(vma) && > (!cc->is_khugepaged || > - none_or_zero <= khugepaged_max_ptes_none)) { > + none_or_zero <= max_ptes_none)) { > continue; > } else { > result = SCAN_EXCEED_NONE_PTE; > @@ -609,7 +612,7 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma, > if (folio_likely_mapped_shared(folio)) { > ++shared; > if (cc->is_khugepaged && > - shared > khugepaged_max_ptes_shared) { > + shared > max_ptes_shared) { > result = SCAN_EXCEED_SHARED_PTE; > count_vm_event(THP_SCAN_EXCEED_SHARED_PTE); > goto out; > @@ -1200,7 +1203,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, > pte = pte_offset_map_lock(mm, &_pmd, address, &pte_ptl); > if (pte) { > result = __collapse_huge_page_isolate(vma, address, pte, cc, > - &compound_pagelist); > + &compound_pagelist, order); > spin_unlock(pte_ptl); > } else { > result = SCAN_PMD_NULL;