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 DB84CC3DA64 for ; Tue, 6 Aug 2024 09:58:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 420F26B0083; Tue, 6 Aug 2024 05:58:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D0BB6B0085; Tue, 6 Aug 2024 05:58:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 298746B0088; Tue, 6 Aug 2024 05:58:51 -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 0D8066B0083 for ; Tue, 6 Aug 2024 05:58:51 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BD50680966 for ; Tue, 6 Aug 2024 09:58:50 +0000 (UTC) X-FDA: 82421371620.19.5FD7DF9 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf10.hostedemail.com (Postfix) with ESMTP id B60A1C0016 for ; Tue, 6 Aug 2024 09:58:48 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DEib6GXZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722938278; a=rsa-sha256; cv=none; b=HLdKByA3MKEd24rUrcgAV7HFOA1la5xPOgVmpBqlVTN+ZZO6eilH1jQKonrUeavVR9oT44 zEaTvDtGWxAyLvghUZwWsatioJu5Xd0QjGKHHWUHPZpqtvCsZ10gP3ifPZamlOR2/W3wZR KB0CDe2shQqCpeFcI0Ggs597/p4KF3A= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DEib6GXZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722938278; 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=UWFXS3msriWso8OK2ucbircclSt70Aab+Ge8S3Vzum8=; b=lbxoZ/JaHHcG/ZFmeJBw7kUNe7LKeiNWUOMlmFSJb0vS6wWB5Gd3s/nQtJZazHD3Y4fT07 3AlKEfpXMdjSISi4oep8GG4HKKbjpxPvpyoKbSeBq+feM8tt4aDXbsBV2MwKZKgys70cop E75MTn7Qp96Nu88FQZFc9SwiGfPwz7I= Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5a309d1a788so431974a12.3 for ; Tue, 06 Aug 2024 02:58:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722938327; x=1723543127; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=UWFXS3msriWso8OK2ucbircclSt70Aab+Ge8S3Vzum8=; b=DEib6GXZeZuSTpOnSjYcToNKN2nQDd/M9ruH328h9rcZZsj+GIbKgLJWbc0GvXtfSR H7s1/Ftu7i4+g4gypnUoVWibBUcBfJeQzYiHVtwqA22E6BjK5kqsPxzuVFqDesmQ6JnH jpH//Rr9Z/Dj3/RBXS+w/ISWrAEGObS+Dr5f8ZkOJYmyHyBQMVGa4bjxaZF+urN5wS8l hMvaddPV3NiEDHkRucEWmxhp0ebKbBEudvYxUT32sC1mi8G6XMRqH38WPS3VNZnzAE1y cJzHxhKzlVDm7XjQftZ/h8BZXqJylhxL52EBrnXmW5818KUfM8Qqs7y9YH5rW+YfdIhZ R7dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722938327; x=1723543127; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UWFXS3msriWso8OK2ucbircclSt70Aab+Ge8S3Vzum8=; b=PLQe1Iaqg7Y3ibIHt4rg6beGSNmuCBuICpPdlTTNUxjGQuCNDXQfDdtJro7BQt/KOk NXzFa4+zUiG3WpNC3MM3LsYouEqGipjIibQgNn0S2jyYQM3etzbXLAVa4eTt7dIK/DL3 VwnhOhDamg78a38VTWKBzHNk8kRUDKuS2+SmHWKppl98voNKPKwTzjbsN351wBhdFph2 gvK5H7eWEXlG9qeWCE2uLCoSljdG+/VLFfzHzNB5SLReBkWcuxJdLP5et7WO9C4RB3cT 2nJA+JwGmAl+fJCrsT3PJEr/Pk0jDoGyYs2CBsSgqS6W4zejzpQs4Mb0eUQn+uu3vLxo bwWQ== X-Forwarded-Encrypted: i=1; AJvYcCVTAeFbR+mpb2GGtasGOYdzSH7mbbqSbZpNN54V68Uv45C2k1hX/bNd3+xGEhTtK4gzI4spAO/K57vZeEIh41RvfUc= X-Gm-Message-State: AOJu0YxVKOrKA7HLGThGdS3bIjWtD5j06WYKZWOPv89Nr0nJNUnwVuZt OyWORLxtMwO+aMKte/p+T+A4+JXBXIw3VEoQxGI2J6eS/I6B7SlZ X-Google-Smtp-Source: AGHT+IEar3jTUi864HpTSM4h75a+MT2FqFimqumdw4yMkpqbOP3dpy9RmMkU5joiiUHcMlsKONIbQA== X-Received: by 2002:a17:907:3f1d:b0:a7a:952b:95b1 with SMTP id a640c23a62f3a-a7dc4e287demr1050845166b.24.1722938326530; Tue, 06 Aug 2024 02:58:46 -0700 (PDT) Received: from ?IPV6:2a03:83e0:1126:4:eb:d0d0:c7fd:c82c? ([2620:10d:c092:500::7:c24b]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7dc9d437bbsm529533566b.121.2024.08.06.02.58.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Aug 2024 02:58:46 -0700 (PDT) Message-ID: <9162275d-12af-45d4-a004-adde8e4d63c2@gmail.com> Date: Tue, 6 Aug 2024 10:58:45 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/6] mm: free zapped tail pages when splitting isolated thp To: David Hildenbrand Cc: hannes@cmpxchg.org, riel@surriel.com, shakeel.butt@linux.dev, roman.gushchin@linux.dev, yuzhao@google.com, baohua@kernel.org, ryan.roberts@arm.com, rppt@kernel.org, willy@infradead.org, cerasuolodomenico@gmail.com, corbet@lwn.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com, Shuang Zhai , akpm@linux-foundation.org, linux-mm@kvack.org References: <20240730125346.1580150-1-usamaarif642@gmail.com> <20240730125346.1580150-4-usamaarif642@gmail.com> <3be3dacd-1f45-468f-a363-b9d3a10aeb89@redhat.com> <6622b7b4-e558-4d14-bc72-33e8008b06ec@gmail.com> <73bbee97-ff58-4518-8dcf-e1da07906b45@redhat.com> Content-Language: en-US From: Usama Arif In-Reply-To: <73bbee97-ff58-4518-8dcf-e1da07906b45@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B60A1C0016 X-Stat-Signature: nxum46ow6iwnnq8iaxgr38x9aqchgemf X-Rspam-User: X-HE-Tag: 1722938328-59149 X-HE-Meta: U2FsdGVkX18PpTjCr2GMv0ScavdVuI+1i73b0QurrDM96ZP51iCKc8ExEdedLlIpDzUzEKAjROGouQIXm8SeX8u6FOsJ9n7TmJmPG1KPJblntFpkAAozoLtvlY3S5/L2Ep4NtycaTxPObo5aiY/IzQFAIr6tB9YCoSq0nz18gTtZnIrg7hfYgymO4+PMM0jFOgMpKJ1PecWhR6K/rOQgpLB6XvcDqhRjUlsCNO0HfRlGLeWsg5qQ4LPagbER4E0PCtD3DX4Epyrb0nIAFG7nISsYgKKfwcidFMNf1vUcIRDqXHdwlcqH9zfwOBXEGhU9UyA3YcnzzLewMHbjbKrcdfoeIUnl8NbfjOFV/F3ru2L18Oc6GZnlYAVmY/spmhtk9ta9/X3rDMO8MsQuHBdv7gZ0/WuW6OPS6t+dDu12w1fP5a4G+Byh/3CkGwAUoH81JWTQnrlSOBdK4FfzKQam3SZEhR/Aw9jXzkF45+v71Spi6XSTYLxJrSOTzCDdugFuQvAoBoSYC9+581aFDFfJPQW3FhptX/nVtk7/c1eL+1U7j6weiFx+6parSbRNrxiFZrnJ+ehe76bFRglEiHIX2Bz5xW5vuKSdzUbe94sdq9DRAh/Xv17Fd3R+8II1fBEOng4c+HwZv/KY8NrDr6vnzeF+IKIqF8knqS6hSIlyTfjjf38GHT4o2KqitJG8KTuQAhllabaWnpqK+Sf8FpSgUFz39ha8qyMuHgV682ZR06lOu2BdEXizt2W/C5y6oNlG7A2LkMlIMPJQ/+BWIY20Qsc91bRiwKylfI5pGNkt8BEOQQpLNPSOCO1hb49/cB0G1IBVQuE5sMOMvbdRB1MfaDyppnN7lBK4yZhP/T34icQ8oH2tdugCTg95wtuYfdJYKfCSQR2p08h9ZjMNoSI4TCejbRisqwi/pv/IR/GsMpweHo3Iu4sZ4T6fNgET25UXiLmrKeC76W5EIyJlvqN ZbUpbnoO REZ+HS563bEkJ+0UAAIcUxczp27WVqtPptDt+JPt1yfkfcI5raFtkrhTXC/4/XxsEkVFg6l+c3XZqcI8y7eL9hrUxq/3rj8kAWUmWkEX63o7qjoaGzOQjc+CI5OJwPwlQdhqGJp8hA6yyg+U+URHp2JNWw7VoHHzA/V46xOm6AC0U/mVG/BL9iekz8gBDgReOHoAd9p/RK05AmFpvnyiFpHF6TLz4VZ8vsQ0ri1uF8zt3nGkIWYM4LKanBwbF5G0cdKlkKLTk4oykl2R2USzmYpK0P/Jw51iMSTEnjUrMxHaSEL/keNtONCS9LRZ3oFZVn+RzYGDHYs9tTNJaxfBHx5N3WRBA7fkWbDwUE1H4UvVE8EnSVx9KuDh2VakxEM7ydk42It/kYucDLBp3Ibh2BKuCs+YziUsxvbbfU9j0JTLEP9Up83eacUT1kA8UDFGwXRdsCHMOnGEX3FE= 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 05/08/2024 10:00, David Hildenbrand wrote: > On 04.08.24 21:02, Usama Arif wrote: >> >> >> On 30/07/2024 16:14, David Hildenbrand wrote: >>> On 30.07.24 14:46, Usama Arif wrote: >>>> From: Yu Zhao >>>> >>>> If a tail page has only two references left, one inherited from the >>>> isolation of its head and the other from lru_add_page_tail() which we >>>> are about to drop, it means this tail page was concurrently zapped. >>>> Then we can safely free it and save page reclaim or migration the >>>> trouble of trying it. >>>> >>>> Signed-off-by: Yu Zhao >>>> Tested-by: Shuang Zhai >>>> Signed-off-by: Usama Arif >>>> --- >>>>    mm/huge_memory.c | 26 ++++++++++++++++++++++++++ >>>>    1 file changed, 26 insertions(+) >>>> >>>> diff --git a/mm/huge_memory.c b/mm/huge_memory.c >>>> index 0167dc27e365..76a3b6a2b796 100644 >>>> --- a/mm/huge_memory.c >>>> +++ b/mm/huge_memory.c >>>> @@ -2923,6 +2923,8 @@ static void __split_huge_page(struct page *page, struct list_head *list, >>>>        unsigned int new_nr = 1 << new_order; >>>>        int order = folio_order(folio); >>>>        unsigned int nr = 1 << order; >>>> +    LIST_HEAD(pages_to_free); >>>> +    int nr_pages_to_free = 0; >>>>          /* complete memcg works before add pages to LRU */ >>>>        split_page_memcg(head, order, new_order); >>>> @@ -3007,6 +3009,24 @@ static void __split_huge_page(struct page *page, struct list_head *list, >>>>            if (subpage == page) >>>>                continue; >>>>            folio_unlock(new_folio); >>>> +        /* >>>> +         * If a tail page has only two references left, one inherited >>>> +         * from the isolation of its head and the other from >>>> +         * lru_add_page_tail() which we are about to drop, it means this >>>> +         * tail page was concurrently zapped. Then we can safely free it >>>> +         * and save page reclaim or migration the trouble of trying it. >>>> +         */ >>>> +        if (list && page_ref_freeze(subpage, 2)) { >>>> +            VM_BUG_ON_PAGE(PageLRU(subpage), subpage); >>>> +            VM_BUG_ON_PAGE(PageCompound(subpage), subpage); >>>> +            VM_BUG_ON_PAGE(page_mapped(subpage), subpage); >>>> + >>> >>> No VM_BUG_*, VM_WARN is good enough. >>> >>>> +            ClearPageActive(subpage); >>>> +            ClearPageUnevictable(subpage); >>>> +            list_move(&subpage->lru, &pages_to_free); >>> >>> Most checks here should operate on new_folio instead of subpage. >>> >>> >> Do you mean instead of doing the PageLRU, PageCompound and page_mapped check on the subpage, there should be checks on new_folio? >> If new_folio is a large folio, then it could be that only some of the subpages were zapped? > > We do a: > > struct folio *new_folio = page_folio(subpage); > > Then: > > PageLRU() will end up getting translated to folio_test_lru(page_folio(subpage)) > > page_mapped() will end up getting translated to > folio_mapped(page_folio(subpage)) > > PageCompound() is essentially a folio_test_large() check. > > So what stops us from doing > > VM_WARN_ON_ONCE_FOLIO(folio_test_lru(new_folio), new_folio); > VM_WARN_ON_ONCE_FOLIO(folio_test_large(new_folio), new_folio); > VM_WARN_ON_ONCE_FOLIO(folio_mapped(new_folio), new_folio); > > folio_clear_active(new_folio); > folio_clear_unevictable(new_folio); > ... > > ? > > The page_ref_freeze() should make sure that we don't have a tail page of > a large folio. Tail pages would have a refcount of 0. > > Or what am I missing? > Yes you are right. For some reason I was thinking tail pages would be able to reach this path.