Dynamic Management of HTTP Connections via Binary Rewriting
ameijer at cs.duke.edu
||Tuesday, November 29, 2016
||2:00pm - 3:00pm
||D344 LSRC, Duke
As mobile applications (apps) become more and more ubiquitous, the marketplace for these apps has become much more crowded. Developers are constantly seeking ways to improve the quality and performance of their apps in order to remain competitive. A key part of contemporary mobile app development is the collection of metrics and performance data of deployed applications; this data is used by the app developer for troubleshooting and performance improvements. We present the design and implementation of a system, CowboyHat, that utilizes a binary rewriter to instrument Android applications. CowboyHat builds call graphs originating from key app events, such as lifecycle framework calls or UI manipulations. These graphs describe the relationships between low level actions, such as networking calls, and the high level events that originate them. They capture the sequence of events triggered by an action across multiple app components, both synchronous and asynchronous, and can be propagated across network boundaries to the app's backend. We demonstrate this capability on a prototype system by tracing cloud resource utilization of an app backend to a specific user action within the app. We also present an implementation where CowboyHat is used to improve app UI performance by dynamically adjusting HTTP/2 stream priorities based on the call graphs of HTTP/2 network requests.
Advisor(s): Landon Cox
Committee: Jeffrey Chase, Theo Benson