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 A678BC3DA64 for ; Sun, 4 Aug 2024 19:02:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20E6C6B007B; Sun, 4 Aug 2024 15:02:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1BDFB6B0082; Sun, 4 Aug 2024 15:02:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 086F06B0085; Sun, 4 Aug 2024 15:02:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id DFE826B007B for ; Sun, 4 Aug 2024 15:02:55 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 37E4AA841A for ; Sun, 4 Aug 2024 19:02:55 +0000 (UTC) X-FDA: 82415485110.22.35DF61D Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by imf28.hostedemail.com (Postfix) with ESMTP id 46D10C0006 for ; Sun, 4 Aug 2024 19:02:53 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=j+2w90II; spf=pass (imf28.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=usamaarif642@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=1722798166; 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=Hz7R2Ty5rI644L+aZRwcCu+6JYHROtbtRIc+iiT+6Oo=; b=6K6/sUJG0KJa/I25nYyWfv+G4nQZODb3M0R/Dnwhc+9YGTSvhSCvS97NkBs/AYEBGPaXjW 992lDXmhRmQt5ke0cyhiQYObi5layYNhSuFaFFaOGQIJ6sR6KdC+mDKIi3/D/vHfn3CwwC Z/sr7kv26Os1O9AlU+rQ8tTAOe1oY1c= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=j+2w90II; spf=pass (imf28.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722798166; a=rsa-sha256; cv=none; b=c41dRubR69tetEUWqQtbnVpV2UU2rp5G0PChOP8f/geiixj3aqg0cJBoTK62pZigKNGA2Z VOOx3Dr/LO1YF0YRHbaAhEQn6Nnnprqc/M/+TN33hm4NLtH+SWNVGVIOX1JkZ6U8N88msy osLZlHa7Gc2t6qrRfvCs+rJ1xCXmKlk= Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4280ca0791bso62820855e9.1 for ; Sun, 04 Aug 2024 12:02:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722798172; x=1723402972; 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=Hz7R2Ty5rI644L+aZRwcCu+6JYHROtbtRIc+iiT+6Oo=; b=j+2w90IIojnh70HPj3JW6m+69LVHLf+WZ7DH1MGax+T/IEwO94B4zBBNTO1wbulyP5 MOOtb6rToBYcflT1DgX4UqwBngNGOhNjTuGZQL88JnIq4DB8x60/QdRMj3pzTAqBlgT8 U0QUZOzYJTc3NmMEjW7KjyLIWBKr1Y/oQsXUOGU97O/oCUnGqZ/rmdRXb/UUgOgQys1e ZsDgVBmT3K5ALwAw6jf+1sluosZDxyM/cvrGPZ3we1t+x2Kb+vb6hH7SJM/od0hzZRmr 1u1kDd65KH4NMtBMoPCvC0TJSAlV5pV83qdJByqWY9pHYxaofKTCH/6pohNiJdeXpivN SmfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722798172; x=1723402972; 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=Hz7R2Ty5rI644L+aZRwcCu+6JYHROtbtRIc+iiT+6Oo=; b=XwZ9wX5AgTWOMDdDLSkHNqKNPtRrcI1418ZRkU9UmFQiqrcXp56M/qqbyKGNEDLJdr b53Y061WeoiLQX6CgS6H0i9CAx0zw+LILCiXzAETmUZbU+7hxjDxyZi7UdcXGe6xybwF TI9YNyH/UMAfC3j+4wYT4erG41plTZ3lROyfsWArtsXQrG1KxxV8Kc/El996qkK2nJHn HwjTx9w3hN+MzgqKSL4Lz4JxKrQXkdACKfgls4zXHHWqkCR88ACNeUfRtIdVV1rOqy6N fnPYPCITeDYXZWE5Vlgrq5THd0CXT/ydH+UCY68LUCm+jPB6NCRJRRFwS5IlntojknO9 hepQ== X-Forwarded-Encrypted: i=1; AJvYcCUkuBWUKT8Ae6TuQxOOy63grRNhiOCHTpZ3zS0DP6i7nyUNzt1WgoBVYfxFtv0a4KTnqlUlRrI1D+bLzVV6y5NGPTs= X-Gm-Message-State: AOJu0YwNli9x94e5JtOhzGgoSDW8zSow2ApQcexZQVPW70jClVSqHeGE 7cERXgM7ij3ukAOAio6ZCS5YqAAxFLvhn/8Pae29SgTccx9eLBhE X-Google-Smtp-Source: AGHT+IGqNwpIsLePU/mO8k7Ngroe+oB8mKVrvss3k+CKug2OPvlElRGfv6OO825J/c9b1H1bKcvtXQ== X-Received: by 2002:a05:600c:524f:b0:428:17b6:bcf1 with SMTP id 5b1f17b1804b1-428e6b0a2bcmr73653245e9.22.1722798171311; Sun, 04 Aug 2024 12:02:51 -0700 (PDT) Received: from ?IPV6:2a02:6b6f:e750:7600:c5:51ce:2b5:970b? ([2a02:6b6f:e750:7600:c5:51ce:2b5:970b]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4282bab9f7esm167222755e9.21.2024.08.04.12.02.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 Aug 2024 12:02:51 -0700 (PDT) Message-ID: <6622b7b4-e558-4d14-bc72-33e8008b06ec@gmail.com> Date: Sun, 4 Aug 2024 20:02:50 +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 , akpm@linux-foundation.org, linux-mm@kvack.org 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 References: <20240730125346.1580150-1-usamaarif642@gmail.com> <20240730125346.1580150-4-usamaarif642@gmail.com> <3be3dacd-1f45-468f-a363-b9d3a10aeb89@redhat.com> Content-Language: en-US From: Usama Arif In-Reply-To: <3be3dacd-1f45-468f-a363-b9d3a10aeb89@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: 8ut7xhq33jrt9iepxfz1gsx4sfbgwuqf X-Rspamd-Queue-Id: 46D10C0006 X-Rspamd-Server: rspam11 X-HE-Tag: 1722798173-786882 X-HE-Meta: U2FsdGVkX1/CCdGGP2wGuLgd0XywfxmzmAwVPo5VPGMIZtw3vp+iUAbwsyluZ7q/xcQF5PxlN1ATzEOAxX+ZkIP3tPqfOZsnjLmww2hjezsWayLtkEOyuqw3aIQCblzipJ+1dqOXGMSmX9vssnlAihh5N1A5nvw83LvevM1S/0JkZWem08/vRF0C16x9qYKPiIyTxOZUzDzogTDBh64PFlx+4J3qtrcgqIkIEvGpsKpPlfE/+7k2pDHnEZKDo5o5MDVSbEzevFgqwBIQUl7glfoMSqLdSrC+xw2eU7hOQRSZvSdqOAVh/d8hCHjniLyXsvcx7l6/x1iwfpgEB4rv2nBuIjz1pfJounnPLDx/MdUNUlJZqTztDXuzJ6JBZ0uf8BtX1dyRgvFw5SAHtW1I7PvayT3ppfU2iYV1U8mPeCBOn3O0aFRmBWejyraj/GYZVo9gomi2riaSnJXdNl16Z28JDacQ2O0OQTCymb+k47E9B6s5u8WAXEOdcNR/VUZVTUIU7n3wXZ8NFtlm6b+5LQ3w/To3Y4ua14lK1OyrKqON9Ixe0RO0uVrLsfEp7Uw3DI9P64sYLKMVjcbQuSontAUarr2a4GYIy7XYpnAvhHv6N2hd1WRlWLTmayNGF+KDsuCcMpTNwdjs4l3LNyeIpd6Xv14Mi1pqhkg1bFMa4pvMzugwB/LY3Jq08dS73PafFMs2qVjb/47/yuYwSY2wdLcqj2C27I0u0vCevNtgzvsp+06KitU8e5OjDOg/RxWS20Ikoa1l+70Ud+Y/lYRlyNrroT90+YsrtgGj8JSpByHjxGN+mQyQk+G5rQOUD9powpt5rUQYnDaEtyUYKdM4xHSU/aUb0rpfTaDmLArfMUcv4xD7N9WbShrec/tJH8xHjPRRbv+8Kb9lr+KuGKxhc5vdivMd3U5BlRVg3Lgc5CETl/TlBW8ydusiVD6zzF6G9FZN6mq8+SRwsK8rUkx NOakA3Ol i29CE0eDLIC/aWwD/iJ+jeFag7J1YlDATZivBciiQ+w1nrdzKswwuXMWSrkKuUiDs47BM8YP1PwOMKbsos+aU1axW0LzyXTT/Y4ulD0n9e2TKNjXTd+AGEruTQPISqd86lWZe/iKO0kdTCIw8c4ixgNkg15BciLnipWEvLQxReL0oH4TRreKoGqUZXNm82BxHPcPAaJgIXsa0nCE9j6JQ7xdzqg/a09XsovR9JkBuSKZGvX6rDNej2AWmcnVB9cu8NjpTby1EcUXFvreX+X9U20ZkcS6/gy9aJ+mxLdn0D/TPtZj2JS++OkMRXq6817J2W9AdGTehqmUXxxywMVepEmpvLxlW9Hf7b5ORdObE66/r6JIfxWfNJU4te8KRR9cX3dHCV370tFZyWGR0RvTL0yskdUNU+q2UUkd3aab8wmRDfs9Wk57xt8KFboPMrztq4UUx7tHP9+QDpm0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, 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 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? Could do below if subpage makes sense diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 3305e6d0b90e..abfcd4b7cbba 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3041,9 +3041,9 @@ static void __split_huge_page(struct page *page, struct list_head *list, * 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); + VM_WARN_ON_ONCE_PAGE(PageLRU(subpage), subpage); + VM_WARN_ON_ONCE_PAGE(PageCompound(subpage), subpage); + VM_WARN_ON_ONCE_PAGE(page_mapped(subpage), subpage); ClearPageActive(subpage); ClearPageUnevictable(subpage);