From patchwork Sun Jul 30 12:51:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xueshi Hu X-Patchwork-Id: 13333408 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 7501BC001DF for ; Sun, 30 Jul 2023 12:53:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D461B6B0083; Sun, 30 Jul 2023 08:53:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CF5996B0085; Sun, 30 Jul 2023 08:53:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B22AD6B0087; Sun, 30 Jul 2023 08:53:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9C3F56B0083 for ; Sun, 30 Jul 2023 08:53:39 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 67800140830 for ; Sun, 30 Jul 2023 12:53:39 +0000 (UTC) X-FDA: 81068269758.22.D8820F5 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf13.hostedemail.com (Postfix) with ESMTP id 924F02001C for ; Sun, 30 Jul 2023 12:53:37 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=xfjPRFcF; spf=none (imf13.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.169) smtp.mailfrom=xueshi.hu@smartx.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690721617; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jlQkMU4cF/hjZqMHpdN03ub5kmBv2LTR3B7VOKlYmFQ=; b=VXe8iJeXkp3PeM2nuhTxgWWqQvHlYh4oWshuyjEcb+cldnfryBcP9tW9ywzYgeII12VEuT y7ftK1kuBvEYl0mNfhaWNJqa3Iu3WhLw3r3Kgni5xcH282c/p3LO5XwIu0P0sm53KWkN59 f4oWRnPMuYBqKq9IoDz8qbIB6deVzVE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690721617; a=rsa-sha256; cv=none; b=nOG96kVR0SWpSD5wI4Ror1xdLGx1YnrJuiKomer7seFze26CX4ABJ5LF5pftAUdFBzdAAw q+JlxeHEfNmG+c2hYF+kw4p872eyZBlWt0ztd0fqsYmUFEOYkxD8ydSoLZwTmXN9sfrKJU Cgr5uB5JaSxqlDffNcDmwC3UzcAmROI= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=xfjPRFcF; spf=none (imf13.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.169) smtp.mailfrom=xueshi.hu@smartx.com; dmarc=none Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-686ba97e4feso3670500b3a.0 for ; Sun, 30 Jul 2023 05:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartx-com.20221208.gappssmtp.com; s=20221208; t=1690721613; x=1691326413; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jlQkMU4cF/hjZqMHpdN03ub5kmBv2LTR3B7VOKlYmFQ=; b=xfjPRFcFKHrLDu9ws2B8PMZOkXfhQT5rAmIJfbmOdYbTuKIQSMy07LHyfZ6lC9tuaO EB6jxTXz4JZKqrp+cQkcb5gdyQjwT4Zr4wd0IEbIX4E0hDhbZezdJiENZP0Z8tX0Xff6 RQo6y05OKgARifny3n8kbB/XFr7/1CTTpEpdhnFTEDglFAnmA/ctxZxkDJI+7vR9gQY7 0AftgxwEWyP9sb7U59KkIbzldja95urcS+grC9CJ/1QXxjFeyFF2dOXrhz00RytM2bU1 8JwXQfEZEWBd8BFdOk2HPceO359bqu50wy6+Hf+hx9hYrqsJqeE5YJMkPAnk8Tmb6tW5 t9Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690721613; x=1691326413; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jlQkMU4cF/hjZqMHpdN03ub5kmBv2LTR3B7VOKlYmFQ=; b=P6Rh26FUlLcn62y6SqdlSjE09rBGuW5pE89l9tUfQC30wgl3D9Z1SAfVG6ltVb/yqu ZUMtzyzrWJ2wV7SRzci9Xqt0D+i1bivh5mb9wAloOkuJRaTDW7JfddCUPTnZnjzju7cP KZ+kZxY+cGQcTaPrfQ8PuOxBtY29QHq++u+jl3QLH9LdjS/hy+SNIKfP+Q1xCKP4wJtG gr6xBbCCyPSq6J5f5eOcP85sNm1KOFo0018Uq5bzoFMclcsQcekMVVnFuq0CPduYL1WH A3wZNu8RdzWWgHvCwFHeM0ibVO4Kn7ZuIXr1XO3AN2gJMqNF2iLW6C+TefQnxj0xKoil OrJQ== X-Gm-Message-State: ABy/qLY1gDXBKZy9B8SWrfdKMHr8nYrLA780j+jGgmlJI109y6lcNH4s 3EKmnVhh6yYs6XtOJeVvOU7bgA== X-Google-Smtp-Source: APBJJlHAGbBmg1yL9xVjAxJKJyaNHrWCQ3Y76Fmeg6JmhSUc/ZxSUFHLPNEE67dSbB/PXU1/+8W2gA== X-Received: by 2002:a05:6a00:1ac9:b0:686:babd:f5c1 with SMTP id f9-20020a056a001ac900b00686babdf5c1mr8939112pfv.25.1690721613421; Sun, 30 Jul 2023 05:53:33 -0700 (PDT) Received: from nixos.tailf4e9e.ts.net ([47.75.78.161]) by smtp.googlemail.com with ESMTPSA id s9-20020aa78d49000000b00687260020b1sm1731130pfe.72.2023.07.30.05.53.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jul 2023 05:53:33 -0700 (PDT) From: Xueshi Hu To: mike.kravetz@oracle.com, muchun.song@linux.dev, akpm@linux-foundation.org Cc: linux-mm@kvack.org, Xueshi Hu Subject: [PATCH 1/3] mm/hugetlb: fix the inconsistency of /proc/sys/vm/nr_huge_pages Date: Sun, 30 Jul 2023 20:51:54 +0800 Message-Id: <20230730125156.207301-2-xueshi.hu@smartx.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230730125156.207301-1-xueshi.hu@smartx.com> References: <20230730125156.207301-1-xueshi.hu@smartx.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 924F02001C X-Rspam-User: X-Stat-Signature: aa9yxme1prg1dz5xxth1j8ndhawz3786 X-Rspamd-Server: rspam03 X-HE-Tag: 1690721617-169178 X-HE-Meta: U2FsdGVkX18CDfU0wN9Ytn5p6X0nkHdwoaZIhwbnFnUM7DK7Y7KWifpRLugt71L0T2n1GBnltuM77b4V7Ap39ZRkzurO80sBzeu6SxY+qHWtLqPC10XVT2BVkyev2LXhm/pCXj8Lj0Pyz6kXZZsHxFgdlknarxxfBo3yd6c7l/IZQ74faNfwDQhmPDP2RagH7TCjHO00iEqtO4y5CFV5Fc4SoiyXS5W2XT7EziHL6o5LlJynlIAsUAVUXRs6yyY/jL3P35m9Hizh34m1krZNAzyvper6kxK8coyJ9j/FfBb4Saneaz0Ceak3Zmq+ez0Z6DxJHsuhDX1ldVXh/q9FghZna9eVQuZOTc8fQwMIvTMo441F4rKXxvcf4f/hg3CZZ0N9AjviC8dHJxEQJ4tuPWYs/OyJTBWH0ojaZ+0L2EWZ/Y/F+T5rXwn1ZyupGZI16YLB7zDpZhInRCjGP0Xt/2D3cc6UL5M4rW18MSHuc+7zmv53dEbBf5oGunkFMOgMibhR1apK7XwdHNh32DrZH9xDqmbQSVPQnWjw9KyKhwMbCeKIpaO85EYEydX/zLLa9gRRgoDGm7G2CFJBbYKfZKnBAVlIHdvQD74XmEA22853KLEXiefvB9LLEoKvCMyb8MbFRNERZjQJvLiXCQmV6RRJJe92g4VRYqQHFw8XLHs3HttaTB11tItoUc0RsvB/eXJEh5EXv8LifNI8JjfiPE9VhrOFKK0+Y6sqWcxgT/A09MFxtFZppCuhTts6LZEl82oM0NVouE8Ugd78hrC4HzuEsXFXtdkXnlZ3Ho3pV5Vt7YBD84bJCx7VJnpYRq/5sxSOqINn6aa5uPXv5xwHL3VezukPzPDthGsfCHQ8LAHXWQJiySFk68VM8yrGN9vmwlxmX+/xeOZ0j7L8Wrl105RNctHtsgLJd3hlTVoFQzM2v0UkkXZz+L4D3Xle0bFZ9pM/zHY/VaSlAETI+TK lXRthGen UjrhwvBT61iIFNEFWfAcHA4f5AVkxGfKDnJcfvdEPC4HATaq1rknFi/Q3cTwAMAToTWd71Pp4Wg7bO+qfH5nn7WGX6uxL1aYPLV7cVM2YjmMkXgGr96lqO7uc/tS64hVv02C17YGVLRgwAiY7bGCYDzbJZFjqrRS6sI4zTnOEihgdD45xe4k/YffuEGitsJlF3aIy6bIXKe3LswdvSga9p+S9lRHpBAp6oQa4E47uj/yiv7lihYa/GqoSygf7Wdbw2u8rnYcERN7e4Fx/ivjEx1+ZpGXEcGqSp9KfaF3aZMOxkPhDCJTV6OoLrG4vxRM2rIgG3fCt6Gh+R91JnwHRJhlDm/zLkbfyl1oeXQW3MMxKwmReoMSmH1HiQImhpgw1UGopPHRcxop3cHbkili+81s/XSgd8h6806yxP5U1Y+wbP1l/DMwCA//szI4xOqYHIPS4YVYho0HpZKJsm3oRiFWjVQ== 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: When writing to /proc/sys/vm/nr_huge_pages, it indicates global number of huge pages of the default hstate. But when reading from it, it indicates the current number of "persistent" huge pages in the kernel's huge page pool. There are currently four interfaces used to export the number of huge pages: - /proc/meminfo - /proc/sys/vm/*hugepages* - /sys/devices/system/node/node0/hugepages/hugepages-2048kB/* - /sys/kernel/mm/hugepages/hugepages-2048kB/* But only the /proc/sys/vm/nr_huge_pages provides the 'persistent' semantics when reading from it. This inconsistency is very subtle and can be easily misunderstood. Signed-off-by: Xueshi Hu --- mm/hugetlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index e327a5a7602c..76af189053f0 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4606,7 +4606,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, void *buffer, size_t *length, loff_t *ppos) { struct hstate *h = &default_hstate; - unsigned long tmp = h->max_huge_pages; + unsigned long tmp = h->nr_huge_pages; int ret; if (!hugepages_supported()) From patchwork Sun Jul 30 12:51:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xueshi Hu X-Patchwork-Id: 13333407 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 AAB43C001DC for ; Sun, 30 Jul 2023 12:53:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DB9AD6B0082; Sun, 30 Jul 2023 08:53:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D41B28D0001; Sun, 30 Jul 2023 08:53:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE2576B0085; Sun, 30 Jul 2023 08:53:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id AFD546B0082 for ; Sun, 30 Jul 2023 08:53:38 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 848B314016B for ; Sun, 30 Jul 2023 12:53:38 +0000 (UTC) X-FDA: 81068269716.01.DCE6A01 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by imf21.hostedemail.com (Postfix) with ESMTP id BBD021C000D for ; Sun, 30 Jul 2023 12:53:36 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=xDxMxziv; spf=none (imf21.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.170) smtp.mailfrom=xueshi.hu@smartx.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690721616; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IWO97P41pTgDcE9XlJTPRLerxITDufaXqvlZ/NpQ9xw=; b=yQEuzSLqfnl6/RoOg6Y1ERzGcM2oaJwlThl+Fnz0mpTXF5OvbnYo8VLJ23JynazvBiOZA2 QHbjdSPbHBFBqvvtH+dSOTbkxKZiqJzbdEfd+NB0+VM8lWt243CPE2Lyyt9afnbwBwsuOQ n1/JqePwzW8kBNn08770Xu4rpKlvz90= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690721616; a=rsa-sha256; cv=none; b=HVNMwqWh7boXg6sW6LhgE+63rzXsj/Ny3irHsFjp4dd+OmAsRRy8YA6GwBZMcEJ505pqdf YjeiqzZlI9yJ//X1REmmJmDdmDqKgDFazpNZMdz+Z6H6v3/EDgXdTQ5vh9eBGhHjsq2ZMd F85Av8u72HjoRW+werfxKgQKEYxfhQE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=xDxMxziv; spf=none (imf21.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.170) smtp.mailfrom=xueshi.hu@smartx.com; dmarc=none Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-687087d8ddaso2636282b3a.1 for ; Sun, 30 Jul 2023 05:53:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartx-com.20221208.gappssmtp.com; s=20221208; t=1690721615; x=1691326415; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IWO97P41pTgDcE9XlJTPRLerxITDufaXqvlZ/NpQ9xw=; b=xDxMxzivmPoCQ5Fmg16rIaIbb3Kvq8jwCzfplakfdiKklZMISrTxUkJBMYVUGtAAjc F7cPL9D879N/5lxcxuUlxavJp+b2E6J3e8tBdR7g4vsIPUoRRei6ptSyEBzSQ1khR+jO hZvA/+mwcor37ik6Hk2H4HdEI9CAjhbijNCIquSaiVLkHicGmhd7KkElkMc8Uog9EAiU rp97oWogeipUAFAjdyoJ/Ht7LYBvS0dRDBGi3d9inWCpZdA8JT5/doSliJieWXhIrtU3 0c00oFw0Kn2xdYU+J0YPH8ieNjBinolCHEWJqcyh3UhYH6mcVr6NOk1xtzmdsdlzxHpi 4tfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690721615; x=1691326415; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IWO97P41pTgDcE9XlJTPRLerxITDufaXqvlZ/NpQ9xw=; b=L2aqt8TgvRpb5T/XR9Tzl/2iFSgPl7ZkgvmtyQ+3/CALEgaRKB6IL1NZVO7hNM+W2h 3x3JfJRk/xrG2PXJLMrN9TFNAM6ej8WsgYYEl1OXGNPJZraouSw48bclX8fXhOy9owfR XGNMjd+7cgKG2BZ6Oyb9Bq6OMg+95GEF92EDUQLbX1C7k8rsN/fFMw8wzcktxAHniT8O 6WDkLn5qBnrfeQkbatovTbltM2EHfFZxM8zrUKm9TC5kADGwjYZaMJu2c3PLw8/ULqL4 f7MeVH9CV4ylQzHapE2NX12/xDthzsvJvPdRLs5/bd7zSxT3sx1wU9BNytRy/8QseY+p s3cA== X-Gm-Message-State: ABy/qLYbaIwZCJwtlxbbYKH/W4uaHNZ9lejk3pYBvhAX5gyGzxkQrtz4 OmRmLzXJGOCsjfy/B9i+eksBgdIBOx/3CWkFXjHIbGPm X-Google-Smtp-Source: APBJJlFYgGkrDJF0ubWm02nWwXPxWaALdL2s0VhrM6lw/bGEQ6lBZkfPzaea0YSGu3wJUH7YVop3Ng== X-Received: by 2002:a05:6a00:13a5:b0:687:1bb1:91ab with SMTP id t37-20020a056a0013a500b006871bb191abmr7184692pfg.33.1690721615484; Sun, 30 Jul 2023 05:53:35 -0700 (PDT) Received: from nixos.tailf4e9e.ts.net ([47.75.78.161]) by smtp.googlemail.com with ESMTPSA id s9-20020aa78d49000000b00687260020b1sm1731130pfe.72.2023.07.30.05.53.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jul 2023 05:53:35 -0700 (PDT) From: Xueshi Hu To: mike.kravetz@oracle.com, muchun.song@linux.dev, akpm@linux-foundation.org Cc: linux-mm@kvack.org, Xueshi Hu Subject: [PATCH 2/3] mm/hugeltb: clean up hstate::max_huge_pages Date: Sun, 30 Jul 2023 20:51:55 +0800 Message-Id: <20230730125156.207301-3-xueshi.hu@smartx.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230730125156.207301-1-xueshi.hu@smartx.com> References: <20230730125156.207301-1-xueshi.hu@smartx.com> MIME-Version: 1.0 X-Stat-Signature: frfa7ahmfqegh35qgc91bp4bfs181xzs X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: BBD021C000D X-Rspam-User: X-HE-Tag: 1690721616-550987 X-HE-Meta: U2FsdGVkX1/ef2ThqtH2CiNwhq6xO34Mi9uRsVC8TpvdksY9ZBZ8IThJZ0+VfKQlbg5tAi3Yj2FQb5LA7Np145uj6tlSuor2xHdWrBiya01SNM0s5XPJLAE9CnUTqoXopNizWLlITZp4tJuXhJgh77ibuMvz2VzZMBoZbH5BycZmlZKJRaBoNm18bmX9WIFcpPX68vcGNynrRGnmjn6FLpiBojT++uZ6eQEel+6EsLVvBDoZ9Byu5ltG9oOLjuudsXILWZVU5iJe5aNmWgnHMMJDaR6Mp+uk+ZuFlAWn4t+ZDl/4Pgts2pAws99pYC375ZbvYangU+aALP4GE2Hu36NQozdefevIlrLwemc7t4SuBGtcIChYA9LPw+LmTKk0lvyIt9ApxsOzNcAJQWxvT3s+E66jsAJzgJB0oWzvmG7RNNwQ530Fl/l6xqEgVNzWfOYYi8ElNGRs4SMTXVAfRKg/EaqPTiHmQSj8X+6TVYWQccomKIrfDxquAHBZHpVOUy2/tiXNZO91pgngxOdKKCq1HHeEkc2r9knrDDrIkDWbalCKpB1tatM07L1wmsFgFCg4Zd6Be7DQAsxiAsumMOFdq99RYwUkslr/YCS8O5eZUwOWrK8qkokPu4FXqPMJcXF6MhBx05qNm++yoOesCtY94xgKQkqBr3tATDCgHYQodDVpFyv9DXdtXTWHNP42Z/4QM4o+AOnuzkKztpp46CYuiRDGfrHlLspmqvG+W4tgzfeD0J24qVnNaqZ7Dza4y50Z1QRk5b494cehD5K1whYTy4UTVPxdr8Fw+lw8m8+Z02JfFjcf4BhWUtiRdG7cCt+X9yhHoBijR9MnRNhSQENl02fwqDGaUd+2m/q8Qt4/9g1atVwmpvssiZhp5zY4oBSGCsbFa/m5OMrITxJzKDDbTdRW/9T44a7oIsEgQYt0cobFP8+bdmMFUhvEHcZ+eUamiD638ahuIzBgsZW PE+yCtdI gZ4M1EBEhn0mcxIePNn9iOwpdtmfCjPQL54w+Df4jyjd+AL73MDPAIX0UN7ZSX9/yS2Tg43rlmZCpdOFm7Qd/jq+ZW5Ne/4j1bSXS+mNaUiNxhAAWJ2ks60QzctHVpk4ddO4gRdHaTxkEdifbgf3c9RS8DEpRBZE3agQh5qnqkQmOkwymwnVL/PusMWC5rHaPFyDYVFOskHWpjAQ19/ltYZF0avpJO1ezKhHZ/Ftwc5YsmAKyObQ1b6v2ojTAZWFUupqKKApwW17bolUQpaW79iBfL9At93fitRE60VaHBsLVDiGCgFWBNyif4wQo1xTKH7blej55KmXLw9ymREH5VKsxHsBb8fbpD/yBOnapLZGFNqcRSxiVekjkEv0+Gd5easNXYdpAl8Q+9bLDdh05cPqP73PBy4UyXyH7WHqhf3tX8bTzbzBXB0VeX6rVceNPJUMDqIL2P/AXI1lRWdXLeKIlQw== 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: Presently, the sole use case of hstate::max_huge_pages is confined to hugetlb_sysctl_handler_common() and hugetlbfs_size_to_hpages(). The former has been replaced with hstate::nr_huge_pages, while the latter can be effortlessly substituted. After hugeltb subsystem has been initialized, hstate::max_huge_pages always equals to persistent_huge_pages(). It's a burden to maintain the equation[1][2]. After this patch, hstate::max_huge_pages is only used in kernel command line parameter parsing. Renaming set_max_huge_pages() to set_nr_huge_pages() would enhance the readability of the code. [1]: Commit a43a83c79b4f ("mm/hugetlb: fix incorrect update of max_huge_pages") [2]: Commit c1470b33bb6e ("mm/hugetlb: fix incorrect hugepages count during mem hotplug") Signed-off-by: Xueshi Hu --- fs/hugetlbfs/inode.c | 2 +- mm/hugetlb.c | 24 +++++------------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 316c4cebd3f3..cd1a3e4bf8fb 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -1375,7 +1375,7 @@ hugetlbfs_size_to_hpages(struct hstate *h, unsigned long long size_opt, if (val_type == SIZE_PERCENT) { size_opt <<= huge_page_shift(h); - size_opt *= h->max_huge_pages; + size_opt *= (h->nr_huge_pages - h->surplus_huge_pages); do_div(size_opt, 100); } diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 76af189053f0..56647235ab21 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2343,14 +2343,13 @@ int dissolve_free_huge_page(struct page *page) } remove_hugetlb_folio(h, folio, false); - h->max_huge_pages--; spin_unlock_irq(&hugetlb_lock); /* * Normally update_and_free_hugtlb_folio will allocate required vmemmmap * before freeing the page. update_and_free_hugtlb_folio will fail to * free the page if it can not allocate required vmemmap. We - * need to adjust max_huge_pages if the page is not freed. + * need to adjust nr_huge_pages if the page is not freed. * Attempt to allocate vmemmmap here so that we can take * appropriate action on failure. */ @@ -2360,7 +2359,6 @@ int dissolve_free_huge_page(struct page *page) } else { spin_lock_irq(&hugetlb_lock); add_hugetlb_folio(h, folio, false); - h->max_huge_pages++; spin_unlock_irq(&hugetlb_lock); } @@ -3274,8 +3272,6 @@ static void __init hugetlb_hstate_alloc_pages_onenode(struct hstate *h, int nid) string_get_size(huge_page_size(h), 1, STRING_UNITS_2, buf, 32); pr_warn("HugeTLB: allocating %u of page size %s failed node%d. Only allocated %lu hugepages.\n", h->max_huge_pages_node[nid], buf, nid, i); - h->max_huge_pages -= (h->max_huge_pages_node[nid] - i); - h->max_huge_pages_node[nid] = i; } static void __init hugetlb_hstate_alloc_pages(struct hstate *h) @@ -3336,7 +3332,6 @@ static void __init hugetlb_hstate_alloc_pages(struct hstate *h) string_get_size(huge_page_size(h), 1, STRING_UNITS_2, buf, 32); pr_warn("HugeTLB: allocating %lu of page size %s failed. Only allocated %lu hugepages.\n", h->max_huge_pages, buf, i); - h->max_huge_pages = i; } kfree(node_alloc_noretry); } @@ -3460,7 +3455,7 @@ static int adjust_pool_surplus(struct hstate *h, nodemask_t *nodes_allowed, } #define persistent_huge_pages(h) (h->nr_huge_pages - h->surplus_huge_pages) -static int set_max_huge_pages(struct hstate *h, unsigned long count, int nid, +static int set_nr_huge_pages(struct hstate *h, unsigned long count, int nid, nodemask_t *nodes_allowed) { unsigned long min_count, ret; @@ -3601,7 +3596,6 @@ static int set_max_huge_pages(struct hstate *h, unsigned long count, int nid, break; } out: - h->max_huge_pages = persistent_huge_pages(h); spin_unlock_irq(&hugetlb_lock); mutex_unlock(&h->resize_lock); @@ -3639,7 +3633,7 @@ static int demote_free_hugetlb_folio(struct hstate *h, struct folio *folio) destroy_compound_hugetlb_folio_for_demote(folio, huge_page_order(h)); /* - * Taking target hstate mutex synchronizes with set_max_huge_pages. + * Taking target hstate mutex synchronizes with set_nr_huge_pages. * Without the mutex, pages added to target hstate could be marked * as surplus. * @@ -3664,14 +3658,6 @@ static int demote_free_hugetlb_folio(struct hstate *h, struct folio *folio) spin_lock_irq(&hugetlb_lock); - /* - * Not absolutely necessary, but for consistency update max_huge_pages - * based on pool changes for the demoted page. - */ - h->max_huge_pages--; - target_hstate->max_huge_pages += - pages_per_huge_page(h) / pages_per_huge_page(target_hstate); - return rc; } @@ -3770,13 +3756,13 @@ static ssize_t __nr_hugepages_store_common(bool obey_mempolicy, } else { /* * Node specific request. count adjustment happens in - * set_max_huge_pages() after acquiring hugetlb_lock. + * set_nr_huge_pages() after acquiring hugetlb_lock. */ init_nodemask_of_node(&nodes_allowed, nid); n_mask = &nodes_allowed; } - err = set_max_huge_pages(h, count, nid, n_mask); + err = set_nr_huge_pages(h, count, nid, n_mask); return err ? err : len; } From patchwork Sun Jul 30 12:51:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xueshi Hu X-Patchwork-Id: 13333409 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 E7577C001DC for ; Sun, 30 Jul 2023 12:53:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F6818D0008; Sun, 30 Jul 2023 08:53:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3573A8D0001; Sun, 30 Jul 2023 08:53:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1FBEF8D0008; Sun, 30 Jul 2023 08:53:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 070938D0001 for ; Sun, 30 Jul 2023 08:53:43 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CD1BCB16B5 for ; Sun, 30 Jul 2023 12:53:42 +0000 (UTC) X-FDA: 81068269884.23.7D3757B Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf16.hostedemail.com (Postfix) with ESMTP id E84C5180009 for ; Sun, 30 Jul 2023 12:53:40 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=uiVImfiB; dmarc=none; spf=none (imf16.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.169) smtp.mailfrom=xueshi.hu@smartx.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690721621; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Amv2wMJcu6d669hQdN4MYu+ekSagqBpfLdGX/fiqoN0=; b=LVlAr+Ufg2m0iyK/CZpMQAOLS4c0O+YmTvuO61A1Q+l0yId+pDM5p2qieUD4Qu3x0rK5ld zkSCV4hs+tkXRE6QFuWHVBBrPoXoTmK2/gXbodkX1Tij2KMKJrTooODuT/8O/GYw0GW1g5 TPMTFSccnz+s+7KeN1domefELdmhdrI= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=smartx-com.20221208.gappssmtp.com header.s=20221208 header.b=uiVImfiB; dmarc=none; spf=none (imf16.hostedemail.com: domain of xueshi.hu@smartx.com has no SPF policy when checking 209.85.210.169) smtp.mailfrom=xueshi.hu@smartx.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690721621; a=rsa-sha256; cv=none; b=gZXQCeDKdALARBWVVTADHN8UPL8GuIM8bnGBzaSgMMiUrA5MSSW4yYqcfAPwvI4R+IclLc wJmxjSdCAQQmgJ4JTVWi0mW/M4+HNMVbEfwL4Wgb5lMBO+5hLlCDcBqiz2yLdSeHl4KL+m b8qfy93US40NCt038sTsPylinDeui+c= Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-686b91c2744so2625943b3a.0 for ; Sun, 30 Jul 2023 05:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartx-com.20221208.gappssmtp.com; s=20221208; t=1690721617; x=1691326417; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Amv2wMJcu6d669hQdN4MYu+ekSagqBpfLdGX/fiqoN0=; b=uiVImfiBA5WjIcLHKOZinRJnwQc/CdKGW20gki9VKdhMEyx+2h2Lvq6gpZVV4xJ2E2 pGeM0At/XrQtZopjTN+OmhCGrnkZ9KJ/ZN50M9SR/gapFjsmAtOa9GE+zqCl/4WIIMBh IreS/jD6DHC0+40Ev6DMHywgNL0nWhBBzcBQdz1H5UW9ftFDNE+p4/Cm34XjzAyEeExs Bqbq83xdXaqKeSvd7MNzAwSQjd3yWSmywhsOYQGYTcjJRu5NfJ3lcpqZwaxz4g4JjNO0 QON0iIW4wLHtDsyK2tykLAwuOpvKY+PDD89ry7e/425APzbgSb3s5Chr9y/owcU220T7 91AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690721617; x=1691326417; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Amv2wMJcu6d669hQdN4MYu+ekSagqBpfLdGX/fiqoN0=; b=cuowozxKuDM8tk8gGImeePYTzRM69OTuzfyKBZD6W5EUOJ3w/tBd53zrNAC4PlzHNY uJgxovCOEdfE0AertNw4Nqebe4Rgj2iIA7b4IfxB9WTOQ8LwYY2gENcAC6fkogYN9v8E Bql0zvSD9v44tjUlqFmrrFqp0tFabyzKgX27fJioZ/W0YHj8mW9KqEM6eCjF0qf9t2SS c3qQIIasP0GxbD4HKLuM/zA7AiwjxGCVwhelPIh/p1dlHvivLZOTAbX2BQXq+7uY/y4t PD9MLGYGzSSVWjfRFOVgyw0sPe/7YKrI+cEb0BMWktgRKzZRo/UetrT+w15OGue0BtA3 O9Og== X-Gm-Message-State: ABy/qLbW+FPSeKoEm/36y5OdetGKLbRz+IZPZcmIQQgYcrjbw3RZEQxV R1t10n9Y6rJHnf8GiB4Wm/q40w== X-Google-Smtp-Source: APBJJlELWwq2Gq+RnddR+pggr4t/KNsjGRudZwld4SQrRDVMFNpf+ahcc2e76lL9DWEAaGt4qWYZQA== X-Received: by 2002:a05:6a21:66c7:b0:138:1c5b:2653 with SMTP id ze7-20020a056a2166c700b001381c5b2653mr7003415pzb.41.1690721617530; Sun, 30 Jul 2023 05:53:37 -0700 (PDT) Received: from nixos.tailf4e9e.ts.net ([47.75.78.161]) by smtp.googlemail.com with ESMTPSA id s9-20020aa78d49000000b00687260020b1sm1731130pfe.72.2023.07.30.05.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jul 2023 05:53:37 -0700 (PDT) From: Xueshi Hu To: mike.kravetz@oracle.com, muchun.song@linux.dev, akpm@linux-foundation.org Cc: linux-mm@kvack.org, Xueshi Hu Subject: [PATCH 3/3] mm/hugeltb: fix nodes huge page allocation when there are surplus pages Date: Sun, 30 Jul 2023 20:51:56 +0800 Message-Id: <20230730125156.207301-4-xueshi.hu@smartx.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230730125156.207301-1-xueshi.hu@smartx.com> References: <20230730125156.207301-1-xueshi.hu@smartx.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: xow9t8er91166xb17cfphfpf1hejzpyz X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: E84C5180009 X-HE-Tag: 1690721620-134721 X-HE-Meta: U2FsdGVkX19VUCdgXrUu3vyEQfZWNxzm906sB3Zw+QjRn5aezQ/v4EFGvQsMI4wE7nLJPycdetOHfG3uzIetzEBYNC6/IfLNBA6iD/UzANUvXupVQgncO9377gAIwUTmvVMPqBjK1jRX0Hfc6e2XMBSkk2KoU0GDri0z4j8THYQMtUj+G4hiUzRAsQ3uvIV8U8aS0VLoeYDBet2DYF7HbArpDNUtRqNTL/0zGDKS6H2B+i47byY+zJqmWJRZIAYFVlqdwWLs+ynb5muxXnqqdAW+RtWK11Y+hgKD3AltjIIU62Imqp/nbIEtLwHcg98tIS1jyDyxMK2VMA5VEOCplNkAk2Ax/sktTB83xS1epCvrEkpyX+vVMUg2JR1M68FRV8M1pMdaJnE8y12DkkwOK3ZP8P39+sSjUHcVTfNhdLNiDIyOAYz+ujYIE52Jd5LkPu1M+EGXHCouPwsNXWgYL/eG+0Xs0v/5BnqXY4sBvW4ccVs4Ain1SYDUXYdRTd6xkCcKm9OYzoldHtBjCHSDPqQHV1bgj09wuAFK7DN0eOKuD7xFEsaYEEgmaUfJggMw1506YsXWyRWIsaf7ETB1tcPBGHyRWuaxN7RFwbaCS096I6YFHjGVgREwgssxqQxG3pEpca4L4k2dYCn6jIg+AHsH1Nzv7B3MgkFtvy720JMCfZT0jwhfHwJkt4wUwCSWcMOmdyuPW2pLM78oPMGeGVPQnux+FOnR/zF/wFljqERBagtbmKc1d5a5jLTGZGOyjZOl2t1DsdfkyJUxwtMi41frntlK9PHZuE0uMxEBPL2sPVSJFRBj+lUQ4FXyUD2ppLeQyUazSX4u1VOD4uqvlztAKIiatSfWVNX+H5iGFPR70159lPHk/ysTKsqPddmOJ5kt3L7gnlUgF0n1aQLqBOCpGmEDcwbcy5FvO5uh5SbWh4x9VYBYdjZfxMgyhgKinjssu2iVNu2v+u9TP/Z CpFIjI// 4K+4oj6i2AAPcVWt+a8w1OT9TaqrUkEBDeuK43ySQ/b89EisHYtYHLmb4rf+FxHs8ATb6RPHcwJ1U3D+mx+Yo/TUBN/XmZqQAv8xEEfDCa4/IPT2r6d40ONB9Q93mQYLkdi1VhR+ZULpE5BCG0VmAV4kEwNaMP4j23pVisGF8ht2Bq7NcX+E+feAJgbZQNiSS2aoWSX57Ymp7gvlPGXCkuo6JI+3si1Tk/w3Qqe2tvvFm+/Ytp86tT05jm5IwPORb2nqBKrLScJ4DtRIQWmCoffiAhKZZL6sEyXsDbay7eYJ5qL1FOVbbesfsl5VYrXOFSP3gbhSYE5/8RY0Vr48bPZEufqK/SihjxoSUk/NfE6YeSr1X6hJdIod4A2k8pv7GSzWTP1X4yve1Gq+fSWfScwiizTkcOmXfeHowi4hUwSocdhI= 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: In set_nr_huge_pages(), local variable "count" is used to record persistent_huge_pages(), but when it cames to nodes huge page allocation, the semantics changes to nr_huge_pages. When there exists surplus huge pages and using the interface under /sys/devices/system/node/node*/hugepages to change huge page pool size, this difference can result in the allocation of an unexpected number of huge pages. Steps to reproduce the bug: Starting with: Node 0 Node 1 Total HugePages_Total 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 create 100 huge pages in Node 0 and consume it, then set Node 0 's nr_hugepages to 0. yields: Node 0 Node 1 Total HugePages_Total 200.00 0.00 200.00 HugePages_Free 0.00 0.00 0.00 HugePages_Surp 200.00 0.00 200.00 write 100 to Node 1's nr_hugepages echo 100 > /sys/devices/system/node/node1/\ hugepages/hugepages-2048kB/nr_hugepages gets: Node 0 Node 1 Total HugePages_Total 200.00 400.00 600.00 HugePages_Free 0.00 400.00 400.00 HugePages_Surp 200.00 0.00 200.00 Kernel is expected to create only 100 huge pages and it gives 200. Signed-off-by: Xueshi Hu --- mm/hugetlb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 56647235ab21..8ed4fffdebda 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -3490,7 +3490,9 @@ static int set_nr_huge_pages(struct hstate *h, unsigned long count, int nid, if (nid != NUMA_NO_NODE) { unsigned long old_count = count; - count += h->nr_huge_pages - h->nr_huge_pages_node[nid]; + count += persistent_huge_pages(h) - + (h->nr_huge_pages_node[nid] - + h->surplus_huge_pages_node[nid]); /* * User may have specified a large count value which caused the * above calculation to overflow. In this case, they wanted