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 7E554C83F17 for ; Fri, 18 Jul 2025 22:35:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A96B86B008A; Fri, 18 Jul 2025 18:35:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A417D6B0092; Fri, 18 Jul 2025 18:35:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 92FCB6B0093; Fri, 18 Jul 2025 18:35:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 818DF6B008A for ; Fri, 18 Jul 2025 18:35:41 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D5BCA1D8872 for ; Fri, 18 Jul 2025 22:35:40 +0000 (UTC) X-FDA: 83678843640.18.B5AE5F8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf23.hostedemail.com (Postfix) with ESMTP id A940A140003 for ; Fri, 18 Jul 2025 22:35:38 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="X6RLA1/W"; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf23.hostedemail.com: domain of npache@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=npache@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752878138; a=rsa-sha256; cv=none; b=u6qV5Zw4LC8HqJy8sWSLeyY87IWMh/fefXk6Cd0HMbbFZA6VqM8YxdXr9vC98Mk7VA/LeS 5TaKA+3DLkTWqXTASkMRSihTixDWZg42kY7I+ONePYRKjlbsRVnT82V46Xj8Dk5b8AMcY2 5MEL/OFC8kmkCDzpWeC+Q+nJUJFFMoE= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="X6RLA1/W"; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf23.hostedemail.com: domain of npache@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=npache@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752878138; 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=MeNgxF5UCBfEjQZZt/3dunIhv4OxleQp/vJtVa2lu7w=; b=4RwfIjWhnRqKWypinTPZsxBIucmgj/9NAhWvL/L+RON18OlT9Hj8XDf0WWP0jss7GZ7jzO Ww+GRbhJRLcgcIpe3etj/um9q6CSaLasMdf7Yo/RgdPAyb0Uiyp+KjWsKQDTo06BSAkZTb 3Gxz3f7JNh3gBPt5ooBmTPyzt/K5TPw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752878138; h=from:from: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=MeNgxF5UCBfEjQZZt/3dunIhv4OxleQp/vJtVa2lu7w=; b=X6RLA1/Wtb6cW1eUM8B/AmybgMA9iOF9BztFjzGwIQWwHz0pzHY5TpBYPQ/POMNxmJxwbx bpxnYJbIoXfvNntpbIX+ovDORJf+hQolP99TtEBs03z8R7KkVHK1e3oLtZ4ThxX7PiZ73Q OwLEP7w5zzzj2RleOQU9Cax1CYL51UQ= Received: from mail-yw1-f198.google.com (mail-yw1-f198.google.com [209.85.128.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-141-1_9hxRFuMcybSz-z66sb2Q-1; Fri, 18 Jul 2025 18:35:07 -0400 X-MC-Unique: 1_9hxRFuMcybSz-z66sb2Q-1 X-Mimecast-MFC-AGG-ID: 1_9hxRFuMcybSz-z66sb2Q_1752878106 Received: by mail-yw1-f198.google.com with SMTP id 00721157ae682-711a46ce053so33547697b3.0 for ; Fri, 18 Jul 2025 15:35:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752878106; x=1753482906; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MeNgxF5UCBfEjQZZt/3dunIhv4OxleQp/vJtVa2lu7w=; b=ehyhCo5dXLCS8vfeAlgj+5B7YESU8lMkmBe+uMPF2XT5SVUJjYC6Zg3/Xvb9P5+bTc WARsXvtGRPWa7FlahVPCG0Jqufa9D8G2dfyOToWV0JyoT9FdM0F5V9fiqSO4+DeIR183 GZKtx6Z+rOY8qp/I6/K6J9E95NxZdwQAEl82NyA1BmULTm+J8CMbqIdFcpvNsAoXNauv TiPbiliojW2bb473q5ECoEW+p/QzDPvZy11JoPbjPn+EuR1nzFmwEIIyR90r9lCT6DtN oQNAzaCWeGIr7c0z2Z+wYhYGJeDzzMXp7Ayet6zsVfqKXuG7wj+ivOAlHF2FddPGIZ1i 3/eA== X-Gm-Message-State: AOJu0Yz1t+Ngiwy0j0kL1o6nmxMI9t0/G8/hhbAHcSp7U4EGZA1FitIn Uv2RqfpUUdZbpg4eDB73/dlXJwxrphKNloy59F5W8qaG4V7t19/NGsTziuAIn6m0Io6QrpsDXQx es35b5iBhmAf8W6EmZpde2RFnwKOe0+vHihrKqX5xNk4ASeueA3clcgrpHaFZrFCS9pP2XyESLU DbKghU/Own+4euLGGPYZTiyKdhjQ4= X-Gm-Gg: ASbGncsT/b8QdhJIiFq68JivvUA4ZleGA8R8NxXe4UKe3nYKst7nspVjQ3HwUh8UgDu +OmjfsR+XWLI1fuHb9Bo+f3BJDdzPYOnqivcw2ETxMdWTX07xCIvHbeFqeLLvfBjWTB7JnaXmek OZVlrjVKoSnMHE/w3yd1l8mP0= X-Received: by 2002:a05:690c:3381:b0:710:f39f:4d43 with SMTP id 00721157ae682-718370eebf5mr151640717b3.7.1752878106340; Fri, 18 Jul 2025 15:35:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFtDqNhAwLC/pZ0SZYm/yFdraL0W/1wyk988LFZ3cFbmaM2zMi6HIsy7NS2kuQoOaJh3+sk3INvjvbsCfYcvCw= X-Received: by 2002:a05:690c:3381:b0:710:f39f:4d43 with SMTP id 00721157ae682-718370eebf5mr151640437b3.7.1752878105985; Fri, 18 Jul 2025 15:35:05 -0700 (PDT) MIME-Version: 1.0 References: <20250714003207.113275-1-npache@redhat.com> <20250714003207.113275-10-npache@redhat.com> <85b2cfd8-4aeb-4e98-8065-b6594783de62@linux.alibaba.com> In-Reply-To: <85b2cfd8-4aeb-4e98-8065-b6594783de62@linux.alibaba.com> From: Nico Pache Date: Fri, 18 Jul 2025 16:34:40 -0600 X-Gm-Features: Ac12FXxkomg9g29JxE95wSIPOgeRNYVw8gHZYEJGmZnbAnxw2JgSYGWV08AFQqU Message-ID: Subject: Re: [PATCH v9 09/14] khugepaged: avoid unnecessary mTHP collapse attempts To: Baolin Wang Cc: linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, david@redhat.com, ziy@nvidia.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, ryan.roberts@arm.com, dev.jain@arm.com, corbet@lwn.net, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org, baohua@kernel.org, willy@infradead.org, peterx@redhat.com, wangkefeng.wang@huawei.com, usamaarif642@gmail.com, sunnanyong@huawei.com, vishal.moola@gmail.com, thomas.hellstrom@linux.intel.com, yang@os.amperecomputing.com, kirill.shutemov@linux.intel.com, aarcange@redhat.com, raquini@redhat.com, anshuman.khandual@arm.com, catalin.marinas@arm.com, tiwai@suse.de, will@kernel.org, dave.hansen@linux.intel.com, jack@suse.cz, cl@gentwo.org, jglisse@google.com, surenb@google.com, zokeefe@google.com, hannes@cmpxchg.org, rientjes@google.com, mhocko@suse.com, rdunlap@infradead.org, hughd@google.com X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: GcUWY_p5q9iI7r4Pc78liLM_QKUWfGBBwfwaBZ_WUAw_1752878106 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 3e5srorx45788trzm6xryt8yef8afg4d X-Rspam-User: X-Rspamd-Queue-Id: A940A140003 X-Rspamd-Server: rspam02 X-HE-Tag: 1752878138-707521 X-HE-Meta: U2FsdGVkX1/Nu4Impbwiv963o0jgy0OTYhbVnoDU4L0SRgjOBu+HwGmcDf8E1ykPbCbn6DBCk7qE0wjWGM8TxFhCZF12y8vVNHJ5/oWWowWWcwVNwj1mqwhKG0QpMTSVpaVgoCmN+xEcpLDRR+6/w8L8Ky+wCnjxZ650620ysOlVRY6AuwBzCUcw8SUGNgWQal07nJbhdNta4OxBzB+e/LuBqBNW2r+85+e7jyLJRyF50PvIZ/zjcb/K0H/uddT08rWhTSOlVwI1FgnMiRT241hUVftWl+ULeiNkVzxrKYQQAwjPxgCuGdFrGdkONWb3T8bFV+HglAgnnIB6HM6SiHEO2QcpcJGyPClNP6s2hQoJcApQ0pw2TG7G7F7rq1knvDV4b67N6mrqHb5spTTrJ2ghs+i7LzZYJEwK5YBRF0zNMKwbJv6PYFZ1fa099OSmZvJmyRFk8M24bMdEvPy0O0hQk8lufXeEY2KxtanUhro7zCUgLoxj4QiM8OORO8j77X4q6cc3GQq7PyQTgXtXkpWSOUPoaUYm7LuNfE1IGJajudbT4m5MOVoHut4Btu5WHo5sXTm0PKb9FeyyBHxKsMjcAvm7Mxq4hbRwEJJibZdtgHnrUQOTZjhkjDmmq2hkpLBllWbYxExXCEIUPYNk+VfX95z4L+P0NzC4wjtWWbdI+7XzXVPffReQgoNniwHILGvBMCKmScg0T/jBBPBapNV8hioiyUp5Qe6o7ugHPH3XnuujhgvJ+bQektc4XyZVvWcTZv+bsZ4gPv+81+wON9JUoWMeFmeDls8WgwSVN6avbBFbeLASVWh9+jtd7K58dXr7RmX/TddvrMHhJv4VOFmLYUUjvMBq1cgzqXgSpdsfwIvUUlTAtmXXROhQgvXx0uBl/0MDPBBK0NsRZnqRFfwdpkzUgzWP/EoWf4iD8XumKQlVur65sZAaLLK7+sQJrsBGYGd6cWsvTDTl+Vt XzRBv62/ iTOYZHZnOeedIhX0OlWWHzF7c9an3Ju5f0fn+eAIBQeb0vAxdMtDFhBVG0ClJQdSxuHeC2w0ATQNB8XaeNwmH8G50jFGb7iaqBcJSXkR5Oq1Khhwm7MGb953Y3yu9UwvIExi2Hs5NVG1ygKshbrv3xxyiBMNWR15EAgzDJbwghRajoyHOzlJfWDTdVWAZvAB3bqMCf+omuu0G+pd9qxtLiz2yUgKIYIWYVD7/HIKJAdT8nx/11ME3gRHKi7t9uN1OcL1QKKCxZuFhMU+MGPMh8KOhaaiuzHfWAXdlABo5svfTiURNHBkuB5Gvx3qgiId40kmxZbB8eGgLwedHPf0s6ejtAEg1ktGowmlnZK+IwnRCJ3m2eq7ryuEnIg== 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 Thu, Jul 17, 2025 at 8:15=E2=80=AFPM Baolin Wang wrote: > > > > On 2025/7/14 08:32, Nico Pache wrote: > > There are cases where, if an attempted collapse fails, all subsequent > > orders are guaranteed to also fail. Avoid these collapse attempts by > > bailing out early. > > > > Signed-off-by: Nico Pache > > --- > > mm/khugepaged.c | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index a701d9f0f158..7a9c4edf0e23 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -1367,6 +1367,23 @@ static int collapse_scan_bitmap(struct mm_struct= *mm, unsigned long address, > > collapsed +=3D (1 << order); > > continue; > > } > > After doing more testing, I think you need to add the following changes > after patch 8. > > Because when collapsing mTHP, if we encounter a PTE-mapped large folio > within the PMD range, we should continue scanning to complete that PMD, > in case there is another mTHP that can be collapsed within that PMD range= . > > + if (ret =3D=3D SCAN_PTE_MAPPED_HUGEPAGE) > + continue; Ah good call, this patch is meant to be an optimization to the formal approach-- meaning there are cases where trying ('goto next') to collapse to lower orders is pointless, but I didn't fully consider the cases where trying the other items (sections of the PMD) in the stack are viable (ie continue). I'm going to spend some time confirming all the potential return values that can come from collapse_huge_page, and which ones belong in each group (goto next, continue, break). This will probably be turned into a switch statement. > > > + /* > > + * Some ret values indicate all lower order will = also > > + * fail, dont trying to collapse smaller orders > > + */ After reading this comment again, i realized it's rather confusing... it makes it seem like these ret values are the ones that indicate that we should not keep trying to collapse to smaller orders. I'll clean up that comment too. > > + if (ret =3D=3D SCAN_EXCEED_NONE_PTE || > > + ret =3D=3D SCAN_EXCEED_SWAP_PTE || > > + ret =3D=3D SCAN_EXCEED_SHARED_PTE || > > + ret =3D=3D SCAN_PTE_NON_PRESENT || > > + ret =3D=3D SCAN_PTE_UFFD_WP || > > + ret =3D=3D SCAN_ALLOC_HUGE_PAGE_FAIL || > > + ret =3D=3D SCAN_CGROUP_CHARGE_FAIL || > > + ret =3D=3D SCAN_COPY_MC || > > + ret =3D=3D SCAN_PAGE_LOCK || > > + ret =3D=3D SCAN_PAGE_COUNT) > > + goto next; > > + else > > Nit: the 'else' statement can be dropped. > > > + break; > > } > > > > next: While i'm at it i'll change this to next_order to be more clear. Thank you !! -- Nico >