LWN.net Logo

Re: [RFC v2] Support volatile range for anon vma

From:  KOSAKI Motohiro <kosaki.motohiro-AT-gmail.com>
To:  Paul Turner <pjt-AT-google.com>
Subject:  Re: [RFC v2] Support volatile range for anon vma
Date:  Wed, 31 Oct 2012 18:56:05 -0400
Message-ID:  <CAHGf_=om34CQoPqgmVE5v8oVxntaJQ-bvFeEPMnfe_R+uvxqrQ@mail.gmail.com>
Cc:  Andrew Morton <akpm-AT-linux-foundation.org>, Minchan Kim <minchan-AT-kernel.org>, linux-kernel-AT-vger.kernel.org, linux-mm-AT-kvack.org, John Stultz <john.stultz-AT-linaro.org>, Christoph Lameter <cl-AT-linux.com>, Android Kernel Team <kernel-team-AT-android.com>, Robert Love <rlove-AT-google.com>, Mel Gorman <mel-AT-csn.ul.ie>, Hugh Dickins <hughd-AT-google.com>, Dave Hansen <dave-AT-linux.vnet.ibm.com>, Rik van Riel <riel-AT-redhat.com>, Dave Chinner <david-AT-fromorbit.com>, Neil Brown <neilb-AT-suse.de>, Mike Hommey <mh-AT-glandium.org>, Taras Glek <tglek-AT-mozilla.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu-AT-jp.fujitsu.com>, sanjay-AT-google.com, David Rientjes <rientjes-AT-google.com>
Archive-link:  Article, Thread

>> > Allocator should call madvise(MADV_NOVOLATILE) before reusing for
>> > allocating that area to user. Otherwise, accessing of volatile range
>> > will meet SIGBUS error.
>>
>> Well, why?  It would be easy enough for the fault handler to give
>> userspace a new, zeroed page at that address.
>
> Note: MADV_DONTNEED already has this (nice) property.

I don't think I strictly understand this patch. but maybe I can answer why
userland and malloc folks don't like MADV_DONTNEED.

glibc malloc discard freed memory by using MADV_DONTNEED
as tcmalloc. and it is often a source of large performance decrease.
because of MADV_DONTNEED discard memory immediately and
right after malloc() call fall into page fault and pagesize memset() path.
then, using DONTNEED increased zero fill and cache miss rate.

At called free() time, malloc don't have a knowledge when next big malloc()
is called. then, immediate discarding may or may not get good performance
gain. (Ah, ok, the rate is not 5:5. then usually it is worth. but not everytime)


In past, several developers tryied to avoid such situation, likes

- making zero page daemon and avoid pagesize zero fill at page fault
- making new vma or page flags and mark as discardable w/o swap and
  vmscan treat it. (like this and/or MADV_FREE)
- making new process option and avoid page zero fill from page fault path.
  (yes, it is big incompatibility and insecure. but some embedded folks thought
   they are acceptable downside)
- etc


btw, I'm not sure this patch is better for malloc because current MADV_DONTNEED
don't need mmap_sem and works very effectively when a lot of threads case.
taking mmap_sem might bring worse performance than DONTNEED. dunno.

--
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>



(Log in to post comments)

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds