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 8F08EC19F4E for ; Thu, 25 Apr 2024 15:49:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A8BD6B0089; Thu, 25 Apr 2024 11:49:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 058DA6B0095; Thu, 25 Apr 2024 11:49:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E62DB6B009A; Thu, 25 Apr 2024 11:49:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C79E56B0089 for ; Thu, 25 Apr 2024 11:49:45 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 5CB31412E7 for ; Thu, 25 Apr 2024 15:49:45 +0000 (UTC) X-FDA: 82048489530.14.9645CF1 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by imf04.hostedemail.com (Postfix) with ESMTP id 80B9E4000B for ; Thu, 25 Apr 2024 15:49:43 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="lsdA/nN+"; spf=pass (imf04.hostedemail.com: domain of shy828301@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=shy828301@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=1714060183; 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=MdaYc28NfSSIwvDCT2trYkwv6gETCtD+XOdfA1chXyo=; b=k7CoBAKiaJMCaL1djThjR1e+yM6DFf92mLhq0EldIrgY+wN/v9AUJlHpNw7EXFEScN3SKx iSR4tgxTZGfKNoh1RqKE2sZE7vM9z07JXZnb3U/V13feXAEMTlYA+u9FzElaL1/uFa1Wyb NtfbQCbGdk+bT5KbowLUdfQoacnuIx8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714060183; a=rsa-sha256; cv=none; b=yDeg9PissCO1OHgbdUJENULfljdR8g2Ks+tASM1m8eLk/OHqKnAElje+fsT8pBzSXOiShd WfVJ95wyqvvh69STFpPjfC4WdZsa5AUoevZYLenQzVKMGWqklm7JKC9HTvakj5PbIxqA5Y 9lKrbMT4KS3WXcM6XNW8N38h7eoanxk= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="lsdA/nN+"; spf=pass (imf04.hostedemail.com: domain of shy828301@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a58c0a05a39so63546566b.2 for ; Thu, 25 Apr 2024 08:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714060181; x=1714664981; 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=MdaYc28NfSSIwvDCT2trYkwv6gETCtD+XOdfA1chXyo=; b=lsdA/nN+O5Cy0GSEQQDc0eOKilbVbrXXcrpt1mtf894ifwXALV4B23a//fKmB5/6FO P3Y030rZm2sB/9RkpjrstjwJ6d5zTIP9JFUgj8MfTFdYhAl8hQ4ZIQMjzzv72wYpllF6 eZthrwzV5fgl0YM7DzVW63jcs9w9kdQnaRs3bM3DxeYrez36Jw0fD1fcHMZuCmFAnO86 A2JMeoAHjj3d4dBkVDIBfAusd3LMJc8kKe2R20dfz+eB+gq2xGVrLpUGHN/JD9sDAnuF 18+bqPbXFvxXVlILGNsuZFrsd/tQ0QiugdURSLs79tcUTdJnA6V9V9EyNU0aKQpElrou 4ufA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714060181; x=1714664981; 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=MdaYc28NfSSIwvDCT2trYkwv6gETCtD+XOdfA1chXyo=; b=hGw3Y9z8jp1CMgySmTchDZHdp7gaLcHUwrZswp3PCxaUk0x5NFYNWTDTMefMkyH/GQ ijRftTpOenZYvndWFyLAq6dqGO5bgkK+ccdQVpJ2FwoDfgojCLDFnbLxbU+Yis9kUpGg INgddKiY8gaDs5gGPnr2p1W0eM2sKp1EfN07vI+0q9n8DkPKsknXm+rnyETdmCSZ2fbo yefLZYBmlC3meN7k/ZO9nYQqYC8R84YuaqFz+44JCimmJ/M+Hmp7UdgJ7LwlTHhI/dmw lHAXly5wteGyeBrK/DmV5I2WXGY2CIsSgZXBJp48J0VQbk4NqzCq8R7WgEnl7YhoxlYz 2yZQ== X-Forwarded-Encrypted: i=1; AJvYcCXXNM2OkIP1hWInJD8igr3jiyYgV1FwX+aegU5MtE5bUkR/dDjA0hAq+IrGrFfnQhU1tp7rIQMy/TXkIqoZuplryeA= X-Gm-Message-State: AOJu0Yww0QKXfe397BrtOPYZuxdcjk9wur6Gu/KWeBfeMYqsAruwYPd7 SGYtzA4nCYfq/zOUJbLs3MJdgkeK5WnxWJ+4G/MwB9d95mIGaO4tpqIcB57sEndDcx6s1vRdr5/ ntK3B8J6umlSTWryZCGNEQYxjTos= X-Google-Smtp-Source: AGHT+IGaHxGwdnM5nZI2aKxLKrXpQXSFs7i9n9saiyw3KBDwzyb/3lV3rxpO3qi1z7hyNoNnotBmpJttQXL7jsHQqzw= X-Received: by 2002:a17:906:544c:b0:a52:3adb:e407 with SMTP id d12-20020a170906544c00b00a523adbe407mr85188ejp.37.1714060180625; Thu, 25 Apr 2024 08:49:40 -0700 (PDT) MIME-Version: 1.0 References: <20240424224614.477221-1-zi.yan@sent.com> <8BBD1B75-135D-42AA-8937-53B259803AA7@nvidia.com> In-Reply-To: <8BBD1B75-135D-42AA-8937-53B259803AA7@nvidia.com> From: Yang Shi Date: Thu, 25 Apr 2024 08:49:29 -0700 Message-ID: Subject: Re: [PATCH v3] mm/rmap: do not add fully unmapped large folio to deferred split list To: Zi Yan Cc: David Hildenbrand , linux-mm@kvack.org, Andrew Morton , "Matthew Wilcox (Oracle)" , Ryan Roberts , Barry Song <21cnbao@gmail.com>, Lance Yang , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 80B9E4000B X-Stat-Signature: jhe6jz5mufuudcmxkmjx6yh8p4t536rd X-Rspam-User: X-HE-Tag: 1714060183-846136 X-HE-Meta: U2FsdGVkX1/cw5bge/s1kUjwQrJ4r6FJMO4WVB0LfxmdWw88QypHT7ew/qpqppXkFuaXVoMzoMqG6gEgc9qC4G8TTeo80s6o3tjELTNq8y8JXkQUVSlp59ujRZn8J6JpwUeERM3npZa/b+V6xofMin+48T1cMk2bPcKuDiZwXSmv7d1xcr9gHfejMoPrRRXTx3vCZgGSC8jz5ebO8vRw7NeilSO3b2mOuHrypdGJHL7FXeydnMHf2TN811ST4FdW0UIL6vNoA7NIXcIxXCUOQINJEoKxxswfD00V4RCDJxS2DT5wT7I11Wkk6RvCicPUQ2IpGIpI4HvnU8GCXemqkgAVdljbR0Dyzy2rcDI4b95sSLt/InTtGYgOafjPstZU4VjQi3qWS3gvAml1U6icF/FhBxYS2qSroa7sSkbj3aGXjQ2l+hEYpMBMVQmsr4cm0rj6BMFhK+fq/8ZRU7m8rKkbOcRrCZawxyInrvxO1jKF6Yep7ZErm5sOLwik5J44ibq/y4f4OvzBXOLHIgF/9ffJEzx7km79iV1HzfGTIqzXK9E/h9pEnyUR5BkgACPoyCfLI5VbemIRd+Exy8sEiceQelFcXfZO+W7r1XlCbvd9834kayMDWFG/FGnhDlJheV+iF/4yUEwfVcbkXX/AIeqLV0WEo1DV4RLWnbd+6wwgPwMCtdaAsjT1aoBFzjolp8ea/DOJ6gVEBBufXxCLMlpXfLF03wGKOXh5AQPMUwoAGc0+XLxZZ1X/hF1CQoRzNh9L1q7Z5oLTEiABqEjOvgU+DlXOo2YXCrUQEAX1gbPhpwxzyQ8F3rlvVTbMi4VGZtno0c7UKGG1YmVfHnIiBWhyKoPCkIJLpG7zIHljv+KXAkDKTVe5EA1ZJfta/WbRTGP5pwbmVhuqFW5hr+ZyGHFKuSrsrKuW51I/4Sl1pzbaXxqrXxJOfJJhBzCCzEBewmiX2dxjEXWuJCJz4ff maliPxgS GEHtNvEAnl5bRAg0FDoZdTQ1OIIPmz+OKr6jkqwSdZoGYOfCORp0sKuRDTA/FcQuiU+dYlZ8af7agAdfBj7mYfBFruhdguwIt5xZKBrf9PdVR96TWmkIN/o+BSsERiCF8JRT35eikF8hFC12UhyDdUIzGkYj4y0ReK6rVHR6/lJLgbvwGx5UV4Mu6fOc2XKqCcCCLLmrknT+QDRdGLjMIOTalF25AyCVx286Koddk4ndYNwbZXnzNhC0sVF1KUI+Ca3+xhqJtxidIsZW9iOva/A3u/4hZxKkF0aQSuFt8KeQIg10OgQ9fCjG280eBMHEVtMJ9JCQ/vCX4kTFqQYiXFPE2OHr524RSS1s42vWkldsJj9O/GdsVuNfylhsOEkwq4iKFsR6fzLzU8tY= 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, Apr 25, 2024 at 7:53=E2=80=AFAM Zi Yan wrote: > > On 25 Apr 2024, at 3:19, David Hildenbrand wrote: > > > On 25.04.24 00:46, Zi Yan wrote: > >> From: Zi Yan > >> > >> In __folio_remove_rmap(), a large folio is added to deferred split lis= t > >> if any page in a folio loses its final mapping. It is possible that > >> the folio is unmapped fully, but it is unnecessary to add the folio > >> to deferred split list at all. Fix it by checking folio->_nr_pages_map= ped > >> before adding a folio to deferred split list. If the folio is already > >> on the deferred split list, it will be skipped. This issue applies to > >> both PTE-mapped THP and mTHP. > >> > >> 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 no= t > >> fix the above issue. A fully unmapped PTE-mapped order-9 THP was still > > > > Once again: your patch won't fix it either. > > > >> 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(). > >> However, this miscount was present even earlier due to implementation, > >> since PTEs are unmapped individually and first PTE unmapping adds the = THP > >> into the deferred split list. > > > > It will still be present. Just less frequently. > > OK. Let me reread the email exchanges between you and Yang and clarify > the details in the commit log. There are still some places which may unmap PTE-mapped THP in page granularity, for example, migration. > > > > >> > >> With commit b06dc281aa99 ("mm/rmap: introduce > >> folio_remove_rmap_[pte|ptes|pmd]()"), kernel is able to unmap PTE-mapp= ed > >> folios in one shot without causing the miscount, hence this patch. > >> > >> Signed-off-by: Zi Yan > >> Reviewed-by: Yang Shi > >> --- > >> mm/rmap.c | 7 ++++--- > >> 1 file changed, 4 insertions(+), 3 deletions(-) > >> > >> diff --git a/mm/rmap.c b/mm/rmap.c > >> index a7913a454028..2809348add7b 100644 > >> --- a/mm/rmap.c > >> +++ b/mm/rmap.c > >> @@ -1553,9 +1553,10 @@ static __always_inline void __folio_remove_rmap= (struct 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) && > >> + ((level =3D=3D RMAP_LEVEL_PTE && atomic_read(mapped))= || > >> + (level =3D=3D RMAP_LEVEL_PMD && nr < nr_pmdmapped))) > >> + deferred_split_folio(folio); > > > > Please refrain from posting a new patch before the discussion on the ol= d one is done. > > > > See my comments on v2 why optimizing out the function call is a reasona= ble thing to do *where we cannot batch* and the misaccounting will still ha= ppen. But it can be done independently. > > Got it. Will keep the deferred list checking here and send a new one with= commit > log changes too. > > Thank you for the reviews. > > > -- > Best Regards, > Yan, Zi