diff options
author | Lokesh Gidra <lokeshgidra@google.com> | 2019-11-25 10:41:23 -0800 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-11 19:05:13 +0200 |
commit | 1a3963040c643ddbdb5a4773c9bcdc13f4968857 (patch) | |
tree | e80d6690a1d980110e15f00ed4a5e6c0393989a3 | |
parent | 297051474fa7d3315f5b560d1d3b5fd55d6fc5f3 (diff) | |
download | android_art-staging/lineage-17.0_merge-android-10.0.0_r9.tar.gz android_art-staging/lineage-17.0_merge-android-10.0.0_r9.tar.bz2 android_art-staging/lineage-17.0_merge-android-10.0.0_r9.zip |
Protect/Unprotect regions (region space) only in debug buildstaging/lineage-17.0_merge-android-10.0.0_r9
During performance analysis it was observed that the
allocation-intensive workloads get negatively impacted by the region
protect/unprotect. Therefore, we enable this only on debug builds.
Some of the most affected benchmarks on Golem are as follows:
Benchmark | armv8 | armv7 | x64 | x32
------------------------------------------------------------------
BinaryTrees | 8% | 8% | 13% | 12%
MicroAllocThreeFinalThrice | 13% | 8% | 27% | 30%
MicroAllocThreeFinalTwice | 13% | 9% | 32% | 30%
MicroAllocThreeFinal | 13% | 8% | 33% | 30%
MicroAllocTwoFinal | 11% | 9% | 32% | 31%
MicroAllocOneFinal | 11% | 9% | 33% | 31%
MicroAllocBaseline | 12% | 9% | 33% | 34%
KotlinMicroTree | -0.4% | 0.7% | 8% | 9%
KotlinMicroMap | 6% | 3% | 0.7% | 1%
KotlinImgProc-CheckerboardMultiply | 5% | 0.5% | 0% |-0.5%
Splay | 5% | 4% | 2% | 3%
MicroLazyInitSingleThreadedSlow | 8% | -2% | 17% | 7%
MicroLazyInitImmutableSlow | 5% | -2% | 24% | 8%
Test: golem benchmarking
Bug:140130889
Change-Id: I6be646bcc069d59625112c1b9ab91bbbc5f9f627
-rw-r--r-- | runtime/gc/space/region_space.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/runtime/gc/space/region_space.cc b/runtime/gc/space/region_space.cc index 823043ec75..4329a379fc 100644 --- a/runtime/gc/space/region_space.cc +++ b/runtime/gc/space/region_space.cc @@ -33,7 +33,7 @@ namespace space { static constexpr uint kEvacuateLivePercentThreshold = 75U; // Whether we protect the unused and cleared regions. -static constexpr bool kProtectClearedRegions = true; +static constexpr bool kProtectClearedRegions = kIsDebugBuild; // Wether we poison memory areas occupied by dead objects in unevacuated regions. static constexpr bool kPoisonDeadObjectsInUnevacuatedRegions = true; |