Impact of GC design on power and performance for Android

A. Hussein, M. Payer, A. Hosking, C. A. Vick. Systor 2015

[ACM]

Small mobile devices have evolved to versatile computing systems. Android devices run a complete software stack, including a full Linux kernel, user land with several software daemons and a virtual machine to run applications. On these mobile systems energy is a scarce resource and needs to be handled carefully. Current systems rely on governors that adjust the frequency of individual cores depending on the system load.

We measure energy consumption of different components of this complex software stack, including garbage collection (GC) of the Android virtual machine. Here we propose several extensions to the default GC configuration of Android, including a generational collector, across established dimensions of heap memory size and concurrency.

Our evaluation shows that Android’s asynchronous GC thread consumes a significant amount of energy. Therefore, varying the GC strategy can reduce total on-chip energy (by 20–30%) whilst slightly impacting application throughput (by 10–40%) and increasing worst-case pause times (by 20–30%). Our work quantifies the direct impact of GC on mobile system, enumerates the main factors and layers of this relationship, and offers a guide for analysis of memory behavior in understanding and tuning system performance.