SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
ART JIT in Android N
Xueliang ZHONG
Linaro ART Team
linaro-art@linaro.org
1
ENGINEERS
AND DEVICES
WORKING
TOGETHER
Outline
● Android Runtime (ART) and the new challenges
● ART Implementation in Android N
● Tooling
● Performance Data & Findings
● Q & A
2
ENGINEERS AND DEVICES
WORKING TOGETHER
ART
● Android Runtime (ART)
● Performance Requirements for ART:
○ Run APPs smoothly.
○ Fast APP startup.
○ Fast APP installation.
○ With minimal overhead.
■ CPU, memory, storage, power, ...
Android APP
Android Framework
Native Lib
HAL
Linux Kernel
ART
3
ENGINEERS AND DEVICES
WORKING TOGETHER
Android KitKat Just-In-Time (JIT) Solution
JITINSTALL
Native
Code
● Dynamic compilation
APK
DEX
Code
START
APP
4
ENGINEERS AND DEVICES
WORKING TOGETHER
Android KitKat Just-In-Time (JIT) Solution
JITINSTALL
Native
Code
APK
DEX
Code
START
APP
Fast
Installation
Less Storage
Required
JIT compilation overhead
Runtime battery overhead
5
ENGINEERS AND DEVICES
WORKING TOGETHER
Android Marshmallow Ahead-Of-Time (AOT) Solution
● Static compilation
APK
INSTALL
(AOT)
Native
Code
START
APP
6
ENGINEERS AND DEVICES
WORKING TOGETHER
Android Marshmallow Ahead-Of-Time (AOT) Solution
APK
INSTALL
(AOT)
Native
Code
START
APP
Fast startup performanceMore Storage
Required
Slow
Installation
Fast runtime performance
Less runtime battery consumption
7
ENGINEERS AND DEVICES
WORKING TOGETHER
More Challenges for AOT Nowadays
APK
INSTALL
(AOT)
Native
Code
START
APP
● System
Update Time
● Storage
Consumption
● Dynamic APK
8
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Implementation in Android N
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
AOT
Native
Code
START
APP
PROFILE
Compilation
Daemon
Service
9
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Implementation in Android N
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
● JIT Phase
○ Fast installation
○ Fast system update time (OTA)
AOT
Native
Code
START
APP
Compilation
Daemon
Service
10
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Implementation in Android N
AOT
Native
Code
START
APP
Compilation
Daemon
Service
● Profile Guided AOT:
○ Fast startup and runtime performance
○ Lower overheads: CPU, storage, power ...
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
11
ENGINEERS AND DEVICES
WORKING TOGETHER
ART JIT - Implementation Overview
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
● JIT Runtime
● JIT Compiler
● Generates Profile File
12
ENGINEERS AND DEVICES
WORKING TOGETHER
ART JIT - Implementation Overview
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
● JIT Runtime
● JIT Compiler
● Generates Profile File
● Interpreter
○ Computed-goto based
○ Opcode handling in ARM assembly
● Profiling & Triggering JIT Compilation
○ Based on execution count and heuristics
○ ‘hotness_count’
● JIT Code Cache
○ Manages JITed Code
○ Allocating ‘ProfilingInfo’ for hot methods
13
ENGINEERS AND DEVICES
WORKING TOGETHER
ART JIT - Implementation Overview
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
● JIT Runtime
● JIT Compiler
● Generates Profile File
● Method granularity compilation
● Background compilation.
○ Avoid blocking APP thread (e.g. UI thread)
● Based on ART optimizing compiler.
○ Same compiler used for AOT compilation.
● JIT compilation enhancements in
optimizing compiler
14
ENGINEERS AND DEVICES
WORKING TOGETHER
ART JIT - Implementation Overview
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
● JIT Runtime
● JIT Compiler
● Generates Profile File● ProfileSaver thread
○ Reads ‘ProfilingInfo’ about hot methods
○ Writes such info to disk
● Minimize overhead
○ Wakeup frequency
○ Minimize things to write
15
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Idea of Hybrid Mode (JIT + AOT)
…..
…..
16
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Idea of Hybrid Mode (JIT + AOT)
○ Some users only use part of the APP. Only these
frequently used features (and code behind
them) are worth compiling into native code.
…..
…..
17
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Idea of Hybrid Mode (JIT + AOT)
○ Some users only use part of the APP. Only
frequently used features (and code behind
them) are worth compiling into native code.
○ Use JIT phase to find out the frequently used
code.
…..
…..
18
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Idea of Hybrid Mode (JIT + AOT)
○ Some users only use part of the APP. Only
frequently used features (and code behind
them) are worth compiling into native code.
○ Use JIT phase to find out the frequently used
code.
○ Use AOT compilation & optimization to speed up
frequent use cases.
…..
…..
19
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Idea of Hybrid Mode (JIT + AOT)
○ Some users only use part of the APP. Only
frequently used features (and code behind
them) are worth compiling into native code.
○ Use JIT phase to find out the frequently used
code.
○ Use AOT compilation & optimization to speed up
frequent use cases.
○ Avoid paying overheads (compilation, storage,
etc) to those less used codes.
…..
…..
20
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode - Overview
● Implementation
○ Generate Offline Profile During JIT
○ Offline Profile File Format
○ Enhanced AOT Compiler (dex2oat)
○ Compilation Daemon Service
…..
…..
21
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
base.apk
methods: 1,2,5
classes: 0,6,13
base.apk:classes2.dex
methods: 5,12,28
classes: 17,19,33
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
PROFILE
Offline Profile File
● Each APP has its own profile.
● Stored in APP local storage.
● Simple format.
● Analysis through profman tool.
22
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Compilation Daemon
○ Triggers AOT when the device is charging and idle.
○ ‘BackgroundDexOptService’
○ frameworks/base/services/core/java/com/android/server/pm/
…..
…..
AOT
Native
Code
Compilation
Daemon
Service
23
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
JITAPK INSTALL
DEX
Code
START
APP
Native
Code
PROFILE
Profile Guided AOT
● dex2oat enhanced to accept profile
● selective compilation based on profile
AOT
Native
Code
START
APP
Compilation
Daemon
Service
dex2oat32 I compiler_driver.cc Skipped method:void MyClass.<init>()
dex2oat32 I compiler_driver.cc Compiled method:int MyClass.foo(int)
dex2oat32 I compiler_driver.cc Compiled method:void MyClass.main()
dex2oat32 I compiler_driver.cc Skipped method:boolean MyClass.verify()
dex2oat32 I compiler_driver.cc Skipped method:void Class2.<init>()
24
ENGINEERS AND DEVICES
WORKING TOGETHER
ART Hybrid Mode
● Run in Hybrid Mode
○ All previous ‘hot’ methods are AOT compiled
○ JIT compiler is still loaded in memory
■ For unexplored features/codes.
■ May generate new profiles.
…..
…..
25
ENGINEERS AND DEVICES
WORKING TOGETHER
Tools
● TraceView (Android Studio / Android SDK)
26
ENGINEERS AND DEVICES
WORKING TOGETHER
Tools
● Systrace (Android Studio / Android SDK)
○ Enable 'dalvik' trace
○ Analyze JIT behaviors: JIT code cache, ProfilerSaver, GC, etc.
○ Helps to measure:
i. Invoke Time (1, 5, 6)
ii. JIT compilation time for each method (2, 3)
iii. JITed code execution (4)
27
ENGINEERS AND DEVICES
WORKING TOGETHER
Tools
● JIT Compiler Analysis
○ CFG dump
■ CFG file analysis:
○ Profiling JITed code
■ Support generating /tmp/perf-PID-maps for method level profiling with perf.
■ Profile AOT compiled code is prefered, for instruction level profiling.
○ Other useful JIT statistics & logs:
■ -verbose:compiler, -verbose:jit
■ -XX:DumpJITInfoOnShutdown
dalvikvm -Xusejit:true -Xcompiler-option --dump-cfg=jit.cfg -cp Main.dex Main
28
ENGINEERS AND DEVICES
WORKING TOGETHER
Tools
● Profile Guided AOT Analysis - profman
profman --profile-file=<filename> --dump-only
This command can dump the contents in the given prof file.
profman --generate-test-profile=<filename>
This command can generate a random profile file for testing.
runtime/jit/offline_profiling_info.cc
// Debug flag to ignore checksums when testing.
// Used to facilitate testing across a large number of apps.
static constexpr bool kDebugIgnoreChecksum = true;
compiler/driver/compiler_driver.cc
// Print additional info during profile guided compilation.
static constexpr bool kDebugProfileGuidedCompilation = true;
29
ENGINEERS AND DEVICES
WORKING TOGETHER
Performance & Findings
● A Popular News Reader APP
30
ENGINEERS AND DEVICES
WORKING TOGETHER
Performance & Findings
● A Popular News Reader APP
31
ENGINEERS AND DEVICES
WORKING TOGETHER
Performance & Findings
● Micro Benchmark Performance, AOT vs. JIT
32
ENGINEERS AND DEVICES
WORKING TOGETHER
More Talks & Resources
● Linaro-ART Team:
○ VIXL: A Programmatic Assembler and Disassembler for AArch32
○ Android Runtime Performance Analysis
● The Evolution of ART - Google I/O 2016
○ https://www.youtube.com/watch?v=fwMM6g7wpQ8
● Implementing ART Just-In-Time (JIT) Compiler
○ http://source.android.com/devices/tech/dalvik/jit-compiler.html
33
Thank You
#LAS16
For further information: www.linaro.org
LAS16 keynotes and videos on: connect.linaro.org
34
ENGINEERS AND DEVICES
WORKING TOGETHER
Backup
35
ENGINEERS AND DEVICES
WORKING TOGETHER
Performance & Findings - Example
● Micro Benchmarking – Running Unexpected Modes
void runAlgorithm(int iterations) {
for(i=0; i<iterations; i++) {
// long operations …
}
}
void main() {
int iterations = 20000;
int before = time();
runAlgorithm(iterations);
int after = time();
// …
}
36
ENGINEERS AND DEVICES
WORKING TOGETHER
Performance & Findings - Example
● JIT’s Advantage over AOT – Inlining
public class MyClass {
public /*private*/ /*final*/ /*static*/ int arithmeticSeries(int i)
{
if(i == 0)
return 0;
else
return i + arithmeticSeries(i - 1); // invoke-virtual
}
}
37
ENGINEERS AND DEVICES
WORKING TOGETHER
ART JIT - Workflow
38

Mais conteúdo relacionado

Mais procurados

LAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLinaro
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201Linaro
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLinaro
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLinaro
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 Linaro
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLinaro
 
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLinaro
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
 
LAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoSLAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoSLinaro
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLinaro
 
LAS16-305: Smart City Big Data Visualization on 96Boards
LAS16-305: Smart City Big Data Visualization on 96BoardsLAS16-305: Smart City Big Data Visualization on 96Boards
LAS16-305: Smart City Big Data Visualization on 96BoardsLinaro
 
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideBKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideLinaro
 
LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)Linaro
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLinaro
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!Linaro
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?Linaro
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingLinaro
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELinaro
 
LAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALinaro
 

Mais procurados (20)

LAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg development
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201
 
Las16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - statusLas16 309 - lua jit arm64 port - status
Las16 309 - lua jit arm64 port - status
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
 
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by HisiliconLAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
LAS16-310: Introducing the first 96Boards TV Platform: Poplar by Hisilicon
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
 
LAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoSLAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoS
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
 
LAS16-305: Smart City Big Data Visualization on 96Boards
LAS16-305: Smart City Big Data Visualization on 96BoardsLAS16-305: Smart City Big Data Visualization on 96Boards
LAS16-305: Smart City Big Data Visualization on 96Boards
 
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideBKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
 
LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)LAS16-400: Mini Conference 3 AOSP (Session 1)
LAS16-400: Mini Conference 3 AOSP (Session 1)
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?BKK16-213 Where's the Hardware?
BKK16-213 Where's the Hardware?
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance Testing
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEE
 
LAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVALAS16-507: LXC support in LAVA
LAS16-507: LXC support in LAVA
 

Destaque

Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)Niraj Solanke
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewLinaro
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK toolsHaribabu Nandyal Padmanaban
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for AndroidArslan Anwar
 
BKK16-306 ART ii
BKK16-306 ART iiBKK16-306 ART ii
BKK16-306 ART iiLinaro
 
GDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NGDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NImam Raza
 
Android Code Optimization Techniques 3
Android Code Optimization Techniques 3Android Code Optimization Techniques 3
Android Code Optimization Techniques 3Ishrat khan
 
Android Code Optimization Techniques
Android Code Optimization TechniquesAndroid Code Optimization Techniques
Android Code Optimization TechniquesIshrat khan
 
Compiler optimization
Compiler optimizationCompiler optimization
Compiler optimizationliu_ming50
 
Android Code Optimization Techniques 2
Android Code Optimization Techniques 2Android Code Optimization Techniques 2
Android Code Optimization Techniques 2Ishrat khan
 
iOS Developer Overview - DevWeek 2014
iOS Developer Overview - DevWeek 2014iOS Developer Overview - DevWeek 2014
iOS Developer Overview - DevWeek 2014Paul Ardeleanu
 
Tuning Android Applications (Part One)
Tuning Android Applications (Part One)Tuning Android Applications (Part One)
Tuning Android Applications (Part One)CommonsWare
 
Objective-C for Java developers
Objective-C for Java developersObjective-C for Java developers
Objective-C for Java developersFábio Bernardo
 
Android performance tuning. Memory.
Android performance tuning. Memory.Android performance tuning. Memory.
Android performance tuning. Memory.Sergii Kozyrev
 
Deep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile AppsDeep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile AppsDavide De Chiara
 

Destaque (20)

Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)
 
HKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overviewHKG15-300: Art's Quick Compiler: An unofficial overview
HKG15-300: Art's Quick Compiler: An unofficial overview
 
Introduction to ART (Android Runtime)
Introduction to ART (Android Runtime)Introduction to ART (Android Runtime)
Introduction to ART (Android Runtime)
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
iOS Application Testing
iOS Application TestingiOS Application Testing
iOS Application Testing
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for Android
 
BKK16-306 ART ii
BKK16-306 ART iiBKK16-306 ART ii
BKK16-306 ART ii
 
GDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NGDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android N
 
Android Code Optimization Techniques 3
Android Code Optimization Techniques 3Android Code Optimization Techniques 3
Android Code Optimization Techniques 3
 
Profile Guided Optimization
Profile Guided OptimizationProfile Guided Optimization
Profile Guided Optimization
 
C++ Optimization Tips
C++ Optimization TipsC++ Optimization Tips
C++ Optimization Tips
 
Android Code Optimization Techniques
Android Code Optimization TechniquesAndroid Code Optimization Techniques
Android Code Optimization Techniques
 
IoT
IoTIoT
IoT
 
Compiler optimization
Compiler optimizationCompiler optimization
Compiler optimization
 
Android Code Optimization Techniques 2
Android Code Optimization Techniques 2Android Code Optimization Techniques 2
Android Code Optimization Techniques 2
 
iOS Developer Overview - DevWeek 2014
iOS Developer Overview - DevWeek 2014iOS Developer Overview - DevWeek 2014
iOS Developer Overview - DevWeek 2014
 
Tuning Android Applications (Part One)
Tuning Android Applications (Part One)Tuning Android Applications (Part One)
Tuning Android Applications (Part One)
 
Objective-C for Java developers
Objective-C for Java developersObjective-C for Java developers
Objective-C for Java developers
 
Android performance tuning. Memory.
Android performance tuning. Memory.Android performance tuning. Memory.
Android performance tuning. Memory.
 
Deep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile AppsDeep Parameters Tuning for Android Mobile Apps
Deep Parameters Tuning for Android Mobile Apps
 

Semelhante a LAS16-201: ART JIT in Android N

Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UIOpersys inc.
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesMender.io
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Opersys inc.
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsXiaozhe Wang
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
AGDK tutorial step by step
AGDK tutorial step by stepAGDK tutorial step by step
AGDK tutorial step by stepJungsoo Nam
 
Investigation report on 64 bit support and some of new features in aosp master
Investigation report on 64 bit support and some of new features in aosp masterInvestigation report on 64 bit support and some of new features in aosp master
Investigation report on 64 bit support and some of new features in aosp masterhidenorly
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernelJohnson Chou
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsLinaro
 
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...Paris Open Source Summit
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabRon Munitz
 
Embedded platform choices
Embedded platform choicesEmbedded platform choices
Embedded platform choicesTavish Naruka
 
Dynamic Security Analysis & Static Security Analysis for Android Apps.
Dynamic Security Analysis & Static Security Analysis for Android Apps.Dynamic Security Analysis & Static Security Analysis for Android Apps.
Dynamic Security Analysis & Static Security Analysis for Android Apps.VodqaBLR
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and DevelopmentOpersys inc.
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 

Semelhante a LAS16-201: ART JIT in Android N (20)

Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Strategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and imagesStrategies for developing and deploying your embedded applications and images
Strategies for developing and deploying your embedded applications and images
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
AGDK tutorial step by step
AGDK tutorial step by stepAGDK tutorial step by step
AGDK tutorial step by step
 
Investigation report on 64 bit support and some of new features in aosp master
Investigation report on 64 bit support and some of new features in aosp masterInvestigation report on 64 bit support and some of new features in aosp master
Investigation report on 64 bit support and some of new features in aosp master
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernel
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
OWF12/PAUG Conf Days Android tools for developpeurs, paul marois, design and ...
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
Embedded platform choices
Embedded platform choicesEmbedded platform choices
Embedded platform choices
 
Dynamic Security Analysis & Static Security Analysis for Android Apps.
Dynamic Security Analysis & Static Security Analysis for Android Apps.Dynamic Security Analysis & Static Security Analysis for Android Apps.
Dynamic Security Analysis & Static Security Analysis for Android Apps.
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 

Mais de Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

Mais de Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Último

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

LAS16-201: ART JIT in Android N

  • 1. ART JIT in Android N Xueliang ZHONG Linaro ART Team linaro-art@linaro.org 1
  • 2. ENGINEERS AND DEVICES WORKING TOGETHER Outline ● Android Runtime (ART) and the new challenges ● ART Implementation in Android N ● Tooling ● Performance Data & Findings ● Q & A 2
  • 3. ENGINEERS AND DEVICES WORKING TOGETHER ART ● Android Runtime (ART) ● Performance Requirements for ART: ○ Run APPs smoothly. ○ Fast APP startup. ○ Fast APP installation. ○ With minimal overhead. ■ CPU, memory, storage, power, ... Android APP Android Framework Native Lib HAL Linux Kernel ART 3
  • 4. ENGINEERS AND DEVICES WORKING TOGETHER Android KitKat Just-In-Time (JIT) Solution JITINSTALL Native Code ● Dynamic compilation APK DEX Code START APP 4
  • 5. ENGINEERS AND DEVICES WORKING TOGETHER Android KitKat Just-In-Time (JIT) Solution JITINSTALL Native Code APK DEX Code START APP Fast Installation Less Storage Required JIT compilation overhead Runtime battery overhead 5
  • 6. ENGINEERS AND DEVICES WORKING TOGETHER Android Marshmallow Ahead-Of-Time (AOT) Solution ● Static compilation APK INSTALL (AOT) Native Code START APP 6
  • 7. ENGINEERS AND DEVICES WORKING TOGETHER Android Marshmallow Ahead-Of-Time (AOT) Solution APK INSTALL (AOT) Native Code START APP Fast startup performanceMore Storage Required Slow Installation Fast runtime performance Less runtime battery consumption 7
  • 8. ENGINEERS AND DEVICES WORKING TOGETHER More Challenges for AOT Nowadays APK INSTALL (AOT) Native Code START APP ● System Update Time ● Storage Consumption ● Dynamic APK 8
  • 9. ENGINEERS AND DEVICES WORKING TOGETHER ART Implementation in Android N JITAPK INSTALL DEX Code START APP Native Code AOT Native Code START APP PROFILE Compilation Daemon Service 9
  • 10. ENGINEERS AND DEVICES WORKING TOGETHER ART Implementation in Android N JITAPK INSTALL DEX Code START APP Native Code ● JIT Phase ○ Fast installation ○ Fast system update time (OTA) AOT Native Code START APP Compilation Daemon Service 10
  • 11. ENGINEERS AND DEVICES WORKING TOGETHER ART Implementation in Android N AOT Native Code START APP Compilation Daemon Service ● Profile Guided AOT: ○ Fast startup and runtime performance ○ Lower overheads: CPU, storage, power ... JITAPK INSTALL DEX Code START APP Native Code 11
  • 12. ENGINEERS AND DEVICES WORKING TOGETHER ART JIT - Implementation Overview JITAPK INSTALL DEX Code START APP Native Code ● JIT Runtime ● JIT Compiler ● Generates Profile File 12
  • 13. ENGINEERS AND DEVICES WORKING TOGETHER ART JIT - Implementation Overview JITAPK INSTALL DEX Code START APP Native Code ● JIT Runtime ● JIT Compiler ● Generates Profile File ● Interpreter ○ Computed-goto based ○ Opcode handling in ARM assembly ● Profiling & Triggering JIT Compilation ○ Based on execution count and heuristics ○ ‘hotness_count’ ● JIT Code Cache ○ Manages JITed Code ○ Allocating ‘ProfilingInfo’ for hot methods 13
  • 14. ENGINEERS AND DEVICES WORKING TOGETHER ART JIT - Implementation Overview JITAPK INSTALL DEX Code START APP Native Code ● JIT Runtime ● JIT Compiler ● Generates Profile File ● Method granularity compilation ● Background compilation. ○ Avoid blocking APP thread (e.g. UI thread) ● Based on ART optimizing compiler. ○ Same compiler used for AOT compilation. ● JIT compilation enhancements in optimizing compiler 14
  • 15. ENGINEERS AND DEVICES WORKING TOGETHER ART JIT - Implementation Overview JITAPK INSTALL DEX Code START APP Native Code ● JIT Runtime ● JIT Compiler ● Generates Profile File● ProfileSaver thread ○ Reads ‘ProfilingInfo’ about hot methods ○ Writes such info to disk ● Minimize overhead ○ Wakeup frequency ○ Minimize things to write 15
  • 16. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Idea of Hybrid Mode (JIT + AOT) ….. ….. 16
  • 17. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Idea of Hybrid Mode (JIT + AOT) ○ Some users only use part of the APP. Only these frequently used features (and code behind them) are worth compiling into native code. ….. ….. 17
  • 18. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Idea of Hybrid Mode (JIT + AOT) ○ Some users only use part of the APP. Only frequently used features (and code behind them) are worth compiling into native code. ○ Use JIT phase to find out the frequently used code. ….. ….. 18
  • 19. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Idea of Hybrid Mode (JIT + AOT) ○ Some users only use part of the APP. Only frequently used features (and code behind them) are worth compiling into native code. ○ Use JIT phase to find out the frequently used code. ○ Use AOT compilation & optimization to speed up frequent use cases. ….. ….. 19
  • 20. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Idea of Hybrid Mode (JIT + AOT) ○ Some users only use part of the APP. Only frequently used features (and code behind them) are worth compiling into native code. ○ Use JIT phase to find out the frequently used code. ○ Use AOT compilation & optimization to speed up frequent use cases. ○ Avoid paying overheads (compilation, storage, etc) to those less used codes. ….. ….. 20
  • 21. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode - Overview ● Implementation ○ Generate Offline Profile During JIT ○ Offline Profile File Format ○ Enhanced AOT Compiler (dex2oat) ○ Compilation Daemon Service ….. ….. 21
  • 22. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode base.apk methods: 1,2,5 classes: 0,6,13 base.apk:classes2.dex methods: 5,12,28 classes: 17,19,33 JITAPK INSTALL DEX Code START APP Native Code PROFILE Offline Profile File ● Each APP has its own profile. ● Stored in APP local storage. ● Simple format. ● Analysis through profman tool. 22
  • 23. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Compilation Daemon ○ Triggers AOT when the device is charging and idle. ○ ‘BackgroundDexOptService’ ○ frameworks/base/services/core/java/com/android/server/pm/ ….. ….. AOT Native Code Compilation Daemon Service 23
  • 24. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode JITAPK INSTALL DEX Code START APP Native Code PROFILE Profile Guided AOT ● dex2oat enhanced to accept profile ● selective compilation based on profile AOT Native Code START APP Compilation Daemon Service dex2oat32 I compiler_driver.cc Skipped method:void MyClass.<init>() dex2oat32 I compiler_driver.cc Compiled method:int MyClass.foo(int) dex2oat32 I compiler_driver.cc Compiled method:void MyClass.main() dex2oat32 I compiler_driver.cc Skipped method:boolean MyClass.verify() dex2oat32 I compiler_driver.cc Skipped method:void Class2.<init>() 24
  • 25. ENGINEERS AND DEVICES WORKING TOGETHER ART Hybrid Mode ● Run in Hybrid Mode ○ All previous ‘hot’ methods are AOT compiled ○ JIT compiler is still loaded in memory ■ For unexplored features/codes. ■ May generate new profiles. ….. ….. 25
  • 26. ENGINEERS AND DEVICES WORKING TOGETHER Tools ● TraceView (Android Studio / Android SDK) 26
  • 27. ENGINEERS AND DEVICES WORKING TOGETHER Tools ● Systrace (Android Studio / Android SDK) ○ Enable 'dalvik' trace ○ Analyze JIT behaviors: JIT code cache, ProfilerSaver, GC, etc. ○ Helps to measure: i. Invoke Time (1, 5, 6) ii. JIT compilation time for each method (2, 3) iii. JITed code execution (4) 27
  • 28. ENGINEERS AND DEVICES WORKING TOGETHER Tools ● JIT Compiler Analysis ○ CFG dump ■ CFG file analysis: ○ Profiling JITed code ■ Support generating /tmp/perf-PID-maps for method level profiling with perf. ■ Profile AOT compiled code is prefered, for instruction level profiling. ○ Other useful JIT statistics & logs: ■ -verbose:compiler, -verbose:jit ■ -XX:DumpJITInfoOnShutdown dalvikvm -Xusejit:true -Xcompiler-option --dump-cfg=jit.cfg -cp Main.dex Main 28
  • 29. ENGINEERS AND DEVICES WORKING TOGETHER Tools ● Profile Guided AOT Analysis - profman profman --profile-file=<filename> --dump-only This command can dump the contents in the given prof file. profman --generate-test-profile=<filename> This command can generate a random profile file for testing. runtime/jit/offline_profiling_info.cc // Debug flag to ignore checksums when testing. // Used to facilitate testing across a large number of apps. static constexpr bool kDebugIgnoreChecksum = true; compiler/driver/compiler_driver.cc // Print additional info during profile guided compilation. static constexpr bool kDebugProfileGuidedCompilation = true; 29
  • 30. ENGINEERS AND DEVICES WORKING TOGETHER Performance & Findings ● A Popular News Reader APP 30
  • 31. ENGINEERS AND DEVICES WORKING TOGETHER Performance & Findings ● A Popular News Reader APP 31
  • 32. ENGINEERS AND DEVICES WORKING TOGETHER Performance & Findings ● Micro Benchmark Performance, AOT vs. JIT 32
  • 33. ENGINEERS AND DEVICES WORKING TOGETHER More Talks & Resources ● Linaro-ART Team: ○ VIXL: A Programmatic Assembler and Disassembler for AArch32 ○ Android Runtime Performance Analysis ● The Evolution of ART - Google I/O 2016 ○ https://www.youtube.com/watch?v=fwMM6g7wpQ8 ● Implementing ART Just-In-Time (JIT) Compiler ○ http://source.android.com/devices/tech/dalvik/jit-compiler.html 33
  • 34. Thank You #LAS16 For further information: www.linaro.org LAS16 keynotes and videos on: connect.linaro.org 34
  • 35. ENGINEERS AND DEVICES WORKING TOGETHER Backup 35
  • 36. ENGINEERS AND DEVICES WORKING TOGETHER Performance & Findings - Example ● Micro Benchmarking – Running Unexpected Modes void runAlgorithm(int iterations) { for(i=0; i<iterations; i++) { // long operations … } } void main() { int iterations = 20000; int before = time(); runAlgorithm(iterations); int after = time(); // … } 36
  • 37. ENGINEERS AND DEVICES WORKING TOGETHER Performance & Findings - Example ● JIT’s Advantage over AOT – Inlining public class MyClass { public /*private*/ /*final*/ /*static*/ int arithmeticSeries(int i) { if(i == 0) return 0; else return i + arithmeticSeries(i - 1); // invoke-virtual } } 37
  • 38. ENGINEERS AND DEVICES WORKING TOGETHER ART JIT - Workflow 38