SEEDS: THE SOFTWARE ENGINEER'S ENERGY- OPTIMIZATION DECISION SUPPORT FRAMEWORK
University of Delaware
James Clause
SEEDS: THE SOFTWARE ENGINEER'S ENERGY- OPTIMIZATION DECISION - - PowerPoint PPT Presentation
The road to: SEEDS: THE SOFTWARE ENGINEER'S ENERGY- OPTIMIZATION DECISION SUPPORT FRAMEWORK James Clause University of Delaware Energy usage is an increasingly important concern REDUCING ENERGY USAGE Software Engineer Source Code
University of Delaware
James Clause
*University of Delaware, †Microsoft Research, ß IBM Research-Almaden, ΩABB Corporate Research, ∂Google, Inc.
Irene Manotas*, Chris0an Bird†, Rui Zhangß, David ShepherdΩ, Ciera Jaspan∂, Caitlin Sadowski∂, Lori Pollock*, and James Clause*
Data
Conduct Interviews Create/Distribute Surveys
Distribute 1500 Invitations Create 36 Question Survey 247 Respondents Interview Guide
18 Participants
Code & Analyze Interviews
14 Codes
3 Coders
Interview Transcripts Topical Concordance
454 Respondents 3860
Selective
Data
Conduct Interviews Create/Distribute Surveys
Distribute 1500 Invitations Create 36 Question Survey 247 Respondents Interview Guide
18 Participants
Code & Analyze Interviews
14 Codes
3 Coders
Interview Transcripts Topical Concordance
454 Respondents 3860
Selective
Data
Conduct Interviews Create/Distribute Surveys
Distribute 1500 Invitations Create 36 Question Survey 247 Respondents Interview Guide
18 Participants
Code & Analyze Interviews
14 Codes
3 Coders
Interview Transcripts Topical Concordance
454 Respondents 3860
Selective
Data
Conduct Interviews Create/Distribute Surveys
Distribute 1500 Invitations Create 36 Question Survey 247 Respondents Interview Guide
18 Participants
Code & Analyze Interviews
14 Codes
3 Coders
Interview Transcripts Topical Concordance
454 Respondents 3860
Selective
Data
Conduct Interviews Create/Distribute Surveys
Distribute 1500 Invitations Create 36 Question Survey 247 Respondents Interview Guide
18 Participants
Code & Analyze Interviews
14 Codes
3 Coders
Interview Transcripts Topical Concordance
454 Respondents 3860
Selective
62% 73% 64% 38% 60% 24% 14% 26% 43% 24% 15% 13% 11% 20% 16% My applications have requirements about energy usage. (S1) Data Center Embedded Traditional Mobile All
Response
Never Rarely Sometimes Often Almost Always
My applications have requirements about energy usage.
62% 73% 64% 38% 60% 24% 14% 26% 43% 24% 15% 13% 11% 20% 16% My applications have requirements about energy usage. (S1) Data Center Embedded Traditional Mobile All
Response
Never Rarely Sometimes Often Almost Always
My applications have requirements about energy usage.
62% 73% 64% 38% 60% 24% 14% 26% 43% 24% 15% 13% 11% 20% 16% My applications have requirements about energy usage. (S1) Data Center Embedded Traditional Mobile All
Response
Never Rarely Sometimes Often Almost Always
My applications have requirements about energy usage.
Prac;;oners care
20% 33% 47% I'm willing to sacrifice performance, usability, etc. for reduced energy usage. (S2)
Response
Never Rarely Sometimes Often Almost Always
Prac;;oners care
Prac;;oners care
Prac;;oners care, but they lack informa;on
Prac;;oners care
19% 30% 51% I have accurate intuitions about the energy usage of my code
Response
Strongly Disagree Disagree Undecided Agree Strongly Agree
, but they lack informa;on
Prac;;oners care, but they lack informa;on
Prac;;oners care, but they lack informa;on and tool support
Prac;;oners care
I could learn how to improve energy usage by:
1% 9% 10% 13% 86% 70% 69% 66% 13% 21% 21% 21% Reading documentation Looking at other code Talking to other developers Using tools
Response
Strongly Disagree Disagree Undecided Agree Strongly Agree
, but they lack informa;on and tool support
Prac;;oners care, but they lack informa;on and tool support
University of Delaware
Cagri Sahin, Philip Tornquist, Ryan McKenna, Zachary Pearson, and James Clause
Number of Pirates Past → Future
Number of Pirates Past → Future
Number of Pirates Past → Future
Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Users Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Users Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Users Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Users Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Developers Pirates Users Developers must balance protecting their applications and preserving battery power, but they lack the necessary information. Semantics-preserving transformations that make code more difficult for humans (pirates) to understand.
Post Processing 198 Subjects and 11 Applications 8850 Power Profiles (3.2 GB) Energy Usage Data Data Collection Obfuscated Application Creation 4 Obfuscators 5 Configurations 11 Applications 15 Usage Scenarios
Post Processing 198 Subjects and 11 Applications 8850 Power Profiles (3.2 GB) Energy Usage Data Data Collection Obfuscated Application Creation 4 Obfuscators 5 Configurations 11 Applications 15 Usage Scenarios
Obfuscated Application Creation
each application
Post Processing 198 Subjects and 11 Applications 8850 Power Profiles (3.2 GB) Energy Usage Data Data Collection Obfuscated Application Creation 4 Obfuscators 5 Configurations 11 Applications 15 Usage Scenarios
Obfuscated Application Creation
each application Data Collection
scenario
and original application
continuous execution time (over one week)
Post Processing 198 Subjects and 11 Applications 8850 Power Profiles (3.2 GB) Energy Usage Data Data Collection Obfuscated Application Creation 4 Obfuscators 5 Configurations 11 Applications 15 Usage Scenarios
Obfuscated Application Creation
each application Data Collection
scenario
and original application
continuous execution time (over one week) Post Processing
and after the execution
to energy usage data
measurement platform (EMP)
current sensing boards
voltage (V) drawn from battery and USB
%charge = E 3.8 V × 1000 2100 mA h × 3600 × 100
%charge = E 3.8 V × 1000 2100 mA h × 3600 × 100 tdrain = 100 % %charge × D
instead of the original versions.
%charge = E 3.8 V × 1000 2100 mA h × 3600 × 100 tdrain = 100 % %charge × D
Change in mean battery life when using an obfuscated version (wilcox, p ≤ 0.05)
When scenarios are run continually, draining the battery from full to empty, differences in battery life range from -16 minutes to +5 minutes.
all
rename cf se −3.4 −13.1 −2.8 −1.3 −1.8 1.7 −1.2 −2.2 −1.0 −2.2 −4.1 −3.6 −3.0 −8.0 −8.2 −6.4 −8.7 −6.6 −6.3 −6.0 −4.6 −8.8 −14.9 −5.6 −10.3 −1.3 1.5 2.4 −1.0 0.5 −0.2 −6.0 −6.5 −3.3 −5.8 0.8 −4.9 −4.8 1.4 2.8 −1.6 −2.0 0.5 −3.3 −13.8 2.1 2.1 1.5 −1.1 −1.3 −1.5 −2.9 −3.7 −0.5 −2.9 1.5 −6.6 −6.1 −4.2 −3.3 −9.8 −11.5 2.6 −11.7 −6.8 −6.3 −15.9 5.3 −11.2 −11.0 −7.2 −0.8 −1.9 −1.2 −0.5 0.6 0.3 −0.6 −5.8 −6.8 −6.5 −10.9 1.7 −1.8 −1.0 −1.1 −5.8 −4.1 −2.7 1.0 1.4 −2.1 −5.9 −11.6 −2.4 −11.6 −0.7 −2.4 −1.6 0.2 −4.6 −4.4 −6.4 −6.6 −4.7 −9.1 −9.5 −10.7 −9.4 −7.2 −6.7 −5.2 −6.0 −10.3 −11.4 −9.2 −8.2 −2.0 −0.3 −0.9 −0.1 −1.5 −5.8 −5.3 −9.7 1.4 1.1 −1.7 −0.9 −5.5 −1.5 −3.2 −3.2 1.6 1.2 −0.5 −0.6 −2.2 −10.9 −11.9 −1.2 1.5 −2.9 −1.5 −3.6 −5.9 −6.6 −6.5 −9.7 −9.9 −9.6 −4.7 −5.3 −8.9 −11.7 −9.4 −5.4 −1.1 −3.7 0.3 0.0 −6.2 −6.5 −9.1 1.5 −1.4 −6.4 −2.2 1.5 −0.5 1.7 −14.0 1.3 0.9 −2.7 −1.6 −3.5 −6.0 −6.4 −3.8 −8.9 −10.8 −9.5 −7.1 −7.3 −13.2 −11.5 −16.3 −5.6 −0.6 −0.3 −6.7 −5.7 −10.5 1.3 −5.3 −2.1 −1.6 −0.8 −1.9 Tomdroid SkyMap: Move Zoom SkyMap: Find Mars OpenSudoku OIFileManager Nim FrozenBubblePlus DailyMoney: View Lists DailyMoney: Add Detail Clock: Timer Clock: Stopwatch Calendar Calculator AnkiDroid: Tutorial Deck AnkiDroid: New Deck Allatori DashO Proguard ZKM Allatori DashO Proguard ZKM Allatori DashO Proguard ZKM Allatori DashO ZKM Allatori DashO ZKM
Obfuscation Tool Usage Scenario
−15 −10 −5 5
Change in mean battery life (min)
Irene Manotas, Lori Pollock and James Clause
University of Delaware
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Hundreds of possibilities for each choice
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Choose the most energy efficient implementation?
Collection x = new ??
LinkedHashSet TreeSet HashSet EnumSet CopyOnWriteArraySet ... ~ 40
JCF
UnifiedSet UnifiedMap SetAdapter MultiReaderFastList InmutableUnifiedMap ... ~ 40 FastSet FastBitSet LocalMap FastMap FastList ... ~ 10 ... CharArraySet ObjectArraySet ObjectAVLTreeSet OpenObjHashBigSet ObjectRBTreeSet ~ 700
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
SEEDS_api supports the selection of Library implementations to optimize the energy usage of a Java applications.
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
Select Solution
SEEDS_api supports the selection of Library implementations to optimize the energy usage of a Java applications.
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
Transform Application Select Solution
SEEDS_api supports the selection of Library implementations to optimize the energy usage of a Java applications.
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
Profile Energy Usage Transform Application Select Solution
SEEDS_api supports the selection of Library implementations to optimize the energy usage of a Java applications.
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
Profile Energy Usage Transform Application Select Solution
SEEDS_api supports the selection of Library implementations to optimize the energy usage of a Java applications.
Application % Improvement Barbecue 17 Jdepend 6 Apache-xml-security 5 JodaTime 9 Commons-lang 13 Commons-beanutils — Commons-cli 2
Define Application- Specific Search Space
Application Code Potential Changes Optimization Parameters Context Information Energy Optimized Application Optimization Results
Search
Application % Improvement Barbecue 17 18 JodaTime 9 9 Commons-cli 2 3