From 64cb77b9469207799e570483dadc720dbf12c794 Mon Sep 17 00:00:00 2001 From: Kostya Kortchinsky Date: Thu, 30 Jan 2020 15:26:46 -0800 Subject: [PATCH] [scudo][standalone] Change default Android config Summary: This changes a couple of parameters in the default Android config to address some performance and memory footprint issues (well to be closer to the default Bionic allocator numbers). Subscribers: #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D73750 --- compiler-rt/lib/scudo/standalone/allocator_config.h | 11 ++++++----- compiler-rt/lib/scudo/standalone/primary64.h | 2 +- compiler-rt/lib/scudo/standalone/size_class_map.h | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/compiler-rt/lib/scudo/standalone/allocator_config.h b/compiler-rt/lib/scudo/standalone/allocator_config.h index 890c9f0..3d33850 100644 --- a/compiler-rt/lib/scudo/standalone/allocator_config.h +++ b/compiler-rt/lib/scudo/standalone/allocator_config.h @@ -39,15 +39,16 @@ struct DefaultConfig { struct AndroidConfig { using SizeClassMap = AndroidSizeClassMap; #if SCUDO_CAN_USE_PRIMARY64 - // 128MB regions - typedef SizeClassAllocator64 Primary; #else - // 512KB regions - typedef SizeClassAllocator32 Primary; + // 256KB regions + typedef SizeClassAllocator32 Primary; #endif - typedef MapAllocator> Secondary; + // Cache blocks up to 2MB + typedef MapAllocator> Secondary; template using TSDRegistryT = TSDRegistrySharedT; // Shared, max 2 TSDs. }; diff --git a/compiler-rt/lib/scudo/standalone/primary64.h b/compiler-rt/lib/scudo/standalone/primary64.h index 02e8051..9d8dcac 100644 --- a/compiler-rt/lib/scudo/standalone/primary64.h +++ b/compiler-rt/lib/scudo/standalone/primary64.h @@ -207,7 +207,7 @@ private: static const uptr PrimarySize = RegionSize * NumClasses; // Call map for user memory with at least this size. - static const uptr MapSizeIncrement = 1UL << 17; + static const uptr MapSizeIncrement = 1UL << 18; // Fill at most this number of batches from the newly map'd memory. static const u32 MaxNumBatches = 8U; diff --git a/compiler-rt/lib/scudo/standalone/size_class_map.h b/compiler-rt/lib/scudo/standalone/size_class_map.h index 947526e..f16fed7 100644 --- a/compiler-rt/lib/scudo/standalone/size_class_map.h +++ b/compiler-rt/lib/scudo/standalone/size_class_map.h @@ -141,10 +141,10 @@ typedef SizeClassMap<3, 5, 8, 17, 8, 10> DefaultSizeClassMap; // TODO(kostyak): further tune class maps for Android & Fuchsia. #if SCUDO_WORDSIZE == 64U typedef SizeClassMap<4, 4, 8, 14, 4, 10> SvelteSizeClassMap; -typedef SizeClassMap<3, 5, 8, 17, 14, 14> AndroidSizeClassMap; +typedef SizeClassMap<2, 5, 9, 16, 14, 14> AndroidSizeClassMap; #else typedef SizeClassMap<4, 3, 7, 14, 5, 10> SvelteSizeClassMap; -typedef SizeClassMap<3, 5, 8, 17, 14, 14> AndroidSizeClassMap; +typedef SizeClassMap<2, 5, 9, 16, 14, 14> AndroidSizeClassMap; #endif } // namespace scudo -- 2.7.4