App Insight Mobile App Performance Monitoring In The
App. Insight: Mobile App Performance Monitoring In The Wild Lenin Ravindranath, Jitu Padhye, Sharad Agarwal, Ratul Mahajan, Ian Obermiller, Shahin Shayandeh Microsoft Research Mobile App Ecosystem Ø > 1 Million Apps Ø Variety of developers • Hobbyists to professionals • Attractive revenue model Ø Highly competitive Ø Poor app performance affects revenue Highlight code path to optimize Transaction Web Request Callback Web request callback Processing Download Delay void btn. Fetch_Click(object obj, Routed. Event. Args e) { var req = Web. Request. Create(url); req. Begin. Get. Response(req. Callback, null) } void req. Callback(IAsync. Result result) { UIDispatcher. Begin. Invoke(update. UI) } void update. UI() { /* Update UI */ } Ø Manual instrumentation is hard Ø Limited resources for profiling UI Dispatch GPS fix callback Background Thread UI Event Handler Start UI Event Handler End User Manipulation UI update User Perceived Latency Thread Blocked UI Thread Event Handler Thread Wakeup Start GPS UI update User Manipulation Feedback App Developer Instrumenter Metadata Analysis Server App Ø Highly asynchronous programming pattern Fire Start 2 web requests UI Dispatch Web Request Call Instrumented Performance Monitoring is challenging Web request callback Background Thread UI Thread Ø Failures and poor performance common Ø Diverse environments • Wi-Fi, 3 G, LTE, GPS signal quality • 100 s of phone models Ø Hard to emulate in the lab Ø Major app stores provide crash reports • Thread stack and exception Fire Background Thread In the wild monitoring important Critical Path Analysis Logs Downloads Instrumentation q Track UI Manipulation q Capture Thread Execution q Link Asynchronous Calls to Callbacks q Log Thread Sync Calls q Track UI updates q Log Unhandled exception q Track Parameters Performance Analysis Ø Identify transactions with poor latency • Highlight to the developer Ø Clustering analysis • Analyse across sessions and users Ø Find anomalies in performance Exception Path App Store/Marketplace Crash reports with more context Extremely low overhead 0. 5% overhead Zero developer effort Completely automatic No source code required Binary instrumentation Readily Deployable No changes to OS or runtime Works with ALL apps Windows marketplace Improving app performance Through developer feedback parse. XML() Background Thread . . . Exception at parse. URL() request. Callback() search. Async() 3 G Thread. Start() http: //. . . Web. Request btn. Search () UI Thread. Start()
- Slides: 1