Improving Energy Efficiency of Android Devices by Preventing Redundant Frame Generation
Managing the power consumption of display-related components in mobile devices is difficult because of performance degradation. Therefore, eliminating hidden workloads, such as redundant frames, is preferable, as it directly reduces power without affecting the user experience. Our preliminary study shows that the default launcher of the Android Open Source Project (AOSP) and popular applications, such as Instagram and Pinterest, generate redundant frames. In this paper, we propose a scheme to optimize the power consumption of the smartphone’s display-related components by preventing redundant frames generation. By analyzing the frame-generation process, we observe that redundant frame generation is possible in the current Android framework. We then propose a scheme that recognizes and prevents redundant frame generation before actual frame generation (i.e., frame rendering in the GPU). The proposed scheme utilizes a display list, which was introduced in recent Android smartphones for efficient frame generation. We implemented the proposed scheme on Nexus smartphones. On the Nexus 5, the proposed solution reduced the energy of the AOSP default launcher, Instagram, and Pinterest by 40%, 35.4%, and 39.6%, respectively. Furthermore, the experimental results with a general usage scenario showed that our scheme prevented about 35% of redundant frame generation with a false-positive rate of 1.8%
despite the diverse attempts to optimize the power con-sumption of mobile devices, no significant improve-ment in battery life has been achieved due to the ever-in-creasing power demand of mobile devices. For example, a performance improvement in the CPU or GPU of mobile application processors (APs) does not necessarily lead to additional power consumption, because the power effi-ciency of the component has also been improved so that less power is consumed for the same workloads. However, the increased display resolution in recent mobile devices requires high-resolution frames, leading to increased CPU and GPU workloads. Moreover, the display panels in most mobile devices have a refresh rate of 60 frames per second to ensure a fast and smooth user experience. The increase in the display resolution severely affects the devices’Code Shoppy
power consumption. Optimizing power consumption in display-related components is challenging because display quality is closely related to the quality of the user experi-ence. A small change in power optimization can signifi-cantly affect the user experience and therefore, should be invisible to the user. Extensive research has been conducted to reduce the power consumption of the display-related components of mobile devices. These studies fall into two categories: op-timizing the power consumption of screen panels and op-timizing the power consumption in the content-generation phase. The approaches to optimizing screen power con-sumption include backlight scaling [7], [11], [21], dynamic voltage scaling of the display panel [9], [26], [28], and color adjustment schemes [12], [27]. These approaches eventu-ally hinder the user experience, as the display content is often modified with the optimization schemes. Meanwhile, regarding the optimization of power consumption in the content-generation phase, He et al. [16] and Nixon et al. [24] demonstrated dynamic resolution scaling during frame generation. Bui et al. [8], Han et al. [15], and Kim et al. [19] proposed schemes to control the display refresh rate ac-cording to the measured redundant frame rate. Addition-ally, Ham et al. [14] and Huang et al. [18] reduced the power consumption by optimizing the memory transfer process for the generated frame data. Hsieh et al. [17] and Pathania et al. [25] explored CPU and GPU management
Managing the power consumption of display-related components in mobile devices is difficult because of performance degradation. Therefore, eliminating hidden workloads, such as redundant frames, is preferable, as it directly reduces power without affecting the user experience. Our preliminary study shows that the default launcher of the Android Open Source Project (AOSP) and popular applications, such as Instagram and Pinterest, generate redundant frames. In this paper, we propose a scheme to optimize the power consumption of the smartphone’s display-related components by preventing redundant frames generation. By analyzing the frame-generation process, we observe that redundant frame generation is possible in the current Android framework. We then propose a scheme that recognizes and prevents redundant frame generation before actual frame generation (i.e., frame rendering in the GPU). The proposed scheme utilizes a display list, which was introduced in recent Android smartphones for efficient frame generation. We implemented the proposed scheme on Nexus smartphones. On the Nexus 5, the proposed solution reduced the energy of the AOSP default launcher, Instagram, and Pinterest by 40%, 35.4%, and 39.6%, respectively. Furthermore, the experimental results with a general usage scenario showed that our scheme prevented about 35% of redundant frame generation with a false-positive rate of 1.8%
despite the diverse attempts to optimize the power con-sumption of mobile devices, no significant improve-ment in battery life has been achieved due to the ever-in-creasing power demand of mobile devices. For example, a performance improvement in the CPU or GPU of mobile application processors (APs) does not necessarily lead to additional power consumption, because the power effi-ciency of the component has also been improved so that less power is consumed for the same workloads. However, the increased display resolution in recent mobile devices requires high-resolution frames, leading to increased CPU and GPU workloads. Moreover, the display panels in most mobile devices have a refresh rate of 60 frames per second to ensure a fast and smooth user experience. The increase in the display resolution severely affects the devices’Code Shoppy
power consumption. Optimizing power consumption in display-related components is challenging because display quality is closely related to the quality of the user experi-ence. A small change in power optimization can signifi-cantly affect the user experience and therefore, should be invisible to the user. Extensive research has been conducted to reduce the power consumption of the display-related components of mobile devices. These studies fall into two categories: op-timizing the power consumption of screen panels and op-timizing the power consumption in the content-generation phase. The approaches to optimizing screen power con-sumption include backlight scaling [7], [11], [21], dynamic voltage scaling of the display panel [9], [26], [28], and color adjustment schemes [12], [27]. These approaches eventu-ally hinder the user experience, as the display content is often modified with the optimization schemes. Meanwhile, regarding the optimization of power consumption in the content-generation phase, He et al. [16] and Nixon et al. [24] demonstrated dynamic resolution scaling during frame generation. Bui et al. [8], Han et al. [15], and Kim et al. [19] proposed schemes to control the display refresh rate ac-cording to the measured redundant frame rate. Addition-ally, Ham et al. [14] and Huang et al. [18] reduced the power consumption by optimizing the memory transfer process for the generated frame data. Hsieh et al. [17] and Pathania et al. [25] explored CPU and GPU management
To ensure the display of 60 frames per second, each frame ought to be generated efficiently within a timing constraint of 16 ms. Before Android 3.0, the modification of a view was propagated to the root of the view hierarchy, invali-dating all the views that pass over during propagation. This means that the modification of a single view could generate massive calls on the drawing function. Moreover, the operation is CPU-intensive because each drawing call measures the relative size or calculates the position of the view according to its layout. In Android 3.0, the display list was introduced to resolve this inefficient process of frame generation. In brief, the display list is an intermediate rep-resentation of drawing commands for the GPU. With the display list, as shown in Fig. 2, each view hierarchy has a render node that stores the display list for the correspond-ing view. Accordingly, only the modified view updates the display list; others do not have to call the drawing function because the previous result is stored in the render node. This reduction in the drawing calls makes the frame-gen-eration process faster and more efficient. In addition to the display list, display list properties were introduced in Android 4.1 to provide frame genera-tion more efficiently. With the display list only, there are still unnecessary display list updates when setting the properties of the views. For example, a simple transition or rotation of views causes the whole display list to updateeven though most of the results may remain the same. Dis-play list properties are used to remove this inefficiency. By managing the properties separately, a simple transition or rotation of views is readily achieved without the costly process of updating the display list.Motivated by the work of Kim et al. [19], we suspected that in the current Android framework, redundant frames that are unrecognized by users could be generated frequently and consequently, waste a non-trivial amount of device power. To clarify the problem further, we analyzed the An-droid’s frame-generation process. We found that although the display list and the display list properties have en-hanced the efficiency of frame generation by removing un-necessary drawing calls, the display list does not provide a means to prevent the list’s own redundancy. Even when a frame update is requested without a display list update, or the display list update makes no difference, the current scheme of the display list just redraws a frame and wastes device power. This redundant execution should be pre-vented because the result will be identical and unrecog-nizable to users. We were certain that the current scheme of the display list could be improved by preventing such redundant execution. To confirm our understanding, we conducted a simple experiment using Google’s Nexus 5 reference smartphone running Android 6.0.1 (Marshmallow). We activated the Profile GPU Rendering [1] functionality in the Android de-veloper menu to monitor frame generation in real time. We also used the Systrace tool (Android’s debugging tool for developers) [2] for a detailed analysis of the frame-genera-tion process. For the experiment, we wrote a simple appli-cation that has a button that calls the invalidate function constantly until the application is closed. Here, the invali-date function calls notify the Android framework that the button needs to be redrawn. In this application, the user could see no visual change, as we do nothing but call the invalidate function.