From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Rik van Riel <riel@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>, shak <dshaks@redhat.com>
Subject: Re: [PATCH] lazy freeing of memory through MADV_FREE
Date: Sun, 22 Apr 2007 12:50:34 +1000 [thread overview]
Message-ID: <462ACD7A.1070708@yahoo.com.au> (raw)
In-Reply-To: <462ACA40.8070407@yahoo.com.au>
Nick Piggin wrote:
> Rik van Riel wrote:
>
>> Andrew Morton wrote:
>>
>>> On Fri, 20 Apr 2007 17:38:06 -0400
>>> Rik van Riel <riel@redhat.com> wrote:
>>>
>>>> Andrew Morton wrote:
>>>>
>>>>> I've also merged Nick's "mm: madvise avoid exclusive mmap_sem".
>>>>>
>>>>> - Nick's patch also will help this problem. It could be that your
>>>>> patch
>>>>> no longer offers a 2x speedup when combined with Nick's patch.
>>>>>
>>>>> It could well be that the combination of the two is even better,
>>>>> but it
>>>>> would be nice to firm that up a bit.
>>>>
>>>>
>>>> I'll test that.
>>>
>>>
>>>
>>> Thanks.
>>
>>
>>
>> Well, good news.
>>
>> It turns out that Nick's patch does not improve peak
>> performance much, but it does prevent the decline when
>> running with 16 threads on my quad core CPU!
>>
>> We _definately_ want both patches, there's a huge benefit
>> in having them both.
>>
>> Here are the transactions/seconds for each combination:
>>
>> vanilla new glibc madv_free kernel madv_free + mmap_sem
>> threads
>>
>> 1 610 609 596 545
>> 2 1032 1136 1196 1200
>> 4 1070 1128 2014 2024
>> 8 1000 1088 1665 2087
>> 16 779 1073 1310 1999
>
>
>
> Is "new glibc" meaning MADV_DONTNEED + kernel with mmap_sem patch?
>
> The strange thing with your madv_free kernel is that it doesn't
> help single-threaded performance at all. So that work to avoid
> zeroing the new page is not a win at all there (maybe due to the
> cache effects I was worried about?).
>
> However MADV_FREE does improve scalability, which is interesting.
> The most likely reason I can see why that may be the case is that
> it avoids mmap_sem when faulting pages back in (I doubt it is due
> to avoiding the page allocator, but maybe?).
>
> So where is the down_write coming from in this workload, I wonder?
> Heap management? What syscalls?
>
> x86_64's rwsems are crap under heavy parallelism (even read-only),
> as I fixed in my recent generic rwsems patch. I don't expect MySQL
> to be such a mmap_sem microbenchmark, but I wonder how much this
> would help?
>
> What if we ran the private futexes patch to further cut down
> mmap_sem contention?
Hmm, without the MADV_FREE patch, I wonder if it isn't doing something
silly like read-faulting in a ZERO_PAGE then write faulting a new page
straight afterwards.. I'll have to try a few tests.
--
SUSE Labs, Novell Inc.
WARNING: multiple messages have this Message-ID (diff)
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Rik van Riel <riel@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>, shak <dshaks@redhat.com>
Subject: Re: [PATCH] lazy freeing of memory through MADV_FREE
Date: Sun, 22 Apr 2007 12:50:34 +1000 [thread overview]
Message-ID: <462ACD7A.1070708@yahoo.com.au> (raw)
In-Reply-To: <462ACA40.8070407@yahoo.com.au>
Nick Piggin wrote:
> Rik van Riel wrote:
>
>> Andrew Morton wrote:
>>
>>> On Fri, 20 Apr 2007 17:38:06 -0400
>>> Rik van Riel <riel@redhat.com> wrote:
>>>
>>>> Andrew Morton wrote:
>>>>
>>>>> I've also merged Nick's "mm: madvise avoid exclusive mmap_sem".
>>>>>
>>>>> - Nick's patch also will help this problem. It could be that your
>>>>> patch
>>>>> no longer offers a 2x speedup when combined with Nick's patch.
>>>>>
>>>>> It could well be that the combination of the two is even better,
>>>>> but it
>>>>> would be nice to firm that up a bit.
>>>>
>>>>
>>>> I'll test that.
>>>
>>>
>>>
>>> Thanks.
>>
>>
>>
>> Well, good news.
>>
>> It turns out that Nick's patch does not improve peak
>> performance much, but it does prevent the decline when
>> running with 16 threads on my quad core CPU!
>>
>> We _definately_ want both patches, there's a huge benefit
>> in having them both.
>>
>> Here are the transactions/seconds for each combination:
>>
>> vanilla new glibc madv_free kernel madv_free + mmap_sem
>> threads
>>
>> 1 610 609 596 545
>> 2 1032 1136 1196 1200
>> 4 1070 1128 2014 2024
>> 8 1000 1088 1665 2087
>> 16 779 1073 1310 1999
>
>
>
> Is "new glibc" meaning MADV_DONTNEED + kernel with mmap_sem patch?
>
> The strange thing with your madv_free kernel is that it doesn't
> help single-threaded performance at all. So that work to avoid
> zeroing the new page is not a win at all there (maybe due to the
> cache effects I was worried about?).
>
> However MADV_FREE does improve scalability, which is interesting.
> The most likely reason I can see why that may be the case is that
> it avoids mmap_sem when faulting pages back in (I doubt it is due
> to avoiding the page allocator, but maybe?).
>
> So where is the down_write coming from in this workload, I wonder?
> Heap management? What syscalls?
>
> x86_64's rwsems are crap under heavy parallelism (even read-only),
> as I fixed in my recent generic rwsems patch. I don't expect MySQL
> to be such a mmap_sem microbenchmark, but I wonder how much this
> would help?
>
> What if we ran the private futexes patch to further cut down
> mmap_sem contention?
Hmm, without the MADV_FREE patch, I wonder if it isn't doing something
silly like read-faulting in a ZERO_PAGE then write faulting a new page
straight afterwards.. I'll have to try a few tests.
--
SUSE Labs, Novell Inc.
--
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-04-22 2:50 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-17 7:15 [PATCH] lazy freeing of memory through MADV_FREE Rik van Riel
2007-04-19 21:15 ` [PATCH] lazy freeing of memory through MADV_FREE 2/2 Rik van Riel
2007-04-20 21:03 ` Andrew Morton
2007-04-20 21:03 ` Andrew Morton
2007-04-20 21:24 ` Ulrich Drepper
2007-04-20 21:24 ` Ulrich Drepper
2007-04-21 7:37 ` Hugh Dickins
2007-04-21 7:37 ` Hugh Dickins
2007-04-21 16:32 ` Ulrich Drepper
2007-04-21 16:32 ` Ulrich Drepper
2007-04-20 20:57 ` [PATCH] lazy freeing of memory through MADV_FREE Andrew Morton
2007-04-20 20:57 ` Andrew Morton
2007-04-20 21:38 ` Rik van Riel
2007-04-20 21:38 ` Rik van Riel
2007-04-20 22:06 ` Andrew Morton
2007-04-20 22:06 ` Andrew Morton
2007-04-20 23:52 ` Rik van Riel
2007-04-20 23:52 ` Rik van Riel
2007-04-21 0:48 ` Eric Dumazet
2007-04-21 0:48 ` Eric Dumazet
2007-04-21 3:58 ` Rik van Riel
2007-04-21 3:58 ` Rik van Riel
2007-04-21 7:12 ` Jakub Jelinek
2007-04-21 7:12 ` Jakub Jelinek
2007-04-23 4:36 ` Nick Piggin
2007-04-23 4:36 ` Nick Piggin
2007-04-22 2:36 ` Nick Piggin
2007-04-22 2:36 ` Nick Piggin
2007-04-22 2:50 ` Nick Piggin [this message]
2007-04-22 2:50 ` Nick Piggin
2007-04-22 6:31 ` Rik van Riel
2007-04-22 6:31 ` Rik van Riel
2007-04-23 0:16 ` Nick Piggin
2007-04-23 0:16 ` Nick Piggin
2007-04-23 3:53 ` Rik van Riel
2007-04-23 3:53 ` Rik van Riel
2007-04-23 3:58 ` Nick Piggin
2007-04-23 3:58 ` Nick Piggin
2007-04-23 10:07 ` Nick Piggin
2007-04-23 10:07 ` Nick Piggin
2007-04-23 10:12 ` Rik van Riel
2007-04-23 10:12 ` Rik van Riel
2007-04-23 3:59 ` Rik van Riel
2007-04-23 3:59 ` Rik van Riel
2007-04-23 9:20 ` Rik van Riel
2007-04-23 10:21 ` Nick Piggin
2007-04-23 10:21 ` Nick Piggin
2007-04-23 10:31 ` Rik van Riel
2007-04-23 10:31 ` Rik van Riel
2007-04-23 10:35 ` Nick Piggin
2007-04-23 10:35 ` Nick Piggin
2007-04-23 10:44 ` Rik van Riel
2007-04-24 1:15 ` Nick Piggin
2007-04-24 1:15 ` Nick Piggin
2007-04-24 1:58 ` Rik van Riel
2007-04-24 2:16 ` Nick Piggin
2007-04-24 2:16 ` Nick Piggin
2007-04-24 4:42 ` Paul Mackerras
2007-04-24 4:42 ` Paul Mackerras
2007-04-24 5:13 ` Rik van Riel
2007-04-24 5:13 ` Rik van Riel
2007-04-24 2:53 ` Rik van Riel
2007-04-24 3:08 ` Andrew Morton
2007-04-24 3:08 ` Andrew Morton
2007-04-23 10:44 ` Jakub Jelinek
2007-04-23 10:44 ` Jakub Jelinek
2007-04-23 11:45 ` Rik van Riel
2007-04-23 11:45 ` Rik van Riel
2007-04-23 4:28 ` Rik van Riel
2007-04-23 4:28 ` Rik van Riel
2007-04-21 7:24 ` Hugh Dickins
2007-04-21 7:24 ` Hugh Dickins
2007-04-21 18:06 ` Rik van Riel
2007-04-21 18:06 ` Rik van Riel
2007-04-22 8:18 ` Andrew Morton
2007-04-22 8:18 ` Andrew Morton
2007-04-22 9:16 ` Christoph Hellwig
2007-04-22 9:16 ` Christoph Hellwig
2007-04-22 16:55 ` Ulrich Drepper
2007-04-22 16:55 ` Ulrich Drepper
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=462ACD7A.1070708@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=akpm@linux-foundation.org \
--cc=dshaks@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--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.