From: Michal Hocko <mhocko@suse.cz>
To: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Rik van Riel <riel@redhat.com>, Mel Gorman <mgorman@suse.de>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Hugh Dickins <hughd@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
David Gibson <david@gibson.dropbear.id.au>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Joonsoo Kim <js1304@gmail.com>
Subject: Re: [PATCH v2 08/10] mm, hugetlb: add VM_NORESERVE check in vma_has_reserves()
Date: Tue, 23 Jul 2013 15:23:02 +0200 [thread overview]
Message-ID: <20130723132302.GC8677@dhcp22.suse.cz> (raw)
In-Reply-To: <1374482191-3500-9-git-send-email-iamjoonsoo.kim@lge.com>
On Mon 22-07-13 17:36:29, Joonsoo Kim wrote:
> If we map the region with MAP_NORESERVE and MAP_SHARED,
> we can skip to check reserve counting and eventually we cannot be ensured
> to allocate a huge page in fault time.
> With following example code, you can easily find this situation.
>
> Assume 2MB, nr_hugepages = 100
>
> fd = hugetlbfs_unlinked_fd();
> if (fd < 0)
> return 1;
>
> size = 200 * MB;
> flag = MAP_SHARED;
> p = mmap(NULL, size, PROT_READ|PROT_WRITE, flag, fd, 0);
> if (p == MAP_FAILED) {
> fprintf(stderr, "mmap() failed: %s\n", strerror(errno));
> return -1;
> }
>
> size = 2 * MB;
> flag = MAP_ANONYMOUS | MAP_SHARED | MAP_HUGETLB | MAP_NORESERVE;
> p = mmap(NULL, size, PROT_READ|PROT_WRITE, flag, -1, 0);
> if (p == MAP_FAILED) {
> fprintf(stderr, "mmap() failed: %s\n", strerror(errno));
> }
> p[0] = '0';
> sleep(10);
>
> During executing sleep(10), run 'cat /proc/meminfo' on another process.
> You'll find a mentioned problem.
>
> non reserved shared mapping should not eat into reserve space. So
> return error when we don't find enough free space.
I guess I undestand what you are trying to tell but the changelog is
really hard to read. Please be explicit about what is the expected
result of the test and what is the fix doing. The reservation code is
quite complex already.
> Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
>
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 8a61638..87e73bd 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -464,6 +464,8 @@ void reset_vma_resv_huge_pages(struct vm_area_struct *vma)
> /* Returns true if the VMA has associated reserve pages */
> static int vma_has_reserves(struct vm_area_struct *vma)
> {
> + if (vma->vm_flags & VM_NORESERVE)
> + return 0;
> if (vma->vm_flags & VM_MAYSHARE)
> return 1;
> if (is_vma_resv_set(vma, HPAGE_RESV_OWNER))
> --
> 1.7.9.5
>
--
Michal Hocko
SUSE Labs
--
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:[~2013-07-23 13:23 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-22 8:36 [PATCH v2 00/10] mm, hugetlb: clean-up and possible bug fix Joonsoo Kim
2013-07-22 8:36 ` [PATCH v2 01/10] mm, hugetlb: move up the code which check availability of free huge page Joonsoo Kim
2013-07-22 15:45 ` Aneesh Kumar K.V
2013-07-24 0:57 ` Wanpeng Li
2013-07-24 0:57 ` Wanpeng Li
2013-07-22 8:36 ` [PATCH v2 02/10] mm, hugetlb: remove err label in dequeue_huge_page_vma() Joonsoo Kim
2013-07-22 16:11 ` Michal Hocko
2013-07-23 7:27 ` Joonsoo Kim
2013-07-22 8:36 ` [PATCH v2 03/10] mm, hugetlb: trivial commenting fix Joonsoo Kim
2013-07-24 1:00 ` Wanpeng Li
2013-07-24 1:00 ` Wanpeng Li
[not found] ` <51ef274e.0605e00a.246a.ffffa5c9SMTPIN_ADDED_BROKEN@mx.google.com>
2013-07-24 8:52 ` Joonsoo Kim
2013-07-22 8:36 ` [PATCH v2 04/10] mm, hugetlb: clean-up alloc_huge_page() Joonsoo Kim
2013-07-24 1:09 ` Wanpeng Li
2013-07-24 1:09 ` Wanpeng Li
2013-07-22 8:36 ` [PATCH v2 05/10] mm, hugetlb: fix and clean-up node iteration code to alloc or free Joonsoo Kim
2013-07-22 15:50 ` Aneesh Kumar K.V
2013-07-22 16:23 ` Michal Hocko
2013-07-23 1:05 ` Aneesh Kumar K.V
2013-07-22 8:36 ` [PATCH v2 06/10] mm, hugetlb: remove redundant list_empty check in gather_surplus_pages() Joonsoo Kim
2013-07-24 1:12 ` Wanpeng Li
2013-07-24 1:12 ` Wanpeng Li
2013-07-22 8:36 ` [PATCH v2 07/10] mm, hugetlb: do not use a page in page cache for cow optimization Joonsoo Kim
2013-07-23 4:26 ` Naoya Horiguchi
2013-07-23 11:45 ` Michal Hocko
2013-07-24 8:51 ` Joonsoo Kim
2013-07-22 8:36 ` [PATCH v2 08/10] mm, hugetlb: add VM_NORESERVE check in vma_has_reserves() Joonsoo Kim
2013-07-23 13:23 ` Michal Hocko [this message]
2013-07-22 8:36 ` [PATCH v2 09/10] mm, hugetlb: remove decrement_hugepage_resv_vma() Joonsoo Kim
2013-07-22 8:36 ` [PATCH v2 10/10] mm, hugetlb: decrement reserve count if VM_NORESERVE alloc page cache Joonsoo Kim
2013-07-23 13:37 ` Michal Hocko
2013-07-22 15:51 ` [PATCH v2 00/10] mm, hugetlb: clean-up and possible bug fix Aneesh Kumar K.V
2013-07-23 7:31 ` Joonsoo Kim
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=20130723132302.GC8677@dhcp22.suse.cz \
--to=mhocko@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=davidlohr.bueso@hp.com \
--cc=hughd@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=js1304@gmail.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=riel@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).