diff options
Diffstat (limited to 'en/devices/tech')
-rw-r--r-- | en/devices/tech/dalvik/improvements.html | 25 | ||||
-rw-r--r-- | en/devices/tech/debug/sanitizers.html | 2 | ||||
-rw-r--r-- | en/devices/tech/perf/low-ram.html | 34 |
3 files changed, 26 insertions, 35 deletions
diff --git a/en/devices/tech/dalvik/improvements.html b/en/devices/tech/dalvik/improvements.html index 1461aff1..aa41a1f0 100644 --- a/en/devices/tech/dalvik/improvements.html +++ b/en/devices/tech/dalvik/improvements.html @@ -27,6 +27,31 @@ release. The list below summarizes enhancements device manufacturers can expect in ART. </p> +<h2 id="concurrent-compacting-gc">Concurrent compacting garbage collector</h2> + +<p>As announced at Google I/O, ART features a new concurrent compacting garbage +collector (GC) in Android 8.0. This collector compacts the heap every time GC +runs and while the app is running, with only one short pause for processing +thread roots. Here are its benefits:</p> + +<ul> + <li>GC always compacts the heap: 32% smaller heap sizes on average compared + to Android 7.0.</li> + <li>Compaction enables thread local bump pointer object allocation: + Allocations are 70% faster than in Android 7.0.</li> + <li>Offers 85% smaller pause times for the H2 benchmark compared to the + Android 7.0 GC.</li> + <li>Pause times no longer scale with heap size; apps should be able to use + large heaps without worrying about jank.</li> + <li>GC implementation detail - Read barriers: + <ul> + <li>Read barriers are a small amount of work done for each object field + read.</li> + <li>These are optimized in the compiler, but might slow down some use + cases.</li> + </ul> +</ul> + <h2 id="loop-optimizations">Loop optimizations</h2> <p> diff --git a/en/devices/tech/debug/sanitizers.html b/en/devices/tech/debug/sanitizers.html index 5e0914bb..cb906ca8 100644 --- a/en/devices/tech/debug/sanitizers.html +++ b/en/devices/tech/debug/sanitizers.html @@ -150,7 +150,6 @@ LOCAL_CFLAGS := -std=c11 -Wall -Werror -O0 LOCAL_SRC_FILES:= sanitizer-status.c LOCAL_MODULE:= sanitizer-status -LOCAL_MODULE_TAGS := debug LOCAL_SANITIZE := alignment bounds null unreachable integer LOCAL_SANITIZE_DIAG := alignment bounds null unreachable integer @@ -177,7 +176,6 @@ a blueprint (Android.bp): srcs: ["sanitizer-status.c"], name: "sanitizer-status", - tags: ["debug"], sanitize: { misc_undefined: [ diff --git a/en/devices/tech/perf/low-ram.html b/en/devices/tech/perf/low-ram.html index 4b9f67e7..715ff5c1 100644 --- a/en/devices/tech/perf/low-ram.html +++ b/en/devices/tech/perf/low-ram.html @@ -34,8 +34,7 @@ releases as well.</p> <h3 id="opt-mgmt">Improved memory management</h3> <ul> -<li>Validated memory-saving kernel configurations: Kernel Same-page Merging -(KSM), and Swap to ZRAM.</li> +<li>Validated memory-saving kernel configurations: Swap to ZRAM.</li> <li>Kill cached processes if about to be uncached and too large.</li> <li>Don't allow large services to put themselves back into A Services (so they can't cause the launcher to be killed).</li> @@ -200,37 +199,6 @@ proportionally to the smaller buckets. 0 keeps the default. --> <integer name="config_lowMemoryKillerMinFreeKbytesAdjust">0</integer> </pre> -<h3 id="ksm">KSM (Kernel samepage merging)</h3> - -<p>KSM is a kernel thread that runs in the background and compares pages in -memory that have been marked <code>MADV_MERGEABLE</code> by user-space. If two pages are -found to be the same, the KSM thread merges them back as a single -copy-on-write page of memory.</p> - -<p>KSM will save memory over time on a running system, gaining memory duplication -at a cost of CPU power, which could have an impact on battery life. You should -measure whether the power tradeoff is worth the memory savings you get by -enabling KSM.</p> - -<p>To test KSM, we recommend looking at long running devices (several hours) and -seeing whether KSM makes any noticeable improvement on launch times and -rendering times.</p> - -<p>To enable KSM, enable <code>CONFIG_KSM</code> in the kernel and then add the -following lines to your` <code>init.<device>.rc</code> file:<br> - -<pre class="devsite-click-to-copy"> -write /sys/kernel/mm/ksm/pages_to_scan 100 -write /sys/kernel/mm/ksm/sleep_millisecs 500 -write /sys/kernel/mm/ksm/run 1 -</pre> - -<p>Once enabled, there are few utilities that will help in the debugging namely : -procrank, librank, & ksminfo. These utilities allow you to see which KSM -memory is mapped to what process, which processes use the most KSM memory. -Once you have found a chunk of memory that looks worth exploring you can use -the hat utility if it's a duplicate object on the dalvik heap. </p> - <h3 id="zram">Swap to zRAM</h3> <p>zRAM swap can increase the amount of memory available in the system by |