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 A87C4CD1284 for ; Tue, 2 Apr 2024 22:54:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 436F86B008C; Tue, 2 Apr 2024 18:54:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E7206B0092; Tue, 2 Apr 2024 18:54:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2AEBB6B0093; Tue, 2 Apr 2024 18:54:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0D21F6B008C for ; Tue, 2 Apr 2024 18:54:15 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id BD1A01C0B5A for ; Tue, 2 Apr 2024 22:54:14 +0000 (UTC) X-FDA: 81966096828.24.938D6E1 Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) by imf02.hostedemail.com (Postfix) with ESMTP id F1B7580008 for ; Tue, 2 Apr 2024 22:54:12 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nhGpfVD2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712098453; 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=oaCsSLFI4AruxYR7+hfoQQpqqA7CBzp2msWt+WkiOg8=; b=v77rYIuRPYCjvGaAE0GxzjWJkVewSro9BJ8eUbaSbqCy0fZ+i47eYCS83GBaRlPu1FT8/B IL2VyxRP1OjzTYNmjLrYHpauVqqdlSEc70ZfTv4lDhoQDk5oDho89aZl/ACM3KxHMCtjmg PrRPKwwDQDrD4fQi5Z0d7WKkuASfyX0= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nhGpfVD2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712098453; a=rsa-sha256; cv=none; b=SZeW+WSGfmZnhXki6nh5gSCovDdp/N0nlo9uQRrGJXxsLmNVPjgMEbVk/rSLcm9v5Xteu0 onxwFM5qJ74ZCDb2KBWJWAoXVCADR9f7QqdEjb181OuqpaNlOQKIUY+9d+VDijACTM+WSH 2e9w4CZ+4P4dSIbkci/EKXNzRzaQtVM= Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-4d43a1f0188so2041567e0c.2 for ; Tue, 02 Apr 2024 15:54:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712098452; x=1712703252; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=oaCsSLFI4AruxYR7+hfoQQpqqA7CBzp2msWt+WkiOg8=; b=nhGpfVD2onpZ0R88wcW1UNWVDYbTTDMexOggVGzV0bcuHupSASSO1rnVeTLVisjJYa DAaFbquOF6uKAAfUxQvIa4A2V4wJWxtrAHsd5xYLciEKFlmNgsvqKVFKvi9AA8myq8dp 46MrJqJreMBpH28vOExTq8ZEAfhxAyD5VvCXNqSsvIxgttXtNlP7lbH5E9hgGRy35QAd cWclIiOYi/QtSFCmwbcoClivTeKK89xl4UZEQmFV6lG+gGqiFuu07uBa1PdTxqFmD3Cr 73MmzzkwLN0dQFlc4C1ihPrcok4VstgiKMPoLR9z4Mkf5F3uFxmdjJBx80IltLNHPB41 6zlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712098452; x=1712703252; 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=oaCsSLFI4AruxYR7+hfoQQpqqA7CBzp2msWt+WkiOg8=; b=cA3tXN9kReB6Qh4YMoHGaLeIqWrudniVt6+7YUbxPw8nhm7HPxG9ePUKO66Asx8Org My2styoi9RLyEqnV5IXelaKUUOvrsnrrgKLNQYKHfm6U+nW06lk0ljQRDyzUmr5049jo eVXModAn310wJ411MunB7mHMUo2nGxIioR/73vMnH2paXyCtQFvPxK4FGN8ehL7oJETz 2MjlX/vS6/Vr6Hv9BVAhWa1+YWLeX7vzzbKcW7nTsfsWqtm/3U+y7nmj7FeBp3JG93q2 xpsG1ZLbyLowKRPhJr6FeAX/nG7DuLjXKNbRRipNwE0xTkWkzowicvLjTDGYOZ3huqjs hgLg== X-Forwarded-Encrypted: i=1; AJvYcCWybuWZ+nr4m+uPvUqvX8Vk+DOsAcrNfFUIxLhxbKP/6oCj7wMLyRcie5yOKNat/gpDUDVqTrFzlVvc4LL4FSiUNSY= X-Gm-Message-State: AOJu0Yxzsfjl1kMab31jRXb7912NgdKM5RcUfpllG7zaobQphBBu4y/7 Z+zTkIojaSGaXnjgYnrUkCkUf8b08uJdESGb20NI9kfgN5cyfzx7IufWIXdSZt4bLGytPQzI01b Oa58ZF2Hobm7jtSrkXDJ7zU8t1uM= X-Google-Smtp-Source: AGHT+IE5SK/agCNDVab7BHES6qcv591Nd7QR6gkm6qmDioTB9cVi3cwpH7mQGMdj+CBA1CJT15i4BkHwDz+j8E0j254= X-Received: by 2002:a05:6122:1d93:b0:4d3:45a2:ae4f with SMTP id gg19-20020a0561221d9300b004d345a2ae4fmr11937500vkb.14.1712098452014; Tue, 02 Apr 2024 15:54:12 -0700 (PDT) MIME-Version: 1.0 References: <20240327144537.4165578-1-ryan.roberts@arm.com> <20240327144537.4165578-6-ryan.roberts@arm.com> <63c9caf4-3af4-4149-b3c2-e677788cb11f@arm.com> <47fa11db-3c26-48a6-bb7e-5ea59739b691@arm.com> In-Reply-To: <47fa11db-3c26-48a6-bb7e-5ea59739b691@arm.com> From: Barry Song <21cnbao@gmail.com> Date: Wed, 3 Apr 2024 11:54:00 +1300 Message-ID: Subject: Re: [PATCH v5 5/6] mm: vmscan: Avoid split during shrink_folio_list() To: Ryan Roberts 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: uictuhawoitaoo4hjd3g18isoz7z6nmq X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: F1B7580008 X-HE-Tag: 1712098452-144565 X-HE-Meta: U2FsdGVkX1/OFBw4jdvC4/k2N/NllVVry4AkhTj5nrijGj6cM8wP9tGuJC6aT/r1JLQc+FQFZ+qG/YSSmB37DFbnW5222bmjVKtSRZomLHcC7mo9wtQr1cfaa3dHqXCXgUUDkHcdYxZjmNt6rLXq84yyt1/6/fU0m5zSTCAOzRGChYhdaeHkkAj08Q2Wb/no4WooEdkrazQYRhIUgDd+SbGUv8jwmPQLo/QvePtoDhMwhvVNR00uS0joMmwwZMWb0uzcv0pZnvJegI/IyHIAsPrqUBeRioIBUo0qCpexKOVUbD9rgl2zgpVn/7eUNlbMoUGZpfjzp4/2gJFCAziJVEtN70rCoWImrMdohWRcGN+t9wQ2Nm3mxbyxMdTvAFRmVya1lhAcqluC7Qvon8qZ791zDtMsH6HW3M2ZL+ZzepMQcOiKjUD1EDLKD2DhsiMZsRe4U9pt6FjT89bswVFzougBvvmgjIW4W4Ez2LDElWGbS3QGCyLXnTJfPCO2aZPDIbBVbd15yNo04SwBA6pTXGQIZLky1T4Zfg+V3JeIdyBlPC3YlfVJPj4oy4Rtk2uL17mQ4l1zKzb6enzXGfx5P6ZxemQIfUSp1wIWlU/F1uNLErU+A9XQxJpqcjagxwr5cP0cZluzS9Mh0805qKqD5RSL17haE8Qph3MGN9TqwWCl+cOY/fQO32lZ1MGeoDcAbNxrLBSgObNz5UHJvK/kldjakxTf0OHT1zxxUAR8H0WSbw9jPFEdMMFM0e7kOxjxvOmGTYFBBa04ybwJIWsKVBEbxjVTU70Q/JvE7yPunA18n1hdxUbC2HBI7BOEUrFZ4zA84lsSMJPa3gf6EaeN2qITL8U3+Q0iK81o0A00+GSyurOAlTExOoGPdO86buEQhcEETI9tGWb/qNlWK2tit7q2LPJ015n4i+q9OKsoTkuDVD6C2uC6RSLsCokDn2JQtBI/KZiEW0nrfDRx5Of ik1bfCpA dcjo8SUDz4Dd0GKg0BF8qZKdNTQSlueliHKQFJl93nQpmuxvBvUzpEWuN953mtOW7k9gYfZGDTImP7xB2qmte1uPlnonrOwHJ95TWxBeEZMOrS5v24zy6sTnz37wXRRGfKCxBQA9PmWAqwwZR8vNAyeooji/GeXHmDjMakw4FlPGeT5UP5KXvd94cnEHk+nl5ToIV+DzXZSFi54CqbuQZUcokUrs2S9MbaXNLN82UuKJ2Q/P82rxu0jXUE+w2ytHervkdG4MybQyjs+Q/ANh3e2fo5PlzdGYmxVJkeGhtB881kkcv5BfzX8c4AbxvIfzuwJu2wYjWQuTGL7Gg6L1qhaT7gzOPuRIXAQnxkSivnGPoXD90KlrPk1X2Ai0nEuSamm5BXUlJPmLoItx+1ihVDYk/FfL1gap9AkSMgg5XLqC6JbPrKgCIdcFWtAUKiRd8FjK3JtJ1WWFNEpgPkzlw3JT3XBZeRICgR8t2DgxV9nI0WwLwI0esYEO3ry1ad94TkM60FBbGHahiWtP8+cZtlyAPsBTguy89acmoQEKPexfPkGk= 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 Wed, Apr 3, 2024 at 2:22=E2=80=AFAM Ryan Roberts = wrote: > > On 02/04/2024 14:10, Ryan Roberts wrote: > > On 28/03/2024 08:18, Barry Song wrote: > >> On Thu, Mar 28, 2024 at 3:45=E2=80=AFAM 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 pat= h > >>> by eliding split_folio_to_list(), which is expensive, and also sets u= s > >>> up for swapping in large folios in a future series. > >>> > >>> If the folio is partially mapped, we continue to split it since we wa= nt > >>> 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, N= ULL)) > >>> goto activate_locked; > >>> /* > >>> - * Split folios without a PMD= map right > >>> - * away. Chances are some or = all of the > >>> - * tail pages can be freed wi= thout IO. > >>> + * Split partially mapped fol= ios right > >>> + * away. We can free the unma= pped pages > >>> + * without IO. > >>> */ > >>> - if (!folio_entire_mapcount(fo= lio) && > >>> + if (data_race(!list_empty( > >>> + &folio->_deferred_lis= t)) && > >>> split_folio_to_list(folio= , > >>> folio= _list)) > >>> goto activate_locked; > >> > >> Hi Ryan, > >> > >> Sorry for bringing up another minor issue at this late stage. > > > > No problem - I'd rather take a bit longer and get it right, rather than= rush it > > and get it wrong! > > > >> > >> During the debugging of thp counter patch v2, I noticed the discrepanc= y between > >> THP_SWPOUT_FALLBACK and THP_SWPOUT. > >> > >> Should we make adjustments to the counter? > > > > Yes, agreed; we want to be consistent here with all the other existing = THP > > counters; they only refer to PMD-sized THP. I'll make the change for th= e next > > version. > > > > I guess we will eventually want equivalent counters for per-size mTHP u= sing the > > framework you are adding. > > > >> > >> 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_FALL= BACK); > >> + if (folio_test_pmd_mappable(fo= lio)) { > > This doesn't quite work because we have already split the folio here, so = this > will always return false. I've changed it to: > > if (nr_pages >=3D HPAGE_PMD_NR) { make sense to me. > > > >> + > >> count_memcg_folio_events(folio, THP_SWPOUT_FALLBACK, 1); > >> + > >> count_vm_event(THP_SWPOUT_FALLBACK); > >> + } > >> #endif > >> if (!add_to_swap(folio)) > >> goto activate_locked_s= plit; > >> > >> > >> 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