From: Andrew Morton <akpm@linux-foundation.org>
To: Rik van Riel <riel@redhat.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Mel Gorman <mel@csn.ul.ie>, Johannes Weiner <hannes@cmpxchg.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
Andrea Arcangeli <aarcange@redhat.com>,
hughd@google.com
Subject: Re: [PATCH -mm 2/2] mm: do not reset mm->free_area_cache on every single munmap
Date: Thu, 23 Feb 2012 13:56:14 -0800 [thread overview]
Message-ID: <20120223135614.7c4e02db.akpm@linux-foundation.org> (raw)
In-Reply-To: <20120223150034.2c757b3a@cuia.bos.redhat.com>
On Thu, 23 Feb 2012 15:00:34 -0500
Rik van Riel <riel@redhat.com> wrote:
> Some programs have a large number of VMAs, and make frequent calls
> to mmap and munmap. Having munmap constantly cause the search
> pointer for get_unmapped_area to get reset can cause a significant
> slowdown for such programs.
>
> Likewise, starting all the way from the top any time we mmap a small
> VMA can greatly increase the amount of time spent in
> arch_get_unmapped_area_topdown.
>
> For programs with many VMAs, a next-fit algorithm would be fastest,
> however that could waste a lot of virtual address space, and potentially
> page table memory.
>
> A compromise is to reset the search pointer for get_unmapped_area
> after we have unmapped 1/8th of the normal memory in a process.
ick!
> For
> a process with 1000 similar sized VMAs, that means the search pointer
> will only be reset once every 125 or so munmaps. The cost is that
> the program may use about 1/8th more virtual space for these VMAs,
> and up to 1/8th more page tables.
>
> We do not count special mappings, since there are programs that
> use a large fraction of their address space mapping device memory,
> etc.
>
> The benefit is that things scale a lot better, and we remove about
> 200 lines of code.
We've been playing whack-a-mole with this search for many years. What
about developing a proper data structure with which to locate a
suitable-sized hole in O(log(N)) time?
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Rik van Riel <riel@redhat.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Mel Gorman <mel@csn.ul.ie>, Johannes Weiner <hannes@cmpxchg.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
Andrea Arcangeli <aarcange@redhat.com>,
hughd@google.com
Subject: Re: [PATCH -mm 2/2] mm: do not reset mm->free_area_cache on every single munmap
Date: Thu, 23 Feb 2012 13:56:14 -0800 [thread overview]
Message-ID: <20120223135614.7c4e02db.akpm@linux-foundation.org> (raw)
In-Reply-To: <20120223150034.2c757b3a@cuia.bos.redhat.com>
On Thu, 23 Feb 2012 15:00:34 -0500
Rik van Riel <riel@redhat.com> wrote:
> Some programs have a large number of VMAs, and make frequent calls
> to mmap and munmap. Having munmap constantly cause the search
> pointer for get_unmapped_area to get reset can cause a significant
> slowdown for such programs.
>
> Likewise, starting all the way from the top any time we mmap a small
> VMA can greatly increase the amount of time spent in
> arch_get_unmapped_area_topdown.
>
> For programs with many VMAs, a next-fit algorithm would be fastest,
> however that could waste a lot of virtual address space, and potentially
> page table memory.
>
> A compromise is to reset the search pointer for get_unmapped_area
> after we have unmapped 1/8th of the normal memory in a process.
ick!
> For
> a process with 1000 similar sized VMAs, that means the search pointer
> will only be reset once every 125 or so munmaps. The cost is that
> the program may use about 1/8th more virtual space for these VMAs,
> and up to 1/8th more page tables.
>
> We do not count special mappings, since there are programs that
> use a large fraction of their address space mapping device memory,
> etc.
>
> The benefit is that things scale a lot better, and we remove about
> 200 lines of code.
We've been playing whack-a-mole with this search for many years. What
about developing a proper data structure with which to locate a
suitable-sized hole in O(log(N)) time?
next prev parent reply other threads:[~2012-02-23 21:56 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-23 19:54 [PATCH -mm 0/2] speed up arch_get_unmapped_area Rik van Riel
2012-02-23 19:54 ` Rik van Riel
2012-02-23 19:56 ` [PATCH -mm 1/2] mm: fix quadratic behaviour in get_unmapped_area_topdown Rik van Riel
2012-02-23 19:56 ` Rik van Riel
2012-02-23 21:50 ` Andrew Morton
2012-02-23 21:50 ` Andrew Morton
2012-02-23 21:57 ` Johannes Weiner
2012-02-23 21:57 ` Johannes Weiner
2012-02-23 20:00 ` [PATCH -mm 2/2] mm: do not reset mm->free_area_cache on every single munmap Rik van Riel
2012-02-23 20:00 ` Rik van Riel
2012-02-23 21:56 ` Andrew Morton [this message]
2012-02-23 21:56 ` Andrew Morton
2012-02-27 16:12 ` Rik van Riel
2012-02-27 16:12 ` Rik van Riel
2012-03-20 18:32 ` Rik van Riel
2012-03-20 18:32 ` Rik van Riel
2012-03-20 19:00 ` Andrea Arcangeli
2012-03-20 19:00 ` Andrea Arcangeli
2012-03-20 19:06 ` Rik van Riel
2012-03-20 19:06 ` Rik van Riel
2012-02-23 21:57 ` Andi Kleen
2012-02-23 21:57 ` Andi Kleen
2012-02-27 16:13 ` Rik van Riel
2012-02-27 16:13 ` Rik van Riel
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=20120223135614.7c4e02db.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=aarcange@redhat.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--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 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.