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 1BE55C54E64 for ; Thu, 28 Mar 2024 08:18:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 76BF36B008C; Thu, 28 Mar 2024 04:18:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 71C5C6B0092; Thu, 28 Mar 2024 04:18:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5BCFE6B0095; Thu, 28 Mar 2024 04:18:56 -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 37CD56B008C for ; Thu, 28 Mar 2024 04:18:56 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id EBF36A0FFD for ; Thu, 28 Mar 2024 08:18:55 +0000 (UTC) X-FDA: 81945747030.13.72142B1 Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) by imf29.hostedemail.com (Postfix) with ESMTP id 387A8120017 for ; Thu, 28 Mar 2024 08:18:53 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IbWRYcU2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.51 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=1711613933; 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=faWC1DJFvByP4iBBdzTYQkGTB8nR36Q4Xhop1j6+ZC8=; b=Tqpcpb37l+k8uTxKT5hXb3xYi80QOgDZ9yUL34/BPqAjFb8sgprXXrmAj+zkAzDHtOY+Sd rdOj7SNTsmRnpH8h4h8MH51e1gnsODUQclkROsnIoaOjiuQh/ZVrctxZbZ5Kw7sjb20cZq RS3r224BNNtuFG85dymSl8CETdvSfSI= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IbWRYcU2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.51 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711613933; a=rsa-sha256; cv=none; b=ayY0L1lbIaFy+G4gGzsUNmNaJfuiOJvMFe7C5Wl+f+Ug3BieD9y+EIdZ36GDe2HdiijIK4 83hutOYxIpGhe/sSNyNCfMny04+ELxNHLNnECD+NbRmLY1pvIc9TOSWPzilJEEv7mlPAcF SpZxLRYMd7W1oRX/uANC847xjTN3e5E= Received: by mail-vs1-f51.google.com with SMTP id ada2fe7eead31-4765792fc76so173953137.3 for ; Thu, 28 Mar 2024 01:18:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711613932; x=1712218732; 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=faWC1DJFvByP4iBBdzTYQkGTB8nR36Q4Xhop1j6+ZC8=; b=IbWRYcU2SdCyYY1vFfau1WxdRZeRJiMQrL28NroHr8Ko61BMCem0Sph9EPIqxNIrMU xYPfqZgUzAi34qy1PPur6jnHtca2OhHlzzTSH7FNY1IZv3WFUR/gqLVg8Y17CIV8cpvM ToG3BDtr95hM6sslHGcdH02N2P5P50DHoNrpSOiEUaTNzjo6I74Fw8dnNDEJZ6Bi3bcK I+zsuLklhdeEVEYMgz+ic9FnFGnYT8FgjG1A+9TZdvwzk3lzoVt3vr093jXZSHJiq0n4 01C8cEIAbggXHeCUrVO0Gnsj+gxfAnRSmcADHOyd8paCQQKdPXB1sX9R3bvbqBZII4zT E+5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711613932; x=1712218732; 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=faWC1DJFvByP4iBBdzTYQkGTB8nR36Q4Xhop1j6+ZC8=; b=WAiGrFoDlK9tIvQOqEcliGtGgUqDra+Xue7/oo7MsC4PDizfc4YO41yFteZtguA7Iu fmpUHE5Dn6XNn46eI1iwJY3JivovTKIwe/QK5kNBRiYBoLa0mX1wnGsVEr+48U487jKc nCKqw62L5H+OY64mQzC5moKBcmcqPFWD6vEwMgo7eFWED34bIds8CJJvwKDHDht47Geq l/xr96ioxhYeZh+erF7Of4/B4FUSghSytFOriuzvc5s4qdk4VKaNqFMgyHCnESSyTiiF 4W6IQUZFPwqdMFZvic4a4OY6XmPtkCmoxSU4lfuHyRkG9Mp6U4ieD1ULt7wEosl06nAx TVcg== X-Forwarded-Encrypted: i=1; AJvYcCWiRi4mBOI7Q+kAyRT7pKc0ccBDvmRFJulLExBQOPu/EtG7J/HyhvzHJL9Ne0VVpJm//zmHS6o+KicmqZCYeA0apKU= X-Gm-Message-State: AOJu0YwHWzPDdzaERnMJHUn37VWPVGzlWaP+ru1HOifiMNqJYXFdOAYu DSY1WQwWVTjqcLes1rTmHCFHwVshQxLwaKijlHPCV/NvoL3VcV4GUy6X9+eV3TJ6rRxCjL6BWqd hMeMmnymNRsR4Bb1G/dZ1jYFDs6k= X-Google-Smtp-Source: AGHT+IEQ5qLrsDD4Z5wQ65B15tC3VvOxRqaGvahmHxAaehvbkeJzWNbDl1ZBeEPlkBEMgljJeH1nNVSbuxwzv0RFBRw= X-Received: by 2002:a67:bd18:0:b0:474:d253:e22a with SMTP id y24-20020a67bd18000000b00474d253e22amr2453112vsq.17.1711613932351; Thu, 28 Mar 2024 01:18:52 -0700 (PDT) MIME-Version: 1.0 References: <20240327144537.4165578-1-ryan.roberts@arm.com> <20240327144537.4165578-6-ryan.roberts@arm.com> In-Reply-To: <20240327144537.4165578-6-ryan.roberts@arm.com> From: Barry Song <21cnbao@gmail.com> Date: Thu, 28 Mar 2024 21:18:41 +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-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 387A8120017 X-Stat-Signature: xh1kknu9mhw1yhzipj1bkh5g8nficfc6 X-Rspam-User: X-HE-Tag: 1711613933-751331 X-HE-Meta: U2FsdGVkX1+0zt7/cnzzU/J200PdnuK4o5NzCf3xjcD6ZQjYHyGhsFQ5jZAeB6ioCCp0riFT105cCAOoDTJd8lRF7Yfe1RIgcQna8OlnN9H+yYiBrmGTr9/4w7uUaJaaAWTzSDlPALc/BA58S2btUzW3k+7Tt7stQYpvXyduI1Qsev2ENw/Ik0GV69pfzbNsLyncKCMyJ/IsjZ+KyKNDuF5keuvQj0e5uK23RhI7YzRvuYB1huLd3eQkSpbLXNAKdvVSQRN0jSbQ6HxdM4w1Iw9+P0f5l8wcFCFR1MRFYmtEwikRNHmHL3HhRYMfQI+R/mfuxUGGAQNe7bEAqktCK0+chd1WxAMiRlsPEsUB6dR7PnWfzZLkyM0ud5N2XAsb+MgtO5ERag6G80EvB0d5ZWCALS65Jzs10sOBsUnBKo7tAwVtk7Ymm6+uscVzVAyClJcHAc0mflezGFYJ2wIIuNuutdiOGS+WKMwp8r9TV4eO3jD3TIF7V1T3gBv1QHq8KjryHbRkAM70rH49C3syjHoAE4CMNvlqm+8o6+z4AuZzy8CUITUjjAevHJPeUC91bzcWuCi/NySoLmveL2RxvEUgs/VDFDvOr73/4UZ+Yn1RcKtftVcOGyj5zIroBDFHYPnAKn/uUWgp5nx1Fq/tC61N5XZKUj6VEgjvyq9F2gVWK963wHoOVqnY68CqVzYbYaSX9hbveIUe6VWjRSMRgyaJut27I0+FgPk5KmtweMT7FsBKdmHzJr/5JRdF5gKRi65SiBhXjgooB7yv4BoMqiGg5m+JHKHQGpkMv77x0iDvWhyBU0TfoJjFccEj0fRFC0AOuGWjKtNe4W1VXZR3quQs/aoiYvhryLDb6xWm73IrXeNLC24ev8/7HsYJH6Ityu51u5pZ+BxsBoUqmR7DxAlCgSvdrq/Q1kRn73rBOFgS8Z/doVjFPo2BWmVgILGNN5K0R5QpPuVRLcD/dXP +TzV/i+M yr8MQ1YcRbruFryx7lUEHnIxbNJKbRZjw9KjPiIW1vVwv5W5gNnqSzudDfZRqdWWWnnppBnyixKBF+20iCmTU0tslSuycf1ZDrOutJWHAV3VcuO+orGXNqieNSoRIdQGXTaK+l7Mj6abSdAXURFIRHZxhNFrxZW+WrdvfSWsmtu+wsMHgFSeY7BllyJoJoFibqKe7b5QyEOGFlE5DrQWGDoEBguw+KgWDUKSbuWldjdL2VFNnfit76/VxM7qPMfd9mmwWAndrea/YXeGQikjRahAJR4sJfjgMQf2YllsBqUR/QOHPdnhdMTqkUMbtVIKYM7m677wtm7LlGN+C/+oo9t9FurlJJG4hskiI7TIxLjX3bmdX9DGfr+NTrG/HSKAEM+auw069QUzHn/fUBw6KcM9yFY4AseQehlVHQ/1KifrhjaYaSBgyVBKEcxKWLUOx1IKYeP1JTsSfLpdGDHuuWePXR+WypCSUawMmFtVqYdcUyVVkU9Z2lHhicGCQLq7U8rtDve07/sMcz0+qEPJ8evc8oX8XGZaQ9EiD 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, 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 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 withou= t 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_lis= t)) > 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 bet= ween THP_SWPOUT_FALLBACK and THP_SWPOUT. 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