greendroid: diagnosis of energy inefficiency in...

16
GreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C. Cheung in collaboration with Yepang Liu, Chang Xu, and S.C. Cheung. Where Has My Battery Gone? Finding Sensor Related Energy Black Holes in Smartphone Applications. In Proceedings of the 11th IEEE International Conference on Pervasive Computing and Communications (PERCOM 2013), pp. 2-10, San Diego, California, USA, Mar 2013. YepangLiu The Hong Kong University of Science and Technology Chang Xu State Key Lab for Novel Software, Nanjing University ISHCS 2013 50 billion downloads (November 2013) 1 million applications (November 2013) Smartphone apps 1/31 Energy Problem Full Network access Frequent sensor usage 3D rendering 2/29 Energy Problem Full Network access Frequent sensor usage 3D rendering Annual density improvement very slow (6%) Energy Inefficiency 2/29

Upload: others

Post on 07-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

GreenDroid: Diagnosis of Energy Inefficiency in Android Applications

S.C. Cheung

in collaboration with

Yepang Liu, Chang Xu, and S.C. Cheung. Where Has My Battery Gone? Finding Sensor Related Energy Black Holes in

Smartphone Applications. In Proceedings of the 11th IEEE International Conference on Pervasive Computing and

Communications (PERCOM 2013), pp. 2-10, San Diego, California, USA, Mar 2013.

Yepang Liu

The Hong Kong University of Science and Technology

Chang Xu

State Key Lab for Novel Software, Nanjing University

ISHCS 2013

50 billion downloads (November 2013)

1 million applications (November 2013)

Smartphone apps

1/31

Energy Problem

Full Network access

Frequent sensor usage 3D rendering

2/29

Energy Problem

Full Network access

Frequent sensor usage 3D rendering

Annual density improvement very slow (6%)

Energy Inefficiency

2/29

Page 2: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Energy Problem

• Problem magnitude– Thousands of apps are NOT energy efficient

– Millions of users affected and complained

– Phone batteries drained in a few hours

• Major reasons– Hardware management burden (e.g., sensors)

– Lack of dedicated QA, short time to market

– Difficulty in problem diagnosis

3/31

(Pathak et al. Hotnets 2011)

Motivation

• What are the common causes of energy problems?

• Can we distill patterns to enable automated diagnosis?

4/31

Our Work

Investigation

•Diagnosis difficulty

•Common causes

Evaluation

•Effectiveness

•Efficiency

Automated diagnosis

•State exploration

•Energy efficiency analysis

5/31

Investigated Subjects

6/31

10

33

136

SourceForge

GitHub

Google Code

0 40 80 120 160

App Availability Distribution

174 popular open-source Android apps (randomly selected)

Page 3: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Investigated Subjects

Source Repository(24 affected apps)

� Bug reports

� Comments on bug reports

� Bug fixing patches

� Patch reviews

� Revision commit logs

6/31

3

30

GitHub

Google Code

0 5 10 15 20 25 30

App Availability Distribution

33 apps with bug reports on energy problems(problems in 24 apps have been fixed)

Observations

7/31

• Reproduce problem (extensive testing, energy profiling)

• Figure out root cause (instrumentation, runtime logging)

Diagnosis difficulty

Observations

• Reproduce problem (extensive testing, energy profiling)

• Figure out root cause (instrumentation, runtime logging)

Diagnosis difficulty

• Common causes (10/24): improper use of sensors

Problem causes

7/31

Patterns

• Missing sensor deactivation

8/31

R

Registration

(All executions)...

Page 4: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Patterns

• Missing sensor deactivation

8/31

R

“Always un-register sensor listeners timely!” – Android documentation

UnregistrationRegistration

U (All executions)...

Patterns

• Missing sensor deactivation

8/31

• Sensory data underutilization

R U (Execution 1)

Location data well utilized

...

R

UnregistrationRegistration

U (All executions)...

“Always un-register sensor listeners timely!” – Android documentation

Patterns

• Missing/untimely sensor deactivation

8/31

• Sensory data underutilization

R U (Execution 1)

Location data well utilized for useful outcomes

...

R U (Execution 2)

Poor utilization

...

Update notification bar only? (Geohash Droid issue 24)Render invisible maps? (Osmdroid issue 53)

R

UnregistrationRegistration

U (All executions)...

“Always un-register sensor listeners timely!” – Android documentation

Sensory Data Underutilization (Examples)

9/31

“GeoHashDroid should slow down sensor update significantly ifnothing besides the notification bar is listening.”

(GeoHashDroid Issue 24)

“GPS sensor should be timely disabled if location data are usedto update an invisible map.”

(Osmdroid Issue 53)

R U (Execution 1)

Location data well utilized

...

R U (Execution 2)

Poor utilization

...

Page 5: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Approach Overview (GreenDroid)

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

10/31

Approach Overview (GreenDroid)

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

10/31

Java PathFinder

Sensory Data Utilization Analyzer

Runtime Controller

Application Under Analysis

*.class

*.xml

Analysis Report

• Application state• Energy inefficiency

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

10/31

Java PathFinder

Sensory Data Utilization Analyzer

Runtime Controller

Application Under Analysis

*.class

*.xml

Analysis Report

• Application state• Energy inefficiency

Input Output

Approach Overview (GreenDroid)

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

10/31

Java PathFinder

Sensory Data Utilization Analyzer

Runtime Controller

Application Under Analysis

*.class

*.xml

Analysis Report

• Application state• Energy inefficiency

1. Event generation2.State exploration

Approach Overview (GreenDroid)

Page 6: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

10/31

Java PathFinder

Sensory Data Utilization Analyzer

Runtime Controller

Application Under Analysis

*.class

*.xml

Analysis Report

• Application state• Energy inefficiency

1. Sensory data tracking2.Utilization analysis3.Sensor activation/deactivation monitoring

Approach Overview (GreenDroid)

• Dynamic analysis (on top of Java PathFinder)

• Goal: Simple, scalable, and effective

• Major Challenges

– App execution and state exploration in Java PathFinder

– Sensory data identification and utilization analysis (no metrics)

10/31

Java PathFinder

Sensory Data Utilization Analyzer

Runtime Controller

Application Under Analysis

*.class

*.xml

Analysis Report

• Application state• Energy inefficiency

Approach Overview (GreenDroid)

11/31

General Java programs(explicit control flow)

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Problems)

11/31

General Java programs(explicit control flow)

Android programs (event-driven)

VS

Class C• Handler 1• Handler 2• …• Handler n

Class B• Handler 1• Handler 2• …• Handler n

Class A• Handler 1• Handler 2• …• Handler n

Loosely coupled handlers

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Problems)

Page 7: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

11/31

Applications

Frameworks

Libs Dalvik VM

Linux Kernel

Android Platform

Scheduled by

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Problems)

Implicit control flow

12/31

Applications

Frameworks

Libs Dalvik VM

Linux Kernel

Android Platform

Scheduled by

Mostlynative!

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Problems)

Implicit control flow

13/31

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Problems)

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

14/31

Android Specs Temporal rules (AEM Model)

Handler scheduling policies

Temporal rules (AEM Model)

Input: (1) app execution history(2) Newly received event

Output: next handler to execute

Decision procedure

Concretization

Page 8: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

15/31

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

15/31

Identify native methods

Native method

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

15/31

Identify native methods

Create stubs (native peers)Native peer

Native method

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

15/31

Identify native methods

Create stubs (native peers)

Implement logics

Native peer

Native method

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

Page 9: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

16/31

Application configurations

Activity 1

……

Activity n

GUI Model

GUI Model

Association

Association

GUI Layout Analysis (Static)

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

16/31

• Absence of explicit control flow (event-driven)

• Heavy reliance on native system libs (platform specific)

• Essentially interactive (valid user input generation)

App Execution in JPF (Solutions)

JPFJVM

Call stack

onResume()

ListenerVM events

Waiting for user interaction?

Event sequence generation (Dynamic)

Click Long press

Sequence length bounded!

State Exploration

• State changes as the app continuous handles events (user events, system events etc.)

17/31

Event State

(Execution 1)

(Execution 2)

(Execution k)

… …

...

...

...

State Exploration

• State changes as the app continuous handles events (user events, system events etc.)

17/31

Event State

(Execution 1)

(Execution 2)

(Execution k)

… …

...

...

...

How to analyze sensory data utilization?Are they well utilized?

Page 10: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Sensory Data Tracking & Identification

18/31

Data enter app

Transformed and consumed

Data leave app

Data Lifecycle:

Sensory Data Tracking & Identification

18/31

Data enter app

Transformed and consumed

Data leave app

Data Lifecycle:

• Taint the mock sensory data

Taint source

Sensory Data tracking process:

Sensory Data Tracking & Identification

18/31

Data enter app

Transformed and consumed

Data leave app

Data Lifecycle:

• Taint the mock sensory data

Taint source

• Tracking and pinpointing sensory data

• Record sensory data usages

Taint propagation

Sensory Data tracking process:

Sensory Data Tracking & Identification

18/31

Data enter app

Transformed and consumed

Data leave app

Data Lifecycle:

• Taint the mock sensory data

Taint source

• Tracking and pinpointing sensory data

• Record sensory data usages

Taint propagation

• Terminate tainting

• Compute sensory data utilization

Taint sink

Sensory Data tracking process:

Page 11: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Taint Propagation Policy

19/31

Index Bytecode Instruction Taint Propagation Rule

1 Const-op C T(stack[0]) = Ø

2 Load-op index T(stack[0]) = T(localVarindex)

3 LoadArray-op arrayRef, index T(stack[0]) = T(arrayRef) ⋃ T(arrayRef [index])

4 Store-op index T(localVarindex) = T(stack’[0])

5 StoreArray-op arrayRef, index T(arrayRef [index]) = T(stack’[0])

6 Binary-op T(stack[0]) = T(stack’[0]) ⋃ T(stack’[1])

7 Unary-op T(stack[0]) = T(stack’[0])

8 GetField-op index T(stack[0]) = T(stack’[0].instanceField) ⋃ T(stack’[0])

9 GetStatic-op index T(stack[0]) = T(ClassName.staticField)

10 PutField-op index T(stack’[1].instanceField) = T(stack’[0])

1 PutStatic-op index T(ClassName.staticField) = T(stack’[0])

12 Return-op(non-void) T(callerStack[0]) = T(calleeStack’[0])

Example

20/31

float x = values[0];float y = values[1];float z = values[2];

float g = GRAVERTIY_EARTH;

float acc = (x*x + y*y + z*z) / (g*g);

Compute accelerationInput: accEvent from accelerometer

float[] values = accEevent.values;

Example

20/31

float x = values[0];float y = values[1];float z = values[2];

float g = GRAVERTIY_EARTH;

float acc = (x*x + y*y + z*z) / (g*g);

Compute accelerationInput: accEvent from accelerometer

float[] values = accEevent.values;Tainted Data

accEvent

Example

20/31

float x = values[0];float y = values[1];float z = values[2];

float g = GRAVERTIY_EARTH;

float acc = (x*x + y*y + z*z) / (g*g);

Compute accelerationInput: accEvent from accelerometer

float[] values = accEevent.values;Tainted Data

accEvent

values (Rule 8)

Field access

Page 12: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Example

20/31

float x = values[0];float y = values[1];float z = values[2];

float g = GRAVERTIY_EARTH;

float acc = (x*x + y*y + z*z) / (g*g);

Compute accelerationInput: accEvent from accelerometer

float[] values = accEevent.values;Tainted Data

accEvent

values (Rule 8)

x (Rule 3)

y (Rule 3)

z (Rule 3)

Array elementaccess

Example

20/31

float x = values[0];float y = values[1];float z = values[2];

float g = GRAVERTIY_EARTH;

float acc = (x*x + y*y + z*z) / (g*g);

Compute accelerationInput: accEvent from accelerometer

float[] values = accEevent.values;Tainted Data

accEvent

values (Rule 8)

x (Rule 3)

y (Rule 3)

z (Rule 3)

acc (Rule 6)

Arithmetic computation

Sensory data usage measurement

21/31

Usage Accumulationusage(s, d) = weight(i, s)× rel(i)i∈Instr(s,d )

Sensory data usage measurement

21/31

Usage Accumulationusage(s, d) = weight(i, s)× rel(i)i∈Instr(s,d )

State1 State2

State3

Osmdroid issue 53:

(Execution 1)

(Execution 2)

...

...

Page 13: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Sensory data usage measurement

22/31

dataProcess()

updateMap()

Location data dataProcess()

updateMap()

Location data

writeToDB()

State 2(map invisible) State 3

dataProcess()

updateMap()

Location data

State 1

1 2 (Execution 1)...

(Execution 2)3...

Sensory data usage measurement

22/31

+ndataProcess()

updateMap()

Location data dataProcess()

updateMap()

Location data

writeToDB()

State 2(map invisible) State 3

dataProcess()

updateMap()

Location data

State 1

1 2 (Execution 1)...

(Execution 2)3...

+n+n

Usage Comparison

23/31

Index Usage Utilization coefficient

State 1 n 0.5

State 2 0 0.0

State 3 2n 1

utilization _ coefficient(s, d) =usage(s, d)

Maxs '∈S,d '∈D (usage(s ', d '))

1 2 (Execution 1)...

(Execution 2)3...

Usage Comparison

23/31

Index Usage Utilization coefficient

State 1 n 0.5

State 2 0 0.0

State 3 2n 1

utilization _ coefficient(s, d) =usage(s, d)

Maxs '∈S,d '∈D (usage(s ', d '))

Report• Event sequence• Sensory data usage details

1 2 (Execution 1)...

(Execution 2)3...

Page 14: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Usage Comparison

23/31

Index Usage Utilization coefficient

State 1 n 0.5

State 2 0 0.0

State 3 2n 1

utilization _ coefficient(s, d) =usage(s, d)

Maxs '∈S,d '∈D (usage(s ', d '))

Report• Event sequence• Sensory data usage details

Missing/untimely sensor deactivation(detection via monitoring)

1 2 (Execution 1)...

(Execution 2)3...

Evaluation

• RQ1 (Effectiveness): Can GreenDroid effectively detect energy problems?

• RQ2 (Efficiency): How much overhead does GreenDroid incur? Is GreenDroid practical enough to handler real-world large subjects?

24/31

Subjects

25/31

ApplicationBasic Information

Revision No. Lines of code Downloads Availability

Osmdroid 750 18,091 10K—50K Google Play

Zmanim 322 4,893 10K—50K Google Play

Omnidroid 863 12,427 1K—5K Google Play

DroidAR 204 18,106 1K—5K Google Code

Recycle-locator 68 3,241 1K—5K Google Play

GPSLogger 15 659 1K—5K Google Code

Ushahidi 9d0aa75 10,186 5K—10K Google Play

Sofia PublicTransport Nav.

114 1,443 10K—50K Google Play

Geohash Droid V0.8.1-pre2 6,682 10K—50K Google Play

Effectiveness

26/31

Energy Problem Problem type New problem

OsmDroid issue 53 Sensory data underutilization No

Zmanim issue 50/56 Sensory data underutilization No

Sofia Public Transport Nav. issue 38 Sensory data underutilization No

Geohash Droid issue 24 Sensory data underutilization No

DroidAR issue 27 Missing sensor deactivation No

Recycle-Locator issue 33 Missing sensor deactivation No

Ushahidi issue 11 Missing sensor deactivation No

Omnidroid issue 179 Sensory data underutilization Yes

GPSLogger issue 7 Sensory data underutilization Yes

GreenDroid found nine real problems. Six are caused by poor sensorydata utilization. Three are caused by missing sensor deactivation.

Page 15: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Effectiveness

27/31

First seven problems were confirmed before our experiments. The Lasttwo were new problems found by GreenDroid (both confirmed).

Energy Problem Problem type New problem

OsmDroid issue 53 Sensory data underutilization No

Zmanim issue 50/56 Sensory data underutilization No

Sofia Public Transport Nav. issue 38 Sensory data underutilization No

Geohash Droid issue 24 Sensory data underutilization No

DroidAR issue 27 Missing sensor deactivation No

Recycle-Locator issue 33 Missing sensor deactivation No

Ushahidi issue 11 Missing sensor deactivation No

Omnidroid issue 179 Sensory data underutilization Yes

GPSLogger issue 7 Sensory data underutilization Yes

Effectiveness

27/31

“Completely true, Omnidroid does suck up way more energy than necessary.I'd be happy to accept a patch in this regard”. (Omnidroid issue 179)

Energy Problem Problem type

OsmDroid issue 53 Sensory data underutilization

Zmanim issue 50/56 Sensory data underutilization

Sofia Public Transport Nav. issue 38 Sensory data underutilization

Geohash Droid issue 24 Sensory data underutilization

DroidAR issue 27 Missing sensor deactivation

Recycle-Locator issue 33 Missing sensor deactivation

Ushahidi issue 11 Missing sensor deactivation

Omnidroid issue 179* Sensory data underutilization

GPSLogger issue 7* Sensory data underutilization

New bugs

found

Efficiency

28/31

ApplicationAnalysis Overhead

Time (seconds) Space (MB)

Osmdroid (18 KLOC) 151 591

Zmanim 110 205

Omnidroid (12 KLOC) 220 342

DroidAR (18 KLOC) 276 217

Recycle-locator 43 153

GPSLogger 35 149

Sofia Public Transport Nav. 17 204

Ushahidi 32 175

Geohash Droid 185 229

Large applications of 18KLOC can be explored in a few minutes. MemoryConsumption is well supported by modern PCs even without optimization.

Efficiency

Large subjects’ analysis overhead suggests that GreenDroid is practicalenough to handle real world Android applications.

ApplicationAnalysis Overhead

Time (seconds) Space (MB)

Osmdroid (18 KLOC) 151 591

Zmanim 110 205

Omnidroid (12 KLOC) 220 342

DroidAR (18 KLOC) 276 217

Recycle-locator 43 153

GPSLogger 35 149

Sofia Public Transport Nav. 17 204

Ushahidi 32 175

Geohash Droid 185 229

28/31

Page 16: GreenDroid: Diagnosis of Energy Inefficiency in …sei.pku.edu.cn/conference/ishcs/2013/greendroid-cheung.pdfGreenDroid: Diagnosis of Energy Inefficiency in Android Applications S.C

Discussion

• Patching GPSLogger– Invited to provide a patch

– Built the patch by following a real one (Geohash Droid issue 24)

– Patch accepted and released online.

• GreenDroid limitations– Complex inputs generation (e.g., password)

– Dynamic GUI updates (GUI models are extracted statically)

29/31

Future Work

• More energy problem patterns– Initial evidence: 16% energy problems was caused by network issues

(e.g., energy-inefficient data transmission)

• Integration to Android framework– Modify Dalvik VM for data utilization analysis

– On-device detection of energy problems

30/31

Conclusion

31/31

Thank you!