linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Adam Litke <agl@us.ibm.com>
To: linux-mm@kvack.org
Cc: libhugetlbfs-devel@lists.sourceforge.net,
	Adam Litke <agl@us.ibm.com>, Andy Whitcroft <apw@shadowen.org>,
	Mel Gorman <mel@skynet.ie>, Bill Irwin <bill.irwin@oracle.com>,
	Ken Chen <kenchen@google.com>,
	Dave McCracken <dave.mccracken@oracle.com>
Subject: [PATCH 5/5] hugetlb: Add hugetlb_dynamic_pool sysctl
Date: Thu, 13 Sep 2007 10:59:51 -0700	[thread overview]
Message-ID: <20070913175951.27074.72058.stgit@kernel> (raw)
In-Reply-To: <20070913175855.27074.27030.stgit@kernel>

Allowing the hugetlb pool to grow dynamically changes the semantics of the
system by permitting more system memory to be used for huge pages than has
been explicitly dedicated to the pool.

This patch introduces a sysctl which must be enabled to turn on the dynamic
pool resizing feature.  This will avoid an involuntary change in behavior.

When hugetlb pool growth is enabled via the hugetlb_dynamic_pool sysctl, an
upper-bound on huge page allocation can be set by constraining the size of
the hugetlb filesystem via the 'size' mount option.

Signed-off-by: Adam Litke <agl@us.ibm.com>
Acked-by: Andy Whitcroft <apw@shadowen.org>
---

 include/linux/hugetlb.h |    1 +
 kernel/sysctl.c         |    8 ++++++++
 mm/hugetlb.c            |    5 +++++
 3 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index e6a71c8..cec45db 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -33,6 +33,7 @@ void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
 
 extern unsigned long max_huge_pages;
 extern unsigned long hugepages_treat_as_movable;
+extern int hugetlb_dynamic_pool;
 extern const unsigned long hugetlb_zero, hugetlb_infinity;
 extern int sysctl_hugetlb_shm_group;
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 8bdb8c0..fd60a5e 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -879,6 +879,14 @@ static ctl_table vm_table[] = {
 		.mode		= 0644,
 		.proc_handler	= &hugetlb_treat_movable_handler,
 	},
+	{
+		.ctl_name	= CTL_UNNUMBERED,
+		.procname	= "hugetlb_dynamic_pool",
+		.data		= &hugetlb_dynamic_pool,
+		.maxlen		= sizeof(hugetlb_dynamic_pool),
+		.mode		= 0644,
+		.proc_handler	= &proc_dointvec,
+	},
 #endif
 	{
 		.ctl_name	= VM_LOWMEM_RESERVE_RATIO,
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 0cedcd0..caef721 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -31,6 +31,7 @@ static unsigned int surplus_huge_pages_node[MAX_NUMNODES];
 static unsigned long unused_surplus_pages;
 static gfp_t htlb_alloc_mask = GFP_HIGHUSER;
 unsigned long hugepages_treat_as_movable;
+int hugetlb_dynamic_pool;
 
 /*
  * Protects updates to hugepage_freelists, nr_huge_pages, and free_huge_pages
@@ -189,6 +190,10 @@ static struct page *alloc_buddy_huge_page(struct vm_area_struct *vma,
 {
 	struct page *page;
 
+	/* Check if the dynamic pool is enabled */
+	if (!hugetlb_dynamic_pool)
+		return NULL;
+
 	/* Check we remain within limits if 1 huge page is allocated */
 	if (!within_locked_vm_limits(1))
 		return NULL;

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

      parent reply	other threads:[~2007-09-13 17:59 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-13 17:58 [PATCH 0/5] [hugetlb] Dynamic huge page pool resizing Adam Litke
2007-09-13 17:59 ` [PATCH 1/5] hugetlb: Account for hugepages as locked_vm Adam Litke
2007-09-14  5:41   ` Ken Chen
2007-09-14  9:15     ` Mel Gorman
2007-09-13 17:59 ` [PATCH 2/5] hugetlb: Move update_and_free_page Adam Litke
2007-09-13 17:59 ` [PATCH 3/5] hugetlb: Try to grow hugetlb pool for MAP_PRIVATE mappings Adam Litke
2007-09-13 18:06   ` [Libhugetlbfs-devel] " Dave Hansen
2007-09-13 20:21     ` Adam Litke
2007-09-14  5:46       ` David Gibson
2007-09-14 13:33         ` Adam Litke
2007-09-13 17:59 ` [PATCH 4/5] hugetlb: Try to grow hugetlb pool for MAP_SHARED mappings Adam Litke
2007-09-13 22:24   ` Dave McCracken
2007-09-14 14:03     ` Adam Litke
2007-09-13 17:59 ` Adam Litke [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070913175951.27074.72058.stgit@kernel \
    --to=agl@us.ibm.com \
    --cc=apw@shadowen.org \
    --cc=bill.irwin@oracle.com \
    --cc=dave.mccracken@oracle.com \
    --cc=kenchen@google.com \
    --cc=libhugetlbfs-devel@lists.sourceforge.net \
    --cc=linux-mm@kvack.org \
    --cc=mel@skynet.ie \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox