aboutsummaryrefslogtreecommitdiff
path: root/en/devices/tech
diff options
context:
space:
mode:
Diffstat (limited to 'en/devices/tech')
-rw-r--r--en/devices/tech/dalvik/improvements.html25
-rw-r--r--en/devices/tech/debug/sanitizers.html2
-rw-r--r--en/devices/tech/perf/low-ram.html34
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. --&gt;
&lt;integer name=&quot;config_lowMemoryKillerMinFreeKbytesAdjust&quot;&gt;0&lt;/integer&gt;
</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.&lt;device&gt;.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, &amp; 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