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 E1C93C282CD for ; Mon, 3 Mar 2025 16:58:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 59D80280025; Mon, 3 Mar 2025 11:58:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 54D10280024; Mon, 3 Mar 2025 11:58:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3ED7F280025; Mon, 3 Mar 2025 11:58:51 -0500 (EST) 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 20050280024 for ; Mon, 3 Mar 2025 11:58:51 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BF73080CF1 for ; Mon, 3 Mar 2025 16:58:50 +0000 (UTC) X-FDA: 83180849220.06.B00CF1D Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf21.hostedemail.com (Postfix) with ESMTP id 71FD21C0019 for ; Mon, 3 Mar 2025 16:58:48 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=JJ3DHhBZ; spf=pass (imf21.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741021128; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wTRDB4UFZjsCv4E5dv3rGEUaI4YH49DqaGlGq3dSoiU=; b=UZFtxkBpvd79xDhcp0CMosg5oIiWP/r+msnxVbzoWQ3eziGPt+Q4NoAVh8ELQXgA4XCxuj KBwEW6+LZBcq6KWWDzKjU5aPGdV5EwwbsVg78cOlPJFGH8WhwqxN8tgxz25Q462JuXyhL3 dRYbycJvoB+nhsKpCbG8IRqEKGqEO9I= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741021128; a=rsa-sha256; cv=none; b=Ji/p6EnJTnfWYK1JNfORz/Qh0p63hVnBRv1uNjxE/C4GDfJ2OOobW1nunFjd+wvurqv1gf oRkLMe2qdYLj20YpZiCD6eBS70Zk772EyP3UuCpf95PE8+fEsiMxDT77XuGnToVRVt+bHW 2JhW/N3RnrDXoyObt4U+pbYLbGsD1vE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=JJ3DHhBZ; spf=pass (imf21.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741021127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=wTRDB4UFZjsCv4E5dv3rGEUaI4YH49DqaGlGq3dSoiU=; b=JJ3DHhBZjGaFluu+GJcBL2mQp8tLBiwT29cQSCipAuzHXS5iimOPpH3Lvy2n4W5SpA3Q2Y K/lXNMZ5coKvdAc31mYr4u5xhvkX5Lpnj1IoBeu7bvEGXDW2SjcCKEBMxf3Tn3IPE6CikX U+7yOYXAJGGhbwpPjEXNHUJMzBmhv+A= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-342-wdxBjkaUMZqn3b4YBHlvrw-1; Mon, 03 Mar 2025 11:58:36 -0500 X-MC-Unique: wdxBjkaUMZqn3b4YBHlvrw-1 X-Mimecast-MFC-AGG-ID: wdxBjkaUMZqn3b4YBHlvrw_1741021116 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7c39f83562fso671498585a.2 for ; Mon, 03 Mar 2025 08:58:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741021116; x=1741625916; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wTRDB4UFZjsCv4E5dv3rGEUaI4YH49DqaGlGq3dSoiU=; b=J8z4CjNz2gZCrqOGnsUccJXDMm3eyH+214UzvFEDW9bwmgM4ELSb07DYulTSY+raXG qMRckbexWTVnmgaNsc5PuwoyeiMZiK/x1j8JrVTf20JkaqREoAByCRaK9FtwWNDkFoBp 8r9ITzpMyZyt9axjT9NfBSMnngpaJ7QmFHm9GVza4l4fhyTuWIYB/xUehJ9c02Zc8hFA DyN+0LOs5JHfpKTCZV713zs/N55WU711s86ICz4BkfhWqyEOWWQAt9SYqfdLo19IaHsT xT7riinxgRpho1sBVBZ7i+G16r3Xin+OaYOZkpf6gvlC92dHZQrVx3S8rgB5tNmANzRO gtag== X-Forwarded-Encrypted: i=1; AJvYcCVtXpkGEZsmB5ktklFlfZwvRoPgM1ecvAxdUKJiydZO6YF/gfuiQjXutmuas9SyZDbv3xZsOjBT4Q==@kvack.org X-Gm-Message-State: AOJu0YwGuRDDAr5imy7WCeECKo34kXhiRCH4TzT2UkWjl0HOPfWfK7iS 2YzabUKmzeW77h4HIvoWzxuOksOHiHNyS2fjdEbtdU1S6Rbauwv3SB0A39WlQtdkc4TRpCz5P+c jfYDGqXwQAoVTHO/5G+7MSIl+E3xgKr3SrVlJH4v8Jkm0GT4a X-Gm-Gg: ASbGncvECuUNEHjaL0RzdXb/35muZBulG6Hix2hQ/Lxj5usu41hjnVyMzLpA+T67gBa G5aNRzdOgO+Sq/Z5sn+l+2mHYE2oMDGFfiuknt9CT9YKWCAO9LCwhWfjISYhoWPkn0q9o/wqB14 M4ZAgRxQbw4ePHl34L4f3unvvw8jAvQc6izsM5LRbBqp8IeUNI/0q5cDSaZXyG0UcL6pM2sUvdO 0WXsoExlhzJn2FbKdXoxmGTNWePoLg7CeSZzD2z5iNLrGH6j08SXZDUB/hjze9glLmYI8vpBtBk oKSBAs0= X-Received: by 2002:a05:620a:191f:b0:7c0:ab46:396c with SMTP id af79cd13be357-7c39c4b0068mr2096235085a.21.1741021116476; Mon, 03 Mar 2025 08:58:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyqb/M8x75akTxj3nvEdRZoMP6dagwsz5JQRmS5VKUbc7hPZabKUoTMmDqPfLiz9tdHjVsMQ== X-Received: by 2002:a05:620a:191f:b0:7c0:ab46:396c with SMTP id af79cd13be357-7c39c4b0068mr2096232685a.21.1741021116192; Mon, 03 Mar 2025 08:58:36 -0800 (PST) Received: from x1.local ([85.131.185.92]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c5c38f8bsm62446385a.101.2025.03.03.08.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Mar 2025 08:58:35 -0800 (PST) Date: Mon, 3 Mar 2025 11:58:31 -0500 From: Peter Xu To: Liu Shixin Cc: Muchun Song , Andrew Morton , David Hildenbrand , Barry Song , Kefeng Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/hugetlb: update nr_huge_pages and surplus_huge_pages together Message-ID: References: <20250303024105.990297-1-liushixin2@huawei.com> MIME-Version: 1.0 In-Reply-To: <20250303024105.990297-1-liushixin2@huawei.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: tu636urBtstYTyuXO9sVC13iACnYBzzLnpHA956c8XI_1741021116 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Stat-Signature: ot6m73emnyo1wxm8uyywtody71xkef9b X-Rspamd-Queue-Id: 71FD21C0019 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1741021128-348644 X-HE-Meta: U2FsdGVkX19fSqkYGo5yeos0KLRthVmX7Ji/qVnlYCdWXQW+7OrHTUIT1QCCSMaCJ9utW+Z5kqPa5Ly8zIofDtUjrsVdvX2dMAKI/W6OabJeNoUKKgrJNVVVhUiyVh7ZV/lEYtcXhORKAP51695B99br5C/e4znIM5e0oCXDmTpABJyFaoLX8WGkYGTijf86iHHmE/8uBQVnLtKDlUfonnmmIexj7D/brMtY6QQIBBynLihRpNeiEOmhWnKCJHWrq29l5V3mvaB/tfIMauh8Z/PNS+YrKuQnX+VyvMUECMi7cIqujOOOgCyVeDd+QXfJgX082QXspoaxFWJqGoVAVc6kV3oLP5hhDeRLWD0Z9w4PozBjoLtcRA9goPuuQbRZC96p2yrfp02GiEV8NsYvsyV9EBY/PvVI4gObCVWAF/k3b3b9Ix5z1Liac60o3qv4TbvxT1PWKHS/iD8Qf5ge4ZDhKb1Ses7RMlz5l7NMN2qUKj10uFaz905CSXksmVhTAWlVkagBu76z8VFyZAoe7q9LuHVlMos2conO3Ga2IWdePNnpqF0YnRLpVXrdPSPkHVX4xk0PTy0jUgSlbG7E7VwWt6vbE1qa2zd+n45CB/LzJVjo2gVgu57lZaujBQKH+Jq3cCkxzA3WgOiigTidQ/RGBzGfbzAE8bGA0WpNZBGXCZYtWvqHB1pte6bLzDO9UgiYvHn0W22jAiPa1mi/9KcGZ2bc3Z2Un902ATKWLODZX/e72njp1B6dHvUAr4NX9DGIaTgxxbMOKCu1zYN7xjxPijqF8afaN/ZurDbC/HBZRQnqJyVd28lenX3QZO4+YVB3prf2q3GDEiWOmTHZD+eUVRvyFh6SqkEqQBOzIHvhQnOix7IbaOgrXPf9vCSdXkKierFv+bD2tJhMBpoR0awE6JLxcxpfn0SChUwq1XVEeuJBwYm5hEZzd/uRrEMGfMjv+b1cD++ApJsR4hF QEYAM7WJ SAeO71jxcNsVa474oeCbQSSHo97dvzqhsrcU6ml2S2S9dVDUch1iNkQu/5V9isFo8oBPmIR8HKtAsm2wgr0TDBluajfoxKk8gcpBoVcIMOL/qLfiJhBiQFdxB99n/LU7DaWz/+4s+Inzj3cQ+EIhDOdY3QtYPL18+u3zVbmDVZkvWvmoq4ib2vrG031Lw6YsLSSyo7h3kJ3FvWBHc3dVRODTlvhjgvV4Sz42xV9kJ4CA+9Y4ClCseaOyf89aU/qlPgj7t/UN4Llka33n8NpC1VEEIDAbNLdjvrEa1gyLB5FVQFQ43hqRjkOgSdNtwaQ14klAdXe0smj6PKCoLVE1gQn48+3hnfu+CEfS6r/0HdvfcYj9TuJF/TcT717D1wxzZAAB1SgpikFuFVygjOIdQNZDA/Q== 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 03, 2025 at 10:41:05AM +0800, Liu Shixin wrote: > In alloc_surplus_hugetlb_folio(), we increase nr_huge_pages and > surplus_huge_pages separately. In the middle window, if we set > nr_hugepages to smaller and satisfy count < persistent_huge_pages(h), > the surplus_huge_pages will be increased by adjust_pool_surplus(). > > After adding delay in the middle window, we can reproduce the problem > easily by following step: > > 1. echo 3 > /proc/sys/vm/nr_overcommit_hugepages > 2. mmap two hugepages. When nr_huge_pages=2 and surplus_huge_pages=1, > goto step 3. > 3. echo 0 > /proc/sys/vm/nr_huge_pages Looks reasonable to me. However I'm not sure whether this may cause regression on concurrent allocations of surplus pages. Would it be possible to stick with hugetlb_lock? IIUC only the allocation part of alloc_fresh_hugetlb_folio() needs the lock to be released, then we could also update the two counters together with hugetlb_lock by open code alloc_fresh_hugetlb_folio(), and move __prep_account_new_huge_page() out to be after lock taken. > > Finally, nr_huge_pages is less than surplus_huge_pages. > > Fixes: 0c397daea1d4 ("mm, hugetlb: further simplify hugetlb allocation API") > Signed-off-by: Liu Shixin > --- > mm/hugetlb.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 9faa1034704ff..a900562ea7679 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -2248,14 +2248,17 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h, > if (hstate_is_gigantic(h)) > return NULL; > > + mutex_lock(&h->resize_lock); > spin_lock_irq(&hugetlb_lock); > if (h->surplus_huge_pages >= h->nr_overcommit_huge_pages) > goto out_unlock; > spin_unlock_irq(&hugetlb_lock); > > folio = alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask); > - if (!folio) > + if (!folio) { > + mutex_unlock(&h->resize_lock); > return NULL; > + } > > spin_lock_irq(&hugetlb_lock); > /* > @@ -2268,6 +2271,7 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h, > if (h->surplus_huge_pages >= h->nr_overcommit_huge_pages) { > folio_set_hugetlb_temporary(folio); > spin_unlock_irq(&hugetlb_lock); > + mutex_unlock(&h->resize_lock); > free_huge_folio(folio); > return NULL; > } > @@ -2277,6 +2281,7 @@ static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h, > > out_unlock: > spin_unlock_irq(&hugetlb_lock); > + mutex_unlock(&h->resize_lock); > > return folio; > } > -- > 2.34.1 > > -- Peter Xu