Sun 4 Nov 2018 11:40 - 12:00 at Stuart - I Chair(s): Mark Marron

User-level tooling support for profiling Java applications executing on modern JVMs for desktop and server is quite mature – from Open JDK’s Java Flight Recorder enabling low-overhead CPU and heap profiling, through third-party async profilers (e.g. async-profiler, honest-profiler), to Open JDK’s support for low-overhead tracking of allocation call sites.

On the other hand, despite architectural similarities between language execution environments, tooling support for analyzing performance of Java code on Android lags significantly behind. Arguably the most popular, but also virtually the only, tool in this category is Android Profiler which provides process-level information about CPU, Java heap and network activities. It also provides support for method tracing and sampling. However, the former exhibits high overhead and the latter, while providing better performance, but sacrifices precision. Information provided by Android Profiler can be augmented with data collected by other tools, particularly systrace which collects data at the operating system level. Unsurprisingly, third-party tools have also started emerging recently, such as Facebook’s Profilo framework. However, using these additional tools requires working with multiple tool-chains, may require a certain amount of manual effort (e.g., building application in a special way, inserting profiling framework API calls into the application), and it is often non-trivial to infer interesting information from the data being collected (e.g. because only part of the tooling framework is publicly available).

In this paper we describe our work on Nanoscope, an open source extensible tool for Android that not only works on unmodified applications and provides precise method traces with low overhead, but also aims to present programmers with selected relevant information within the same framework to help them develop an intuition behind a concrete non-performant application behavior. The tradeoff here is that Nanoscope requires a custom Android build as it relies on additional support from ART. In the paper, we will describe Nanoscope’s design and implementation, present examples of performance-related information that can be obtained from the tool, and discuss Nanoscope-related overheads.

Sun 4 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

10:30 - 12:00
IVMIL at Stuart
Chair(s): Mark Marron Microsoft Research
10:30
25m
Research paper
Efficient VM-independent Runtime Checks for Parallel Programming
VMIL
Michael Faes ETH Zurich, Thomas Gross ETH Zurich
DOI Pre-print
10:55
25m
Research paper
Using Compiler Snippets to Exploit Parallelism on Heterogeneous Hardware: A Java Reduction Case Study
VMIL
Juan Fumero The University of Manchester, Christos Kotselidis The University of Manchester
DOI Pre-print
11:20
20m
Talk
Generating a Minimum JavaScript VM Specialised for Target Applications
VMIL
Tomoharu Ugawa Kochi University of Technology, Japan, Hideya Iwasaki University of Electro-Communications, Japan
11:40
20m
Talk
Profiling Android Applications with Nanoscope
VMIL
Lun Liu University of California at Los Angeles, USA, Leland Takamine Uber Technologies, Adam Welc Uber Technologies
Pre-print