Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp5156558pxj; Wed, 9 Jun 2021 10:23:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKAqFWu97AajgQAUaewLWdqqN0WsNTfm5TLSAJ6Jg78ma2PjBD4iquAouVK4sAXeoTJZFD X-Received: by 2002:a17:906:8319:: with SMTP id j25mr860656ejx.479.1623259420636; Wed, 09 Jun 2021 10:23:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623259420; cv=none; d=google.com; s=arc-20160816; b=huHGA8Yqm8TA2PSCzUfzR2WsNtZN+Xoj6F3dl00lRb0d0nSEugCIr2ynlYuVxGR7Ku 3I63NwuuSpRxF3ahLAzICn5IC5lumyw9f5l/gk0uYkGTj56cUAjoForKWANO6ByrE0bh jv/SKJscK5V9TW7oC2eNErJtSptTpY4Y9P/6lFgtRerP2WWW/e4gjh7ENpNcea+Ez1fi HEnaCOHE8hEuBj+YjFkZ1IRA2Slh3S8aX2TGV4V/ttKGGlSHyKf7IAdDCw3YJU4xjZ6v /ZNE8txL+NKy/QSMebQO+FaqblgbtLSMlZOVn7l82qupu63nD9GHBE1gKE7xvdc0oGNp SYxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tTl4UccQsOsZ7x/J6uEesGioaOGAN8DIKPZAiWCgVB8=; b=RVIT7F6bw/COitsjen2QAqb+Xfz/fZxXXb4ioqZ4y+CTE5IETWIQD6heyUPYr/2Bs+ pKs2Sq+DiJNP+xDFyJCXiucKF7v9S6QwIWutBWH+Vfllb1+tSmiGeYtnBQWP32FGLYCs Avtevt2B0R5Ennb5JjFlNV+oR3du36khJnS+GfePtooboM1RRkkETo9MnaLwl7wfHEqd iA9bALk1kgUv60lNw1NiI2q78VYwu34zJewscPYlzPfnV97heUOT9z0VomkhpCmVhisQ gcD9uP5AbkoiGZC3vzg/S8P3f+/y5XxCuSa0BSzHqcqUy5WnPqjmt6olz4jKuYJG+Qbm kfvg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20150623.gappssmtp.com header.s=20150623 header.b=pUrg+IUI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n2si193195edb.238.2021.06.09.10.23.14; Wed, 09 Jun 2021 10:23:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance-com.20150623.gappssmtp.com header.s=20150623 header.b=pUrg+IUI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235320AbhFIMSa (ORCPT + 99 others); Wed, 9 Jun 2021 08:18:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235102AbhFIMS3 (ORCPT ); Wed, 9 Jun 2021 08:18:29 -0400 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32D23C06175F for ; Wed, 9 Jun 2021 05:16:35 -0700 (PDT) Received: by mail-pg1-x52e.google.com with SMTP id o9so16462318pgd.2 for ; Wed, 09 Jun 2021 05:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tTl4UccQsOsZ7x/J6uEesGioaOGAN8DIKPZAiWCgVB8=; b=pUrg+IUIYAa870AP/uTMqgxs/hNNa64H0IDqPvy2JmAIvWBKiuXjtOLMdyse81wG8D WRbbR4uZgvPBXCGyhgzP/wqY9aYRqL+ZoV+55cQjs+c9cm60asG69y8qJ1wlODMfUnn2 34cg+mlhNukSqKfoHVyTp5z8MEwHPU9o8jOMNGCVGf8c/Df94k3QiCzFxJc1ognSj0pP Mx0wzc+B1XWe4+wcrKEqEZ4LNxVCLVcerdQUHKwN+3ZNI7kFNrLlt1e7DzIMzfu3l9q5 v4/W69wvh74zLdx14G8oBO5H3e/RKBvMCJN23kDW77DCFhOgIubiri/Qdiq2aEIxu2yc ADpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tTl4UccQsOsZ7x/J6uEesGioaOGAN8DIKPZAiWCgVB8=; b=S8k52+qHPKnwL+MdbJj8WcsEnVb7qjbnLFcmxbfql5veTltWWhhT4Zg+tkIZh4HgVF +kS2gBfDQQAfCrPmekaatXPnliNbV7oUdLakv889rhWPA+POqBi5JLgxUddgYq4R8IJz aXD3Az232GwfyT+kMawIJqF257L5o53GQ/y7g9gN7all5vsKyRoXcEWxkGYWfT1icLkN NsiSBd9jFQZjqQDLrDLZfEmzU+DMFS8cJpb8pc2uc+5m04bQCOMEhBhPubbJRPRvxxjR KRiKIH8PcEugZZL/Lrjb77OfYHOjU/9HTOslxTvJZYfdOnzIGGXdD8edZgdEG0wjqfZN X5tg== X-Gm-Message-State: AOAM532MF2H94Z9K5SYw3LBEcOCe1/h+NYkMW7uCi7IFZYba1BhKK2Tg sCRzYXx0oiqecULfgWO8COWrXw== X-Received: by 2002:aa7:8588:0:b029:28e:dfa1:e31a with SMTP id w8-20020aa785880000b029028edfa1e31amr4821652pfn.77.1623240994717; Wed, 09 Jun 2021 05:16:34 -0700 (PDT) Received: from localhost.localdomain ([139.177.225.254]) by smtp.gmail.com with ESMTPSA id h16sm13689224pfk.119.2021.06.09.05.16.28 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jun 2021 05:16:34 -0700 (PDT) From: Muchun Song To: mike.kravetz@oracle.com, akpm@linux-foundation.org, osalvador@suse.de, mhocko@suse.com, song.bao.hua@hisilicon.com, david@redhat.com, chenhuang5@huawei.com, bodeddub@amazon.com, corbet@lwn.net Cc: duanxiongchun@bytedance.com, fam.zheng@bytedance.com, zhengqi.arch@bytedance.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song Subject: [PATCH 5/5] mm: hugetlb: introduce CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON Date: Wed, 9 Jun 2021 20:13:10 +0800 Message-Id: <20210609121310.62229-6-songmuchun@bytedance.com> X-Mailer: git-send-email 2.21.0 (Apple Git-122) In-Reply-To: <20210609121310.62229-1-songmuchun@bytedance.com> References: <20210609121310.62229-1-songmuchun@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When using HUGETLB_PAGE_FREE_VMEMMAP, the freeing unused vmemmap pages associated with each HugeTLB page is default off. Now the vmemmap is PMD mapped. So there is no side effect when this feature is enabled with no HugeTLB pages in the system. Someone may want to enable this feature in the compiler time instead of using boot command line. So add a config to make it default on when someone do not want to enable it via command line. Signed-off-by: Muchun Song --- Documentation/admin-guide/kernel-parameters.txt | 3 +++ fs/Kconfig | 10 ++++++++++ mm/hugetlb_vmemmap.c | 6 ++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index a01aadafee38..8eee439d943c 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -1604,6 +1604,9 @@ on: enable the feature off: disable the feature + Built with CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON=y, + the default is on. + This is not compatible with memory_hotplug.memmap_on_memory. If both parameters are enabled, hugetlb_free_vmemmap takes precedence over memory_hotplug.memmap_on_memory. diff --git a/fs/Kconfig b/fs/Kconfig index f40b5b98f7ba..e78bc5daf7b0 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -245,6 +245,16 @@ config HUGETLB_PAGE_FREE_VMEMMAP depends on X86_64 depends on SPARSEMEM_VMEMMAP +config HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON + bool "Default freeing vmemmap pages of HugeTLB to on" + default n + depends on HUGETLB_PAGE_FREE_VMEMMAP + help + When using HUGETLB_PAGE_FREE_VMEMMAP, the freeing unused vmemmap + pages associated with each HugeTLB page is default off. Say Y here + to enable freeing vmemmap pages of HugeTLB by default. It can then + be disabled on the command line via hugetlb_free_vmemmap=off. + config MEMFD_CREATE def_bool TMPFS || HUGETLBFS diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c index 01f3652fa359..b5f4f29e042a 100644 --- a/mm/hugetlb_vmemmap.c +++ b/mm/hugetlb_vmemmap.c @@ -186,7 +186,7 @@ #define RESERVE_VMEMMAP_NR 2U #define RESERVE_VMEMMAP_SIZE (RESERVE_VMEMMAP_NR << PAGE_SHIFT) -bool hugetlb_free_vmemmap_enabled; +bool hugetlb_free_vmemmap_enabled = IS_ENABLED(CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON); static int __init early_hugetlb_free_vmemmap_param(char *buf) { @@ -201,7 +201,9 @@ static int __init early_hugetlb_free_vmemmap_param(char *buf) if (!strcmp(buf, "on")) hugetlb_free_vmemmap_enabled = true; - else if (strcmp(buf, "off")) + else if (!strcmp(buf, "off")) + hugetlb_free_vmemmap_enabled = false; + else return -EINVAL; return 0; -- 2.11.0