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 9F96BC54E67 for ; Thu, 28 Mar 2024 08:48:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3870D6B009E; Thu, 28 Mar 2024 04:48:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 337366B009F; Thu, 28 Mar 2024 04:48:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 230A66B00A0; Thu, 28 Mar 2024 04:48:15 -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 02CF56B009E for ; Thu, 28 Mar 2024 04:48:14 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C5E9416103E for ; Thu, 28 Mar 2024 08:48:14 +0000 (UTC) X-FDA: 81945820908.11.B10A481 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf06.hostedemail.com (Postfix) with ESMTP id 0F3C4180009 for ; Thu, 28 Mar 2024 08:48:11 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711615692; 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=Y1Dn9ykcsV3cGVDefyvl6FiNo7n0eYqaOpMWU8LlgRc=; b=WrPmjp7j9EWsLRbTc4GePkmmp4NIybuvwcBDTnzGeFaUk1KKO3qTMyoBtTKs1qpw0n4P3C wYtFrym4QjZKeEDCdMemVOuvUInn76GyNK2gx8bq0r5r6IO0YzgFTP4qnYb1TDGlv+0Kye puSCTN+SEKdigMJFInFjZjTFCDDaYRw= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711615692; a=rsa-sha256; cv=none; b=oEcKniiO1Opkck1q4LdW1YdJHFA81gEl73Q7g+6YD7D/bsJn1yXCKr49vEcknqTF4QP+bV Tsf37XZcipFXkStTJ6ggMHLOpbVH5Jl41xqpbyL/Vj1wpZj86ZvjYPEF+Mn7IA0QZ935n6 nJ83B+jBYCp/M2zVJvmL2CHSAFX0X4A= 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 015E12F4; Thu, 28 Mar 2024 01:48:45 -0700 (PDT) Received: from [10.57.72.121] (unknown [10.57.72.121]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AA9463F64C; Thu, 28 Mar 2024 01:48:08 -0700 (PDT) Message-ID: <8d28bf39-041b-40f0-90dd-332e69f6c50d@arm.com> Date: Thu, 28 Mar 2024 08:48:06 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 5/6] mm: vmscan: Avoid split during shrink_folio_list() Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: Andrew Morton , David Hildenbrand , Matthew Wilcox , Huang Ying , Gao Xiang , Yu Zhao , Yang Shi , Michal Hocko , Kefeng Wang , Chris Li , Lance Yang , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song References: <20240327144537.4165578-1-ryan.roberts@arm.com> <20240327144537.4165578-6-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 0F3C4180009 X-Rspam-User: X-Stat-Signature: 6xipded7re8w7n1oadbsgtuyzkemxf69 X-Rspamd-Server: rspam01 X-HE-Tag: 1711615691-281448 X-HE-Meta: U2FsdGVkX18UeBf+F8dZcHnhfBu++iE1lB/hi1GjR2MsqRf4jkMAhnTQayZyieWsjxdEa16P29Zlz9Z3b/2G6xhs1Cy4VfYfyOEjyudqxB7SWbsr/VbdT2VjfrGl0FcSfBqZlwVaijPlJSMdHl4RczEK1ga3L/1iplmElfOBuuUGEokzqVO2++bRoakPYdrhg6qy1LAMLkd432ZOJ+6ukmp2+VKjELEW0OIkxqPBAOyUBiwCkkxz7RFPHLF7IPFzec0REL+bgsUQy+CPd9ANbwX5NXZAVRmYUkTty7U7eBDKRbnJq8i6Lrb1KCL+9HbOcs/hqEJnmUrTpEx4H9NWkyBL3qAM/Ku0aW/jt+XXk5VZmjLxk0IyzGubJ8vjnf2jOqWqkCRgsClIdP3O9ySAeClTn1XwbHTINS0PpzvQYVMCNdhS73AGHrvyQ5FhmxjVzfgQ7sUZFhEjm9qtr12FagRp5rtB1prMtu/fgQgRxP3iFdPnjOoYspMWEdJNKIgWC3/ZS49hzIpdQAJJQTuCGYHzj629rIplXjpOwKacsSi3C06U8QVJ6p7tJzyj+WCz0Wzq7OAKes1QANbwPy6y4Mq7Des/kDTrPS9/R+lkCTSkfeRiN3Hr0oCKGmB/RHuL+eDUCpDkJ8yCNLcqkcccb5LJ5f6c8rnCvcj6A8VD4Nu9yxYXkORByBjJASlJ6gwiGSj2Q6rDvUCbyG8tuXkjpHe2xiOsYLT2F8sXjFVFyIBXfUNyUFcj/lSPAaaftxDoU7N3x16wRfpMnywJS2snMYDXjAv2eRgg4R0jrQNW3BK+RO6PSZ6JvsLACLvYZftYIIeBHN2WhwZmqozqxuwy2MMmQbd4Apo5Cevpstk2SvXeIDSkQj2z/MYWhIV6PnuLlBEMicXhfkuoyVoqIgpHlJQpZO7IPhLdg2LtJnvC8x/EYu7OoBYVSIRVNZq1//GQw9ramPQSGxFjZaa6v16 MzwpBu+V fVPiEkYtxx+HrpTLIwvHlyK1q5HeDwt4A4BJZ87Hjwi7M/xZP+EzW9iJLnPG7OIRKJxdpgANdwvgmkCVtJ4UMI5xhdW2FncwfUhSlq54/xPljHqElmmKZSkcBxCOhXaavQuNTymw7qpY9xOdONQimQZ6sNNmT5UHK3cXmbGEqu7hFGiXOsBwWS1TXNFugmO31UheSEYXHqWmtZjiaJL2otcZcnvpyWj8MVTrL1leHxRQ+uS17aQYNn/+jvvqmD/1Bl1yFmL7thMWTSKrz/pESHFyxB1xEvt2QTnmq792JZZL6XIOIxU7xxdQN6NDHA2D8F0VHVJBHEhbgW3uf+toO04qS8fodLZZ0JeffvnvRi3oNgco= 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 28/03/2024 08:18, Barry Song wrote: > On Thu, Mar 28, 2024 at 3:45 AM Ryan Roberts wrote: >> >> Now that swap supports storing all mTHP sizes, avoid splitting large >> folios before swap-out. This benefits performance of the swap-out path >> by eliding split_folio_to_list(), which is expensive, and also sets us >> up for swapping in large folios in a future series. >> >> If the folio is partially mapped, we continue to split it since we want >> to avoid the extra IO overhead and storage of writing out pages >> uneccessarily. >> >> Reviewed-by: David Hildenbrand >> Reviewed-by: Barry Song >> Signed-off-by: Ryan Roberts >> --- >> mm/vmscan.c | 9 +++++---- >> 1 file changed, 5 insertions(+), 4 deletions(-) >> >> diff --git a/mm/vmscan.c b/mm/vmscan.c >> index 00adaf1cb2c3..293120fe54f3 100644 >> --- a/mm/vmscan.c >> +++ b/mm/vmscan.c >> @@ -1223,11 +1223,12 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, >> if (!can_split_folio(folio, NULL)) >> goto activate_locked; >> /* >> - * Split folios without a PMD map right >> - * away. Chances are some or all of the >> - * tail pages can be freed without IO. >> + * Split partially mapped folios right >> + * away. We can free the unmapped pages >> + * without IO. >> */ >> - if (!folio_entire_mapcount(folio) && >> + if (data_race(!list_empty( >> + &folio->_deferred_list)) && >> split_folio_to_list(folio, >> folio_list)) >> goto activate_locked; > > Hi Ryan, > > Sorry for bringing up another minor issue at this late stage. > > During the debugging of thp counter patch v2, I noticed the discrepancy between > THP_SWPOUT_FALLBACK and THP_SWPOUT. Ahh good spot! I had noticed this previously and clearly forgot all about it. I'm on holiday today and over the long weekend in the UK. I'll take a proper look next week and send a fix. > > Should we make adjustments to the counter? > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 293120fe54f3..d7856603f689 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -1241,8 +1241,10 @@ static unsigned int shrink_folio_list(struct > list_head *folio_list, > folio_list)) > goto activate_locked; > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > - > count_memcg_folio_events(folio, THP_SWPOUT_FALLBACK, 1); > - count_vm_event(THP_SWPOUT_FALLBACK); > + if (folio_test_pmd_mappable(folio)) { > + > count_memcg_folio_events(folio, THP_SWPOUT_FALLBACK, 1); > + > count_vm_event(THP_SWPOUT_FALLBACK); > + } > #endif > if (!add_to_swap(folio)) > goto activate_locked_split; > > > Because THP_SWPOUT is only for pmd: > > static inline void count_swpout_vm_event(struct folio *folio) > { > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > if (unlikely(folio_test_pmd_mappable(folio))) { > count_memcg_folio_events(folio, THP_SWPOUT, 1); > count_vm_event(THP_SWPOUT); > } > #endif > count_vm_events(PSWPOUT, folio_nr_pages(folio)); > } > > I can provide per-order counters for this in my THP counter patch. > >> -- >> 2.25.1 >> > > Thanks > Barry