From 42ee32379deb615c6554ac8325417f451e987b35 Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Tue, 31 Mar 2020 16:39:49 -0700 Subject: Only retain for 64 bit. In 32 bit, the va space can be exhausted very easily. Change the jemalloc defaults to only retain for 64 bit to avoid this exhaustion. The performance of traces does get slightly worse, but most stay about the same. This should only affect devices that use malloc svelte, all other devices are on scudo. Bug: 142556796 Bug: 140079007 Test: Ran traces and verified va space is much lower. Test: Compared benchmarks with and without retaining. Test: Ran bionic unit tests. Test: Ran jemalloc tests. Test: Ran malloc stress tests. Change-Id: Iaec8276582f880145a1ca5ebbaa65789f46d2bf2 --- include/jemalloc/internal/jemalloc_internal_defs.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include') diff --git a/include/jemalloc/internal/jemalloc_internal_defs.h b/include/jemalloc/internal/jemalloc_internal_defs.h index 052bd11c..37ab466f 100644 --- a/include/jemalloc/internal/jemalloc_internal_defs.h +++ b/include/jemalloc/internal/jemalloc_internal_defs.h @@ -237,7 +237,12 @@ * common sequences of mmap()/munmap() calls will cause virtual memory map * holes. */ +#if defined(__LP64__) +// Only use retain for 64 bit since virtual memory can be exhausted +// very easily when running in 32 bit. +// See b/142556796. #define JEMALLOC_RETAIN +#endif /* TLS is used to map arenas and magazine caches to threads. */ /* #undef JEMALLOC_TLS */ -- cgit v1.2.3