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 AF4ADC4345F for ; Fri, 26 Apr 2024 01:45:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D68F66B0088; Thu, 25 Apr 2024 21:45:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D17936B008A; Thu, 25 Apr 2024 21:45:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BDEFA6B008C; Thu, 25 Apr 2024 21:45:42 -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 9FD8C6B0088 for ; Thu, 25 Apr 2024 21:45:42 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id E2B131C0489 for ; Fri, 26 Apr 2024 01:45:41 +0000 (UTC) X-FDA: 82049991282.18.74D1C4F Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by imf08.hostedemail.com (Postfix) with ESMTP id 2571C160011 for ; Fri, 26 Apr 2024 01:45:39 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="D3I/NzRu"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.180 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=1714095940; 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=J6b0ZXwqYFEJjvvbeKO3PjwCqkPqlL7SIVe+m+maAxc=; b=7t4a4XvgW1e+3vfUzHiERTp4Sxn5qWY3ZGxW7AJPLnm81ZqZIKUKBqEfaRlb+xl4rKl8N4 nxQNg87M6QAtjV4/02SwtgrPg8hGFROLwQQzstSsnjPJQhlds0ZrsyrNiz8A7SYNeQQBSq oqx7SCskJTEb/ztWCSo06GVR697jf6I= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="D3I/NzRu"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.180 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714095940; a=rsa-sha256; cv=none; b=2pcx54SeXMxe9Ecd6NkD2S3deWaRr83DqQFyx8Sj6fdZIsoNPJKd4tECy3aUzJ1CWcbALH hvnt+oUU61z1wmIyd1bIpm7bz0/UIBUDe/91ffqt1QEg7nw/LSoTp6eplZYigsD2J6Ou/c 6MtTMKTffvUIRoVbOYUbjZLAyYJlFQI= Received: by mail-vk1-f180.google.com with SMTP id 71dfb90a1353d-4dac5a3fbeaso554903e0c.3 for ; Thu, 25 Apr 2024 18:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714095939; x=1714700739; 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=J6b0ZXwqYFEJjvvbeKO3PjwCqkPqlL7SIVe+m+maAxc=; b=D3I/NzRuJqhoiQkMpzJcO8OytW8o4VpMOX4AxWnEt1bd7i2S0UiE0mtuRH1XkO2nFG ARqjRS1k41SwxvLTev53sBV6riKfmqjgPRhLt3PXELXVy06Rvh3a/bEBz73Swp9fuOf7 BqWwHVrb9vIuinVFv4gMRzI5g5wE9S2GzpvRh5xhPrTJuyQX+mN7MWAWUwJ/ti+lWIgd /96E+DMyx6yo6bUccRBoiwHHsSPXDC5KBiYXSyc5waMv29onL0tVpg73x1uzgRrZXSX5 4OTvFmAUaqnS/oXHP+R5CHVZGj/AQRM7BTFvZauWzGSLoaw36aZUa8uAqd/Msvxq6QZh gsgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714095939; x=1714700739; 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=J6b0ZXwqYFEJjvvbeKO3PjwCqkPqlL7SIVe+m+maAxc=; b=K+gpyBvYNR8Ek+SWqmsFrfGw5LJK5GjgRH+zlshDLu0BsLSzfvT3lctOKpR5qiXcHI eK2v2XW9FkT5tEviixTBMK1tqfH39CCO67JVRQkkrBcpqlA9vYMuQkhz7Fv76EmBQ1uP T/fDxXs/L6qkQ3NVbYTVJaBpwN+TcWTldhWtwzQwZviDYWa3oc7LbT6/T95C2nfLj/TF sNIqcYjBS14s85Ecga/2650D0vUX9nxw4kSEY5EVRo8K57NbzSDbaO5SyC0SQ4kvOCIg rVIbWoO+Sum4uERAYNop0e/3LJbAR1oDXJ8Y8tQZpNnDpN5ZVLfdp81fIWLTmXXTuqsc DD6Q== X-Forwarded-Encrypted: i=1; AJvYcCWYuz0Q969dCZFKqBPnenvfecv+bFUERGEEeX3wBSKs6bEt2ssv8KW7oxJs27+e9KJFIf1i/OfbXy98vEnl2idVtLg= X-Gm-Message-State: AOJu0YzuCB4F8Y/h4Xx5MR9Na1v8HBFvZwBUx34jQMJfb2RS8lS49MYw BaNuKOh4o1M2vLQl49aO8zgCBPhweFRScsTYM8Y1fV998Bpg2+TS+CbdGSBa4vspwYpNn6TtHyV z2NP0PfSPNsqoxK+FO9L5cgnIMUM= X-Google-Smtp-Source: AGHT+IFsq6uOpr9y9eVY1eAlsBoEVM5Ah3t3NHkW7FSGnKhuHeopR4wlncx05WyB+oiFlKujFZPSUB0FJ9zowYhu9WU= X-Received: by 2002:a05:6122:3c84:b0:4db:223b:1c0a with SMTP id fy4-20020a0561223c8400b004db223b1c0amr1310519vkb.11.1714095939129; Thu, 25 Apr 2024 18:45:39 -0700 (PDT) MIME-Version: 1.0 References: <20240425211136.486184-1-zi.yan@sent.com> In-Reply-To: <20240425211136.486184-1-zi.yan@sent.com> From: Barry Song <21cnbao@gmail.com> Date: Fri, 26 Apr 2024 09:45:27 +0800 Message-ID: Subject: Re: [PATCH v4] mm/rmap: do not add fully unmapped large folio to deferred split list To: Zi Yan Cc: Andrew Morton , linux-mm@kvack.org, "Matthew Wilcox (Oracle)" , Yang Shi , Ryan Roberts , David Hildenbrand , Lance Yang , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 2571C160011 X-Stat-Signature: 4a9qif4g87hfhpuanctiy5jmp7zmhssw X-HE-Tag: 1714095939-497326 X-HE-Meta: U2FsdGVkX18yknaGn8j3Tb1jTbk9KT1+B7QtSeg53kA9DdY/URLH1LxueNOuynjhLNY2DH7HR2WFU/v0ug6Kj9S30U//yDZ7c5as6Fz2i70uENn/DKPgFGhwpqPvTbmDvJE2mKwtfBthzYLFYOgdl4T5sWBnHGNAn8osqpKr2VANJ+FEtp/+1A5ghTWqGS5Oyx52j5RSWyEyN+SKpFRnBek7cjZKAizaTj20zJF9QNmnbEv1hsVSqk19UKTF1pAJgWPGg70YbXMHriTsM+qtpnYw4TpjnFgcJS+nxv3Ch2acv7IvF4bGKnVf1ldxPSEKS4qjUyEEq5jiEKcjzfNn6YYRn2olQo7M1mPCCdxosRLdvINFC+BR+gZMWwqObK6Hznl1fRRFEtqntrzXzlhsSqskkcGzyGZ0WkHXkbFRdHHmepoYGSVfjy+qJSWviG3IpMc/OVCDjHQ1YrWm637IAjuFoBkswQ2htyFFA2+p+tKqYOV2RZXGEqla9XFmIPPTvA9Pc3AhvXcs2LLXdBa5ijV6k0OzvCMDRtwYVUn2UE07PZhx0dZ5IR1nUjG2+cJiXh3KedZGKS3En9HsuZAPH6IVKIc6FiiIl15vnFfrZDcKQMY0R64FiVoTxOWws9VSJLq+HHNuzG/leByhok8dSXfiKZa7SwW6YwKYWbn3gU6jkzs8RwybY/z5796LnxAjHmUUowI96l8GAxDVKTrUNOLCSNSbszgKh2Nk73M+kD4cEtdFPOC55ce2JJJo9Ex+PhVkeDIK1dkZyzzmKN4Rtdr8l9R7y6rRqxE0Ku+RVvWUXI2upI6WgARzgrrjNV5JVMNKEgmhaYImOgM5IgqD00GPGiLl33l4H01ED/HR2+EkPOWbKkKAowcXK8GWDP891F4ptYwj1fBJQi8eb5azpOVURVRgaR7dDAhoN/iUncWoqEQZ33cIYgE21xjz6BneQ1HdyQuC2pJQgvo8Puh j0Nr1JkR /jBEctvNlOiEkYoF7OgCRPpbZiL178JQhzxSRzciQjQgEOJtEK07GCI5Dhr49teJ2li4fSPn8tSdTrxdD/RMqruJGvWq6oKmVfhkwTOQ3Zlwpw7tApd5kfwqHguX1TxH8S5dMZIxO4bK//KeiaMDYcryXlViFiszley5nq9tWS/cVSksab79yWtZgENd0GKmxIOefnbKLO86z0hmiirtQGc47yFr8eNdxXOhEtZ/WubUbQSISQto3d9fpUQboLlWtTgHo12wcmDHtNFuvHSWtCtNkulrYSXdHBawcLIwmQkbfqXXrqzDR3B1xK/Jfw1ql37D2zDGjQjLxfoCK0j5O7rPCS/2sziRUaaQJq524adLAo2F/eCMJKVRXKcELPGfhKZu4wokVcO6VLVRUTaBH2jIU+MX3WFJ6r/m4lAq19dkylCHRIs4ZgPyWjOX7YswQnd+mKo9KQyvlisY= 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 Fri, Apr 26, 2024 at 5:11=E2=80=AFAM Zi Yan wrote: > > From: Zi Yan > > In __folio_remove_rmap(), a large folio is added to deferred split list > if any page in a folio loses its final mapping. But it is possible that > the folio is fully unmapped and adding it to deferred split list is > unnecessary. > > For PMD-mapped THPs, that was not really an issue, because removing the > last PMD mapping in the absence of PTE mappings would not have added the > folio to the deferred split queue. > > However, for PTE-mapped THPs, which are now more prominent due to mTHP, > they are always added to the deferred split queue. One side effect > is that the THP_DEFERRED_SPLIT_PAGE stat for a PTE-mapped folio can be > unintentionally increased, making it look like there are many partially > mapped folios -- although the whole folio is fully unmapped stepwise. > > Core-mm now tries batch-unmapping consecutive PTEs of PTE-mapped THPs > where possible starting from commit b06dc281aa99 ("mm/rmap: introduce > folio_remove_rmap_[pte|ptes|pmd]()"). When it happens, a whole PTE-mapped > folio is unmapped in one go and can avoid being added to deferred split > list, reducing the THP_DEFERRED_SPLIT_PAGE noise. But there will still be > noise when we cannot batch-unmap a complete PTE-mapped folio in one go > -- or where this type of batching is not implemented yet, e.g., migration= . > > To avoid the unnecessary addition, folio->_nr_pages_mapped is checked > to tell if the whole folio is unmapped. If the folio is already on > deferred split list, it will be skipped, too. > > Note: commit 98046944a159 ("mm: huge_memory: add the missing > folio_test_pmd_mappable() for THP split statistics") tried to exclude > mTHP deferred split stats from THP_DEFERRED_SPLIT_PAGE, but it does not > fix the above issue. A fully unmapped PTE-mapped order-9 THP was still > added to deferred split list and counted as THP_DEFERRED_SPLIT_PAGE, > since nr is 512 (non zero), level is RMAP_LEVEL_PTE, and inside > deferred_split_folio() the order-9 folio is folio_test_pmd_mappable(). > > Signed-off-by: Zi Yan > Reviewed-by: Yang Shi > --- > mm/rmap.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/mm/rmap.c b/mm/rmap.c > index a7913a454028..220ad8a83589 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -1553,9 +1553,11 @@ static __always_inline void __folio_remove_rmap(st= ruct folio *folio, > * page of the folio is unmapped and at least one page > * is still mapped. > */ > - if (folio_test_large(folio) && folio_test_anon(folio)) > - if (level =3D=3D RMAP_LEVEL_PTE || nr < nr_pmdmap= ped) > - deferred_split_folio(folio); > + if (folio_test_large(folio) && folio_test_anon(folio) && > + list_empty(&folio->_deferred_list) && > + ((level =3D=3D RMAP_LEVEL_PTE && atomic_read(mapped))= || > + (level =3D=3D RMAP_LEVEL_PMD && nr < nr_pmdmapped))) > + deferred_split_folio(folio); Hi Zi Yan, in case a mTHP is mapped by two processed (forked but not CoW yet), if we unmap the whole folio by pte level in one process only, are we still adding= this folio into deferred list? > } > > /* > > base-commit: 66313c66dd90e8711a8b63fc047ddfc69c53636a > -- > 2.43.0 > Thanks Barry