summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/scudo/standalone/allocator_config.h
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2019-09-11 14:48:41 +0000
committerKostya Kortchinsky <kostyak@google.com>2019-09-11 14:48:41 +0000
commit161cca266a9d0b6deb5f1fd2de8ad543649a7fa1 (patch)
treef79f728ce7e196bc856501ee2c1436f74ea2e1ac /compiler-rt/lib/scudo/standalone/allocator_config.h
parent5957a61ff8e8e048da1d2c6c31247b308b915672 (diff)
downloadbcm5719-llvm-161cca266a9d0b6deb5f1fd2de8ad543649a7fa1.tar.gz
bcm5719-llvm-161cca266a9d0b6deb5f1fd2de8ad543649a7fa1.zip
[scudo][standalone] Android related improvements
Summary: This changes a few things to improve memory footprint and performances on Android, and fixes a test compilation error: - add `stdlib.h` to `wrappers_c_test.cc` to address https://bugs.llvm.org/show_bug.cgi?id=42810 - change Android size class maps, based on benchmarks, to improve performances and lower the Svelte memory footprint. Also change the 32-bit region size for said configuration - change the `reallocate` logic to reallocate in place for sizes larger than the original chunk size, when they still fit in the same block. This addresses patterns from `memory_replay` dumps like the following: ``` 202: realloc 0xb48fd000 0xb4930650 12352 202: realloc 0xb48fd000 0xb48fd000 12420 202: realloc 0xb48fd000 0xb48fd000 12492 202: realloc 0xb48fd000 0xb48fd000 12564 202: realloc 0xb48fd000 0xb48fd000 12636 202: realloc 0xb48fd000 0xb48fd000 12708 202: realloc 0xb48fd000 0xb48fd000 12780 202: realloc 0xb48fd000 0xb48fd000 12852 202: realloc 0xb48fd000 0xb48fd000 12924 202: realloc 0xb48fd000 0xb48fd000 12996 202: realloc 0xb48fd000 0xb48fd000 13068 202: realloc 0xb48fd000 0xb48fd000 13140 202: realloc 0xb48fd000 0xb48fd000 13212 202: realloc 0xb48fd000 0xb48fd000 13284 202: realloc 0xb48fd000 0xb48fd000 13356 202: realloc 0xb48fd000 0xb48fd000 13428 202: realloc 0xb48fd000 0xb48fd000 13500 202: realloc 0xb48fd000 0xb48fd000 13572 202: realloc 0xb48fd000 0xb48fd000 13644 202: realloc 0xb48fd000 0xb48fd000 13716 202: realloc 0xb48fd000 0xb48fd000 13788 ... ``` In this situation we were deallocating the old chunk, and allocating a new one for every single one of those, but now we can keep the same chunk (we just updated the header), which saves some heap operations. Reviewers: hctim, morehouse, vitalybuka, eugenis, cferris, rengolin Reviewed By: morehouse Subscribers: srhines, delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D67293 llvm-svn: 371628
Diffstat (limited to 'compiler-rt/lib/scudo/standalone/allocator_config.h')
-rw-r--r--compiler-rt/lib/scudo/standalone/allocator_config.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler-rt/lib/scudo/standalone/allocator_config.h b/compiler-rt/lib/scudo/standalone/allocator_config.h
index 06ec4f3f795..62c6f287510 100644
--- a/compiler-rt/lib/scudo/standalone/allocator_config.h
+++ b/compiler-rt/lib/scudo/standalone/allocator_config.h
@@ -53,8 +53,8 @@ struct AndroidSvelteConfig {
// 512MB regions
typedef SizeClassAllocator64<SizeClassMap, 29U> Primary;
#else
- // 256KB regions
- typedef SizeClassAllocator32<SizeClassMap, 18U> Primary;
+ // 64KB regions
+ typedef SizeClassAllocator32<SizeClassMap, 16U> Primary;
#endif
template <class A>
using TSDRegistryT = TSDRegistrySharedT<A, 1U>; // Shared, only 1 TSD.
OpenPOWER on IntegriCloud