From: Dave Hansen <haveblue@us.ibm.com>
To: Adam Litke <agl@us.ibm.com>
Cc: linux-mm@kvack.org, libhugetlbfs-devel@lists.sourceforge.net,
Dave McCracken <dave.mccracken@oracle.com>,
Mel Gorman <mel@skynet.ie>, Ken Chen <kenchen@google.com>,
Andy Whitcroft <apw@shadowen.org>,
Bill Irwin <bill.irwin@oracle.com>
Subject: Re: [Libhugetlbfs-devel] [PATCH 3/5] hugetlb: Try to grow hugetlb pool for MAP_PRIVATE mappings
Date: Thu, 13 Sep 2007 11:06:21 -0700 [thread overview]
Message-ID: <1189706781.17236.1519.camel@localhost> (raw)
In-Reply-To: <20070913175928.27074.14259.stgit@kernel>
On Thu, 2007-09-13 at 10:59 -0700, Adam Litke wrote:
> +static int within_locked_vm_limits(long hpage_delta)
> +{
> + unsigned long locked_pages, locked_pages_limit;
> +
> + /* Check locked page limits */
> + locked_pages = current->mm->locked_vm;
> + locked_pages += hpage_delta * (HPAGE_SIZE >> PAGE_SHIFT);
> + locked_pages_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
> + locked_pages_limit >>= PAGE_SHIFT;
> +
> + /* Return 0 if we would exceed locked_vm limits */
> + if (locked_pages > locked_pages_limit)
> + return 0;
> +
> + /* Nice, we're within limits */
> + return 1;
> +}
> +
> +static struct page *alloc_buddy_huge_page(struct vm_area_struct *vma,
> + unsigned long address)
> +{
> + struct page *page;
> +
> + /* Check we remain within limits if 1 huge page is allocated */
> + if (!within_locked_vm_limits(1))
> + return NULL;
> +
> + page = alloc_pages(htlb_alloc_mask|__GFP_COMP|__GFP_NOWARN,
...
Is there locking around this operation? Or, is there a way that a
process could do this concurrently in two different threads, both appear
to be within within_locked_vm_limits(), and both succeed to allocate
when doing so actually takes them over the limit?
-- Dave
--
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>
next prev parent reply other threads:[~2007-09-13 18:16 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 ` Dave Hansen [this message]
2007-09-13 20:21 ` [Libhugetlbfs-devel] " 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 ` [PATCH 5/5] hugetlb: Add hugetlb_dynamic_pool sysctl Adam Litke
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=1189706781.17236.1519.camel@localhost \
--to=haveblue@us.ibm.com \
--cc=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.