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 0F4CCC4345F for ; Thu, 25 Apr 2024 08:51:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9374F6B0088; Thu, 25 Apr 2024 04:51:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BD566B0089; Thu, 25 Apr 2024 04:51:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 736A86B008A; Thu, 25 Apr 2024 04:51:21 -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 52BE86B0088 for ; Thu, 25 Apr 2024 04:51:21 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id F37D21C1679 for ; Thu, 25 Apr 2024 08:51:20 +0000 (UTC) X-FDA: 82047435120.30.526D561 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by imf14.hostedemail.com (Postfix) with ESMTP id 236C610000F for ; Thu, 25 Apr 2024 08:51:18 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="PzEaw07/"; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.210.181 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714035079; a=rsa-sha256; cv=none; b=UphENfkghgHHVk19PyPayhKhajjs0sukRjn1SD8sEZd5vB4ThP44F1SYXklRtWPvwOKH6A PwJk0Eozn8/leNjCWFcQNMMyy8Tk20FQEgIGdt3g19+ojJO1QVOFqaajoNegnUce3aSXk2 Z4ciZy0f4Bkhs7697hMPoxH5nMLjS0o= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="PzEaw07/"; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.210.181 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714035079; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Vl8rW2P7HEl/Ypq+RoNZ5toKYl3n27Whut7rMt4auOQ=; b=7Pnk9viqGU5+syAHBuYysJyilxv08r3lZHmynv8AkS7xiAIdLFYGiZEbjEF0HqaQ3Pffbj Y3SOJCK2dZlfo6Ahpl/UexcKKoRQPRcRHjGTuAhdx74qbXRJAPepJk+m3kBpLprXkQd8Rq 9l7n7xyRRjwSVUYt5r9SVHMIGrnuwAo= Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-6f043f9e6d7so776179b3a.3 for ; Thu, 25 Apr 2024 01:51:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714035078; x=1714639878; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Vl8rW2P7HEl/Ypq+RoNZ5toKYl3n27Whut7rMt4auOQ=; b=PzEaw07/u8gm8uUEzD9TwBU9dDoGxKoyI/nal1DAytLYaDmR8fWgrxz9Ey91DkZgyL 1OplBhb1ETfTT/gayD/EMnLsGOspMDQSA4hboG2Yx4XtC4ottQtmX0yrQ3GU1kky3L6X obA6Fs02tUI6o5DeXZQGDFArewvYy9yAga2obn4w+OoHW2arvJ1tYYIRqIuMtcGQDb6M LYWA/psAjou7Nk8CUDsxMzUv627aG7CP7rxRAsRr8hJ3E+MoGre6KGRlDyzKcn7f2E7M y/ZTHVIaWhROl9TJmdFIPxfHwJCTlIAiTOVqD1DYkTjF6xe25RreFlQiv80o3I1lIFAP swkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714035078; x=1714639878; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Vl8rW2P7HEl/Ypq+RoNZ5toKYl3n27Whut7rMt4auOQ=; b=ZB34r9FT19t3z6q6Uu7R8QKQ2dD8SISLeeKuIFT1ZwYmgiHNoFVGCE43UnsRdU3Ljr snyBMm0fW1QY6zZcv9VuN96kmf7F1ZCMAD/QJgSFj5WNj3WvslOTfcB1ALKfxt2IYxb8 OhhUGZBhDpRH9Ln6M8ILlEaF37fyeEm70D8oDap0hwOgos+oFywOZ4qn88DEtPX40JEP L4mnB7T1+E3Z6DHjY11j36BbKc7RZ5oQ2m3Mf3qwdn3FhKNXSiE09HncJBETO9E1PDj3 BtV+vHejT1gyQDx8x9hi2/crPHhQbZ/axv74aVZVbGiXQp9TxnMO1945csCRp0FXdUET w6xw== X-Forwarded-Encrypted: i=1; AJvYcCV8wdV8DuTlI8PqCzEITQ6EhnNReiuHU0YYuYDc52YuLDgnKHdqLUGinaLvkYCE4XtU+EDT75xZsCJQI8jWF4c0Ykw= X-Gm-Message-State: AOJu0YxbsenuyKOcwnYmTEPjDrz7d9zNQfDgUUD4sFKD0PTrY0klsD2e CLkOge0JR/p9cPFIZgTlM4+wyQStprXZ+sSW8VRGUlLC2pnvJjC0ro5wKAuV X-Google-Smtp-Source: AGHT+IHDX6sdZrvZkxaCoo0VmJnhVORLaihIWpzeuSV1kWLK87UQ5GYEwi9sToqIQkLdlYAJLx62xg== X-Received: by 2002:a05:6a20:12c6:b0:1ac:3b5d:94b3 with SMTP id v6-20020a056a2012c600b001ac3b5d94b3mr5794669pzg.2.1714035077796; Thu, 25 Apr 2024 01:51:17 -0700 (PDT) Received: from LancedeMBP.lan ([112.10.240.252]) by smtp.gmail.com with ESMTPSA id s23-20020a62e717000000b006ed045e3a70sm12676544pfh.25.2024.04.25.01.51.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 01:51:17 -0700 (PDT) From: Lance Yang To: david@redhat.com, ziy@nvidia.com Cc: ioworker0@gmail.com, 21cnbao@gmail.com, akpm@linux-foundation.org, fengwei.yin@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, maskray@google.com, mhocko@suse.com, minchan@kernel.org, peterx@redhat.com, ryan.roberts@arm.com, shy828301@gmail.com, songmuchun@bytedance.com, wangkefeng.wang@huawei.com, willy@infradead.org, xiehuan09@gmail.com, zokeefe@google.com Subject: Re: [PATCH v2 1/1] mm/vmscan: avoid split PMD-mapped THP during shrink_folio_list() Date: Thu, 25 Apr 2024 16:50:51 +0800 Message-Id: <20240425085051.74889-1-ioworker0@gmail.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 236C610000F X-Stat-Signature: jq3iieghe1ggtykfy49xty8tjzxj6kkf X-Rspam-User: X-HE-Tag: 1714035078-49850 X-HE-Meta: U2FsdGVkX19OT+9KimzFVCnYNF90J/CqgfEbbd8etGi1rp6PFDI1GaDxU8qSC5PtbMbZ6XO0fsntANe3Zs/8Hkfb8J5tyfqVD5D3Q0/043cTNYDubJEJdzr/yvd/mHy3ihA719CX4vr+jU4ArkKmhS2VeZxjp1eqJ5gvpl9h7beHBA9xxLkoG5O0uRwlvULwoDFOMdRIKTdz9dWn9iVv7AvMcUlVhjm5qWM0BjSKY2uQ24WF50zp2QCkNgfCzpoIwsqLg70a9iEwYTyrnWF8wF26lWPb+YshrNGJ/M8Tp2z3haQPbTJ8QtTOpWVvaNhKXcIC9TmbLqt4DBumfxPAGoRcoedsiGLUadC5VZ26J6jhXfpYMC4yRX569O2liZVapc6WmW38f1sqA71pXvisEcU+/g5M6nrI+7oL9HalU4ig02tvI7PGJvryDh8wGYvYM6q4Gvv2shLzsgXFiSgCBYv/Rtuhkmbcxep7szsLxOnslxnlYGHvmal9RKgw7vecTyAvT3LEj5dCgOU1AzpEYG8zoB0SWvJZbxmKQD8MgMjG8w/cGW4BC8hSfu1CwTRaAirwc5ou3fTriCGwAsLhTs/d84r3sySWZDN3joHd5gCQU9+7g+NRhkcyUVrpzIcNb1AJ9QD7s3OjQVE1E+5FwqIEHlDe8q+YOL3Ai9AEcdn87bYsqWQEhrOxsSam9jvHpdGZr+EAsrBLYnBSMW5YbhDn7gV/d8zJbCja6mEARkRX4CiQeL4jjpe2xb6Eetr4ZkeQYDqjyYupNRCpnceaTR8xithRqT7DKf4Huy8soHH8kymPJ33+RnSSkT03m+33Wkg19PgS4gflYwVSlPqgonlpfS7l3X9SFMEjvh7mk6zKZhLgyneEm2DYU0Kue8ieDA+/s8L21IXn1IbSamd5ttGmmabG/1/Nf1/Y0Qt3pTX59T0b7GHqyoI2oFTo1aIrzww+Gm6OVkH4qXtz0CT J6FgX2AM wb6S/7Nb88pxKqZa6paYr8nagfoa0JI+5/W9YKB/yNhWlY+IcVmBlhkD99OWxG1VEM0N3unDvbSIChsBKqu9ShMX7Soi810tWj6JiWExr1WqlW4ePlpYloq/xciCWqZriu4HMbbpDr3YjZzS1d285c8RAPd3ikjzbD2FGvcz0UBnERXbLGoZQP7MB2//cpKGSYsr/r7I368CkBamELSvYu0wRcyWugELhneiuhMX950S5nMt8+YyYUwPzDtxV3eSc3FC8HGqU8QvuSyLs+s8LgBhWnNETiw8ZbaQVo/qwAgI6NoilfkdBlkUkGtwAZi4TLEkbGbTtF0YrFsAmYHGMe8Up/BIVddb5EnBVcKDiN1qAObpxk2mz/YqabAiGMTp4F+0M/raTL3BZljmIYq/+01WEGz9DTaIxhcXm95mBbDuLLf0Avcnhme5CqpNViIPepBYa6rfXOWr0IcyNnbY13WXkaw== 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: Hey Zi, David, How about this change(diff against mm-unstable) as follows? I'd like to add __try_to_unmap_huge_pmd() as a new internal function specifically for unmapping PMD-mapped folios. If, for any reason, we cannot unmap the folio, then we'll still split it as previously done. Currently, __try_to_unmap_huge_pmd() only handles lazyfree THPs, but it can be extended to support other large folios that are PMD-mapped in the future if needed. diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 670218f762c8..0f906dc6d280 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -100,8 +100,6 @@ enum ttu_flags { * do a final flush if necessary */ TTU_RMAP_LOCKED = 0x80, /* do not grab rmap lock: * caller holds it */ - TTU_LAZYFREE_THP = 0x100, /* avoid splitting PMD-mapped THPs - * that are marked as lazyfree. */ }; #ifdef CONFIG_MMU diff --git a/mm/rmap.c b/mm/rmap.c index a7913a454028..879c8923abfc 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1606,6 +1606,19 @@ void folio_remove_rmap_pmd(struct folio *folio, struct page *page, #endif } +static bool __try_to_unmap_huge_pmd(struct vm_area_struct *vma, + unsigned long addr, struct folio *folio) +{ + VM_WARN_ON_FOLIO(!folio_test_pmd_mappable(folio), folio); + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) + return discard_trans_pmd(vma, addr, folio); +#endif + + return false; +} + /* * @arg: enum ttu_flags will be passed to this argument */ @@ -1631,14 +1644,11 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma, if (flags & TTU_SYNC) pvmw.flags = PVMW_SYNC; -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (flags & TTU_LAZYFREE_THP) - if (discard_trans_pmd(vma, address, folio)) + if (flags & TTU_SPLIT_HUGE_PMD) { + if (__try_to_unmap_huge_pmd(vma, address, folio)) return true; -#endif - - if (flags & TTU_SPLIT_HUGE_PMD) split_huge_pmd_address(vma, address, false, folio); + } /* * For THP, we have to assume the worse case ie pmd for invalidation. diff --git a/mm/vmscan.c b/mm/vmscan.c index e2686cc0c037..49bd94423961 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1277,13 +1277,6 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, if (folio_test_pmd_mappable(folio)) flags |= TTU_SPLIT_HUGE_PMD; - -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - if (folio_test_anon(folio) && !was_swapbacked && - (flags & TTU_SPLIT_HUGE_PMD)) - flags |= TTU_LAZYFREE_THP; -#endif - /* * Without TTU_SYNC, try_to_unmap will only begin to * hold PTL from the first present PTE within a large -- Thanks, Lance