diff options
| author | Kostya Kortchinsky <kostyak@google.com> | 2019-09-11 14:48:41 +0000 |
|---|---|---|
| committer | Kostya Kortchinsky <kostyak@google.com> | 2019-09-11 14:48:41 +0000 |
| commit | 161cca266a9d0b6deb5f1fd2de8ad543649a7fa1 (patch) | |
| tree | f79f728ce7e196bc856501ee2c1436f74ea2e1ac /compiler-rt/lib/scudo/standalone/allocator_config.h | |
| parent | 5957a61ff8e8e048da1d2c6c31247b308b915672 (diff) | |
| download | bcm5719-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.h | 4 |
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. |

