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 F2BBFC5475B for ; Mon, 11 Mar 2024 22:31:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8B4356B00E1; Mon, 11 Mar 2024 18:31:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 863F06B00E5; Mon, 11 Mar 2024 18:31:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 72CCD6B00E3; Mon, 11 Mar 2024 18:31:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 622DA6B0140 for ; Mon, 11 Mar 2024 18:31:02 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 384AC140C75 for ; Mon, 11 Mar 2024 22:31:02 +0000 (UTC) X-FDA: 81886204764.15.DE16490 Received: from mail-vk1-f169.google.com (mail-vk1-f169.google.com [209.85.221.169]) by imf01.hostedemail.com (Postfix) with ESMTP id 11DBD4000A for ; Mon, 11 Mar 2024 22:30:59 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RcrVfucE; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.169 as permitted sender) smtp.mailfrom=21cnbao@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=1710196260; 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=IbQrm7vb6lcaupZxQt2vA7yORilaHaySRWOgYMwjdKI=; b=buCh4fW+2OMAkiyhh7NFWDHVwSdkB+/4vTEhFXyu9o422HCEsLuCFsEaS3++V+lDmaPjoL XtbmIp4lN/0AQHN9RLmNyzP4WtzWlpLnIYQ2sEfbtkfyC86v55ptst15YqvWC9eLoq5sdb WvjDo7NAXD77ILBSulUlqq3gExWW3fo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710196260; a=rsa-sha256; cv=none; b=0jRMU+mXUGw5SdGOdX/AogUfpziXPGrkqG4vIxcWb8UMuN8HHwRHtmnXpwAb8N2ItViLfW bNf5MEIZb+L5+5BekCE1ddVOBz/SrSsXuEP4sJPZ7gkrzAdQ7Jy5pi+0UohtvfQ6S2kVVE l3iDi/1CMbcSB3gRgdBdTP+B58IGYwQ= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RcrVfucE; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.169 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-vk1-f169.google.com with SMTP id 71dfb90a1353d-4d33d049cbaso883257e0c.0 for ; Mon, 11 Mar 2024 15:30:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710196259; x=1710801059; 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=IbQrm7vb6lcaupZxQt2vA7yORilaHaySRWOgYMwjdKI=; b=RcrVfucEVQXejSLqUI6SlpQVPdGuapktw3F9Ld7q+ES2odHMFriThxTakqJPRUkaIb QtbnduWWnMM2ipM5iOTMgYxpuqQjLdNfTvXbSmrElDEmV9ULm85Ifm1zkngwYtb3Aqqs 83i+SzMqd3dfsDWVIPE+5KiMgi+c0yKukNWFsEnLjqnaa2HWad4Qfu0jwWVoMYjBze99 zNpfiUb+bPqccPHI8dU1CS71w5cMho1/MQsI0CgcoIgV2ZX2J30abegBoTkIN05cMtxv oDfPFzpgJZWhG6ccGkCvU6qWG3DY4YSAfb7slBkov9A9VwmU1OJ0zpvUccEZGaM2S09M SXxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710196259; x=1710801059; 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=IbQrm7vb6lcaupZxQt2vA7yORilaHaySRWOgYMwjdKI=; b=ITJAwG+S7VZVUZCjtjqp1MDgYmtyThP/1cZTtsCh+7CJDDE4/xwLkoQMdcy9LfjMV+ 7l9XfyUPLz8K6qSyOfQFyKZJ3/RLyidyhKEudIa6+LFa1EZH9LBNnyVezCWDw7NmJ4WI Tdy3kO+Am+cpzHcUwEILZKnFcKr2NaTGjBYHwbR/qE+depNB9aejHytf7NQipVoqDUKs /DXncC0MiiFYAEIVP9W18k3UH8FYA/kXYdQ9CKkKFFcNMnk/yvjEGrOaHT2HbKsBmD0m 6GC5IHB5vmEkt/3LlRXeh3LT+DiRvbipnCW+LoYq8/hTLKCSo9+nXtu45djhp4aDsC2h KZEA== X-Forwarded-Encrypted: i=1; AJvYcCWQyCqjYpX9Zz+byZ9cJuk6c8rIaXyWwlrBt3PznzVRQQ/HegbVTAB+dcEkn7jyOv1ZJS+GPY1F2MbaY3aIhw9i06o= X-Gm-Message-State: AOJu0YynyLeEEeCMQI0Oe4U2c0v9t7L55HBwWVR/0+89RoUqIpOpyNj/ 5tRlAwp0mdLQGc61GNni2emS6p8XMOfAgzB21rYZ6b+ZEFToPZakjn5qorRf+dk3zMxV9+HYuLF mRq9P3hhuYNdWznjwYrPMfp13EmU= X-Google-Smtp-Source: AGHT+IHpWeNRmtXpj0XUQvDlRqFRbkrPZRGONY17K7X3qg/HBjfAXo0NJmE8vv3shR2KQiFJH37T66AFsBDIlEIG+Yw= X-Received: by 2002:a05:6102:3565:b0:473:23ae:c11f with SMTP id bh5-20020a056102356500b0047323aec11fmr2870966vsb.1.1710196259114; Mon, 11 Mar 2024 15:30:59 -0700 (PDT) MIME-Version: 1.0 References: <20240311150058.1122862-1-ryan.roberts@arm.com> <20240311150058.1122862-6-ryan.roberts@arm.com> In-Reply-To: <20240311150058.1122862-6-ryan.roberts@arm.com> From: Barry Song <21cnbao@gmail.com> Date: Tue, 12 Mar 2024 06:30:40 +0800 Message-ID: Subject: Re: [PATCH v4 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 , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 11DBD4000A X-Rspam-User: X-Stat-Signature: 81ex3obgnfiu48mujjbyw3yqxedxtsxj X-Rspamd-Server: rspam03 X-HE-Tag: 1710196259-263928 X-HE-Meta: U2FsdGVkX180wqblJ9l5MrBV/sBPstOcvIJFle5CReAmxAWQ88fxejGf9r+3FFzinv85pf9Buh4bKuqpF8TlTDX/tprIO0uSQHWiKFjK/s9+dXy+p7ss2iOYk6h4kag/NB2NfmKmtWgXduce28uI0oZNaqOp0XQE+K8vZnrHAsUAvj+mNoxi/mFepqFlRhmf19CtlSm7owF1aglxzbLaI9mrovJAMn8kLHdbQQHHFcqzymzYEo/4qC5QEWSoTRMrR1Jz8yTAEMxz0xdRKtcDQO0rR+gdcn+gJofMaJAqjO6F428VmrmOBJ263foQLo9lV2cSQxuYq4U7v9Yf+wjF1AR09V0eCpmtnCwIC/3qH1SfhtA+TNhdu2Prlxo4Az0Vpi1n2IjS8HthWWr29xaTYJVH9fqTvbxAn1y2CxI5aQRx1/memn29zLn9NCDwWJJe9QrSz5HjUE/5S6/+rnAOBqHS25/bAzPs9yjoFTHGGun/HowLjdlEhch2hWgaao/1Eix7QDJKON8kQ85zqHgx6mpK6O5wuHNq+Lg6KzcW6kPgtIwzjAUIoOcdRbW3NRpFk66zGu98CsBEtAOOWLywNz7NpAfTMwObGfXfr1wfONkZlCr/lCVitAaeF+8DOj3x2ki8B8Ihz26/y1GAVA+u0hRuB925haPSQ3PBYOtrPkC7pcw8By7uQJKyRkBXYH5A9yvP9xM1KtVL26SChtfyryRgQRWuJHJ2ucCiMHIMI/KwfGf906FHjD1+mO/UlzVUxKx5d93876OcK3iAq9dvUD3UqyxGi3IAdGt02tRrCALd6pfoAx6bRFPGxyhUk3PDXkpJEN8co1J7Fqea/vlWfeXqSlhdraQ55Tc7UNCrXmKq6sglXWuq+qhWuux4Te8MH5VhKajNXF5sY7acC0HMQqqNkBBR7rEyHukPc7fgGMe/Yb6iWggqxFAbone6bbZpHyaXkqgokWoeqoO7XGh 5oj9Y1rE NDZG9CM/27MLBbxKlM4lXs9ydePddGgS3rtaS2Zm84UW+hJNJ1z4G42NkeatzNiP9r18eB82BcsmAJTFx4fy8tKxdSQZndF3xPEAk4Afeiv0v1NIwIO72jbRssgw0tEC6IPfEQZ3WgKTpQVI5OPw66zAuNnfjlRw2wsuCaHIzU5bbenQJvmrFnXNLXmuWI3wNf2wOZqaqiTpf68SNDcrpWN+mQNYn9B/x3BUgyTxVPNTWiCD40x6Q+CHok5q/7+npWxt7P8CVGx0wvL06ZrT84zmUifcY004QSBmdNOFAWzvjgsOCZE+WlQVnKkAFTF8xADIF1Pa6QiTPYcyiI1gYdWV09zm5APxT9i+I3QxTW58nsaQqGaNOFJrEAZaKVG8oQltIS0Ldx3a2LbgG/8CWfBUwP/7m3IykgayF4gAb7I0Tw1H5vUvZgg/Cj3I+hnKJVqbzcf9DZhuvtkkm2KTozQnALw== 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 Mon, Mar 11, 2024 at 11:01=E2=80=AFPM 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. > > 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 cf7d4cf47f1a..0ebec99e04c6 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -1222,11 +1222,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 = map > + * right away. Chances are some o= r all > + * of the tail pages can be freed > + * without IO. > */ > - if (!folio_entire_mapcount(folio)= && > + if (!list_empty(&folio->_deferred= _list) && Hi Ryan, After reconsidering our previous discussion about PMD-mapped large folios, I've pondered the possibility of PMD-mapped Transparent Huge Pages (THPs) being mapped by multiple processes. In such a scenario, if one process decides to unmap a portion of the folio while others retain the entire mapping, it raises questions about how the system should handle this situation. Would the large folio be placed in a deferred list? If so, splitting it might not yield benefits, as neither I/O nor swap slots would increase in this case by not splitting it. Regarding PTE-mapped large folios, the absence of an indicator like "entire_map" makes it challenging to identify cases where the entire folio is mapped. Thus, splitting seems to be the only viable solution in such circumstances. > split_folio_to_list(folio, > folio_lis= t)) > goto activate_locked; > -- > 2.25.1 Thanks Barry