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 EBA6FC3601A for ; Mon, 7 Apr 2025 09:35:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C06C96B0005; Mon, 7 Apr 2025 05:35:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BB5BA6B0007; Mon, 7 Apr 2025 05:35:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A55726B0008; Mon, 7 Apr 2025 05:35:33 -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 852666B0005 for ; Mon, 7 Apr 2025 05:35:33 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 95CDB5A7FB for ; Mon, 7 Apr 2025 09:35:33 +0000 (UTC) X-FDA: 83306740146.05.E8CAB1E Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf20.hostedemail.com (Postfix) with ESMTP id 57CEB1C0009 for ; Mon, 7 Apr 2025 09:35:31 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=sKUPehjl; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=p+3gHAxa; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=sKUPehjl; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=p+3gHAxa; dmarc=pass (policy=none) header.from=suse.de; spf=pass (imf20.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744018531; 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=zdEJny3/VBP03aB581FoxjL9u5A22mqLI6LNjJvhxZ0=; b=IApZ708E1ZGRLs0SijA/zwEFssDWWO95GdjEcUlfdO6WXANa3/r3DpKd6BGFygwqw5J2Bu Lb1KdjD3dWoh6ym4E+4CyD6RadQQVsLy5QL+wKxhlb/ADhT+y3BKmmTNWNjDnq+acKWAjg OqGLQJvRcLNpJujvIu7Ubl/0ZUi+BOk= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=sKUPehjl; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=p+3gHAxa; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=sKUPehjl; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=p+3gHAxa; dmarc=pass (policy=none) header.from=suse.de; spf=pass (imf20.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744018531; a=rsa-sha256; cv=none; b=XfKnsEuKBqEmyBULTlqXhluzCSCXWBTzaD2F3KOYp/aas5moQh/BxWjMiPJKY/ycrC1LsS xa9bkqBiQnr0VMjBpaOUMucXW2ALPFWIPfnmGT8pTXIZJo+71EPAvQgdGUGv7jwZUzQ4Hz IG5HbrrY1amQNZYMRFLy5+PrnEXIW/g= Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 9372021179; Mon, 7 Apr 2025 09:35:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1744018529; h=from:from:reply-to: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; bh=zdEJny3/VBP03aB581FoxjL9u5A22mqLI6LNjJvhxZ0=; b=sKUPehjlhajViAONVw1CwW20tPKkEhJvVkFnesM2XXfiFki49Yy+i4ia84igaAkpkSePXm WR4FZtBVSS/KoLmCN0cSDUyhfESgcyshs2+rQUntof/hh3Gq3rAsXhdvY53deNU4uxvaKc ianNvnOtK8arBwuhiAqhNq0sDRs9D24= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1744018529; h=from:from:reply-to: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; bh=zdEJny3/VBP03aB581FoxjL9u5A22mqLI6LNjJvhxZ0=; b=p+3gHAxaCdLvazyGd5jzUcpTVMQKpqwERvrVIZLeHKCrkpWPRZmU7N2qqs7sdyHRZkNhOz p7IhwZ4obaO7mjAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1744018529; h=from:from:reply-to: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; bh=zdEJny3/VBP03aB581FoxjL9u5A22mqLI6LNjJvhxZ0=; b=sKUPehjlhajViAONVw1CwW20tPKkEhJvVkFnesM2XXfiFki49Yy+i4ia84igaAkpkSePXm WR4FZtBVSS/KoLmCN0cSDUyhfESgcyshs2+rQUntof/hh3Gq3rAsXhdvY53deNU4uxvaKc ianNvnOtK8arBwuhiAqhNq0sDRs9D24= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1744018529; h=from:from:reply-to: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; bh=zdEJny3/VBP03aB581FoxjL9u5A22mqLI6LNjJvhxZ0=; b=p+3gHAxaCdLvazyGd5jzUcpTVMQKpqwERvrVIZLeHKCrkpWPRZmU7N2qqs7sdyHRZkNhOz p7IhwZ4obaO7mjAw== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3506613A4B; Mon, 7 Apr 2025 09:35:29 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id j/cvCmGc82ckRgAAD6G6ig (envelope-from ); Mon, 07 Apr 2025 09:35:29 +0000 Date: Mon, 7 Apr 2025 11:35:27 +0200 From: Oscar Salvador To: Jinjiang Tu Cc: muchun.song@linux.dev, akpm@linux-foundation.org, david@redhat.com, linux-mm@kvack.org, wangkefeng.wang@huawei.com Subject: Re: [PATCH v2] mm/hugetlb: fix set_max_huge_pages() when there are surplus pages Message-ID: References: <20250401082339.676723-1-tujinjiang@huawei.com> <18dde837-3fb0-43b0-5d02-f78948d68d77@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <18dde837-3fb0-43b0-5d02-f78948d68d77@huawei.com> X-Rspamd-Action: no action X-Rspamd-Server: rspam01 X-Stat-Signature: tyotb1577muqag6qk88u8jona8q4yta6 X-Rspam-User: X-Rspamd-Queue-Id: 57CEB1C0009 X-HE-Tag: 1744018531-635035 X-HE-Meta: U2FsdGVkX1/70L1ZMRsuLbI+PLRl6hx4JFOcwAOEB+LmFIL2KPDe4Y2D3td9kE+ChWblDEcUS5eTv2X7SdKziV21lMKolvN2eCLd0gMFVhGp/4LW56g6dd6uBmISkrzxjiI+vhZErERgGWMdJhCuX7oQZLnsFXgsLImDv5svS5OyjOns6YUzSxOFQ7K9kW/mVBT66ZSHhoo5P2hUoMfrOojiyuNo+r2vD12WapJWrLRzve76cN+fj8J0APUaN8dqICOkaxlNcj8ML/tJWDRRdBmrJ1G3DPVEV3jbvHjXrjaBvbU2lbJSeFlbYQtv0IX4AIgW8pXqqXVnd2L21L4XnmNhG05pjcIOmV6+weKGf+W5icBs6CgHv4JLCpLwm0TpaO/hG2DqyckIg3kJpeMlrVPEtebxFjxYQzxth9ZRkSaax2C5V0WQU/TIc2c2y68VfzLQKoFs7u+DNKK3LQC49WfYj3jOVwOdQ+rU6yPYXeyFfs5IJV56N1THAuny9TuDAkXkPpt+J9rwr/pI4fLxSx0S+dKtWKQgGjBUhLPiMM7LC4h5Pq1Q5HmrVTTW77Arbn4wKE4452Evdh70hJ4qe38TLJljpFvvii5HQgFoVvay+Vo2EGLkH135qJQa+sd0aBvDCK39kaGQdom7ezxP5CykNa/fjLfHrP7j6rYGrf2EpSKPt1WpNJUn+zN46LpsZdwE/ZwHhqyB96vvdAbp3VOFCPGKx50En8x01tHk3KmN4jVclptmhbVgvjb0G4Y80Jj9j120N4GbbxOk1XUz+3o/R9kw0CPgJJo22ZedCmz2ehzRddOxxNqfYVGbv31MV4efDHl/RVlduQAh05FnayZZbSmRn1sjI3sxQSR8x6w6GQ64oLBHKj69nWLcTN1ZnybXONkOQXfuMRqQrXoklsWg0afOtSB4j/th+EkGaMVRrGs+xZyJb1/zhbqgIqfVPLTSzjhMoP3E6uaInlc mGKL1HB6 oaKMEbeXW4zLG/a5YnQKTWHUFbWbdTMOOE7UTpQYpNXQY3KPS7qwSaKnJWbdsxaXMQoMEzwBvVJwvKyXpMVtS2RFsUAXyzXU3HsI8fE9ZyAng0Jcx+EO4sUsY9w0HEBeNRwrHZTk1pZxAWEM0K6KmTLXZt2w/AlSGY2DXH6/JHWr+1LAFpMw7NtXVjT0haptpruSr1YLUxwaqPzASEY9lw3LIsdb4Ito/2rdOUdipYDIm1VYqhpfupNmWnLwtRVZjnTX4I4nBZ5oGWI9IYKLEdyafVzeSaNE+tAobxmHoY+vo1XPROplmehzqqJx/TyhYeuJHFge2ouSx2Zk= 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, Apr 07, 2025 at 03:23:08PM +0800, Jinjiang Tu wrote: > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 39f92aad7bd1..4afcd5ce417c 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -3826,6 +3826,7 @@ static int set_max_huge_pages(struct hstate *h, unsigned long count, int nid, >                               nodemask_t *nodes_allowed) >  { >         unsigned long min_count; > +       unsigned long persistent_free_count; >         unsigned long allocated; >         struct folio *folio; >         LIST_HEAD(page_list); > @@ -3960,7 +3961,14 @@ static int set_max_huge_pages(struct hstate *h, unsigned long count, int nid, >          * and won't grow the pool anywhere else. Not until one of the >          * sysctls are changed, or the surplus pages go out of use. >          */ > -       min_count = h->resv_huge_pages + h->nr_huge_pages - h->free_huge_pages; > +       persistent_free_count = h->free_huge_pages; > +       if (h->free_huge_pages > persistent_huge_pages(h)) { > +               if (h->free_huge_pages > h->surplus_huge_pages) > +                       persistent_free_count -= h->surplus_huge_pages; > +               else > +                       persistent_free_count = 0; > +       } > +       min_count = h->resv_huge_pages + persistent_huge_pages(h) - persistent_free_count; >         min_count = max(count, min_count); >         try_to_free_low(h, min_count, nodes_allowed); I think this is ok, but this needs a big fat comment explaining why we are doing what we are doing, because this us too subtle to grasp without any context. Like why it is ok not to subtract anything from persistent_huge_pages, and the circumstances that might lead to this like that all free pages are surplus because of hvo failing to restore and so we do not want to account twice the same thing. Actually, while you are at it, it would be great to rename variables and give them a meaningful name (e.g: min_count and count). That can be done in a follow-up patch of course. The reason I am suggesting this is because it is not that easy to untangle what is going on here, and have more meaningful names might help. Thanks -- Oscar Salvador SUSE Labs