From 2e6741974caa4810d69744bcec3e4afd8a9a00d4 Mon Sep 17 00:00:00 2001 From: Lokesh Gidra Date: Mon, 25 Nov 2019 10:41:23 -0800 Subject: Protect/Unprotect regions (region space) only in debug build 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 --- runtime/gc/space/region_space.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- cgit v1.2.3