[compiler-rt] r290218 - Reduce the size of quarantine cache in ASAN_LOW_MEMORY configuration.

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 26 18:29:15 PST 2016


Probably broken by this patch
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/466

On Tue, Dec 20, 2016 at 4:28 PM Evgeniy Stepanov via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: eugenis
> Date: Tue Dec 20 18:18:10 2016
> New Revision: 290218
>
> URL: http://llvm.org/viewvc/llvm-project?rev=290218&view=rev
> Log:
> Reduce the size of quarantine cache in ASAN_LOW_MEMORY configuration.
>
> Summary:
> Experiments show that on Android the current values result in too much
> of the memory consumption for all quarantined chunks.
>
> Reviewers: kcc, eugenis
>
> Subscribers: mgorny, danalbert, srhines, llvm-commits, kubabrecka
>
> Patch by Aleksey Shlyapnikov.
>
> Differential Revision: https://reviews.llvm.org/D27873
>
> Modified:
>     compiler-rt/trunk/lib/asan/CMakeLists.txt
>     compiler-rt/trunk/lib/asan/asan_allocator.cc
>     compiler-rt/trunk/lib/asan/asan_flags.cc
>     compiler-rt/trunk/lib/asan/asan_internal.h
>
> Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=290218&r1=290217&r2=290218&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)
> +++ compiler-rt/trunk/lib/asan/CMakeLists.txt Tue Dec 20 18:18:10 2016
> @@ -41,8 +41,6 @@ append_rtti_flag(OFF ASAN_CFLAGS)
>  set(ASAN_DYNAMIC_LINK_FLAGS)
>
>  if(ANDROID)
> -  list(APPEND ASAN_COMMON_DEFINITIONS
> -    ASAN_LOW_MEMORY=1)
>  # On Android, -z global does not do what it is documented to do.
>  # On Android, -z global moves the library ahead in the lookup order,
>  # placing it right after the LD_PRELOADs. This is used to compensate for
> the fact
>
> Modified: compiler-rt/trunk/lib/asan/asan_allocator.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_allocator.cc?rev=290218&r1=290217&r2=290218&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_allocator.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_allocator.cc Tue Dec 20 18:18:10 2016
> @@ -227,7 +227,12 @@ struct Allocator {
>    static const uptr kMaxAllowedMallocSize =
>        FIRST_32_SECOND_64(3UL << 30, 1ULL << 40);
>    static const uptr kMaxThreadLocalQuarantine =
> -      FIRST_32_SECOND_64(1 << 18, 1 << 20);
> +      // It is not advised to go lower than 64Kb, otherwise quarantine
> batches
> +      // pushed from thread local quarantine to global one will create
> too much
> +      // overhead. One quarantine batch size is 8Kb and it  holds up to
> 1021
> +      // chunk, which amounts to 1/8 memory overhead per batch when
> thread local
> +      // quarantine is set to 64Kb.
> +      (ASAN_LOW_MEMORY) ? 1 << 16 : FIRST_32_SECOND_64(1 << 18, 1 << 20);
>
>    AsanAllocator allocator;
>    AsanQuarantine quarantine;
>
> Modified: compiler-rt/trunk/lib/asan/asan_flags.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.cc?rev=290218&r1=290217&r2=290218&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_flags.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_flags.cc Tue Dec 20 18:18:10 2016
> @@ -156,7 +156,7 @@ void InitializeFlags() {
>      f->quarantine_size_mb = f->quarantine_size >> 20;
>    if (f->quarantine_size_mb < 0) {
>      const int kDefaultQuarantineSizeMb =
> -        (ASAN_LOW_MEMORY) ? 1UL << 6 : 1UL << 8;
> +        (ASAN_LOW_MEMORY) ? 1UL << 4 : 1UL << 8;
>      f->quarantine_size_mb = kDefaultQuarantineSizeMb;
>    }
>    if (!f->replace_str && common_flags()->intercept_strlen) {
>
> Modified: compiler-rt/trunk/lib/asan/asan_internal.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_internal.h?rev=290218&r1=290217&r2=290218&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_internal.h (original)
> +++ compiler-rt/trunk/lib/asan/asan_internal.h Tue Dec 20 18:18:10 2016
> @@ -36,7 +36,7 @@
>  // If set, values like allocator chunk size, as well as defaults for some
> flags
>  // will be changed towards less memory overhead.
>  #ifndef ASAN_LOW_MEMORY
> -# if SANITIZER_IOS || (SANITIZER_WORDSIZE == 32)
> +# if SANITIZER_IOS || SANITIZER_ANDROID
>  #  define ASAN_LOW_MEMORY 1
>  # else
>  #  define ASAN_LOW_MEMORY 0
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161227/cc60f936/attachment.html>


More information about the llvm-commits mailing list