doug sillars on app optimization

48
Test Your Mobile Applications Performance with AT&Ts Application Resource Optimizer Doug Sillars, PhD Application Optimization Guru Developer Advocacy, AT&T @dougsillars

Upload: wipjam

Post on 30-Oct-2014

424 views

Category:

Technology


0 download

DESCRIPTION

Doug Sillars' from AT&T talks about App Optimization and what AT&T is doing with ARO to make apps faster at AnDevCon Boston

TRANSCRIPT

Page 1: Doug Sillars on App Optimization

Test Your Mobile Application’s Performance with AT&T’s Application Resource Optimizer

Doug Sillars, PhD Application Optimization Guru Developer Advocacy, AT&T @dougsillars

Page 2: Doug Sillars on App Optimization

How Fast is Your App?

Page 3: Doug Sillars on App Optimization

How Fast is Your App?

Page 4: Doug Sillars on App Optimization

How Fast is Your App?

“Zombies appear to be incapable of running. The fastest have been observed to move at a rate of barely one step per 1.5 seconds.”

– Max Brooks, Zombie Survival Guide

Page 5: Doug Sillars on App Optimization

How Important is Speed Anyway? Traditional Web (PC) Stats: • Yahoo! 400ms delay leads to 5-9% drop in traffic (1)

• 1 second of latency (2)

–  Customer satisfaction drops 16% –  Conversion to sales drops 7%

• 10 Golden Principles of Successful Web Apps: –  “Speed is always the most important feature” (3)

Sillars’ Corollary: If speed is important on the web, it follows that speed is even more important for mobile • 71 % of users expect mobile sites to be as fast as desktop (4)

(1) slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications (2) http://econsultancy.com/us/blog/10195-the-need-for-online-speed-in-america (3) 10 Golden Principles Of Successful Web Apps http://www.businessinsider.com/10-golden-principles-successful-web-apps-2010-3 (4) http://econsultancy.com/us/blog/9162-the-importance-of-speed-for-mobile-commerce

Page 6: Doug Sillars on App Optimization

What Do Mobile Users Expect? High Performance Apps •  Speed

–  64% of mobile users expect pages/apps to load in <4 seconds (1)

•  Battery Life –  Better Battery life (6.1 satisfied of 10) !!! (2)

–  72% rate phone as very good or excellent •  Only 21% rate battery life as very good or excellent (3)

•  Reasonable data usage –  No one wants to hit their cap

(1) http://www.keynote.com/docs/reports/Keynote-2012-Mobile-User-Survey.pdf (2) http://www.businessnewsdaily.com/2200-smartphone-customer-satisfaction-battery-life.html (3) Personal communication from Swiftkey study

Page 7: Doug Sillars on App Optimization

What Do Mobile Users Get?

Our Customers Expect More!!!!

• Top Mobile frustrations “web page slow to load” (1)

• Battery life top reported problem (2)

(1) http://www.keynote.com/docs/reports/Keynote-2012-Mobile-User-Survey.pdf (2) http://www.businessnewsdaily.com/2200-smartphone-customer-satisfaction-battery-life.html

Page 8: Doug Sillars on App Optimization

As a Developer, What Can I Do? • Learn How Mobile is Different • Optimize:

–  Learn the best practices –  Test your application –  Fix issues before your customers discover them

• Get ahead of the game – be ready for industry standards and grading systems

It can’t be MY developers, they’re the best • AT&T’s Application Resource Optimizer (ARO)

–  http://Developer.att.com/ARO –  In 2012, <2% of tested apps required no optimization

Page 9: Doug Sillars on App Optimization

How is Mobile Different?

Internet

IP applications

Mobile applications

Wireless State

Machine

Mobile apps often do not consider the uniqueness of the wireless network

Optimized mobile applications improve user experience with improved battery life and perceived faster speed

Page 10: Doug Sillars on App Optimization

Data Transfer

LTE RRC State Machine

Timer Expiration

Radio Off Radio On

IDLE

Continuous Reception

Tail For AT&T’s Model: T1 = 100ms T2 = 20ms T3 = 10,00ms

100ms

10s

Page 11: Doug Sillars on App Optimization

Data Transfer

LTE RRC State Machine

Timer Expiration

Radio Off Radio On

IDLE

Continuous Reception

Tail

• LTE has higher throughput than 3G • This does not improve application behaviour

-  The higher power actually accentuates any issues your application might have!

100ms

10s

Page 12: Doug Sillars on App Optimization

It’s All Connected Application traffic triggers RRC State transitions: •  RRC State transitions control

Page 13: Doug Sillars on App Optimization

It’s All Connected Application traffic triggers RRC State transitions: •  RRC State transitions control

–  Speed/User Experience

Page 14: Doug Sillars on App Optimization

It’s All Connected Application traffic triggers RRC State transitions: •  RRC State transitions control

–  Speed/User Experience

–  Device battery life

Page 15: Doug Sillars on App Optimization

It’s All Connected Application traffic triggers RRC State transitions: •  RRC State transitions control

–  Speed/User Experience

–  Device battery life

–  Network efficiency

Page 16: Doug Sillars on App Optimization

AT&T Application Resource Optimizer • Free diagnostic tool • Open Source • Test any Platform • Emulate any carrier network • Analysis of both Native Apps and the Mobile Web • Winner of the 2013 GSMA Smartphone Application Challenge award at MWC

Allows YOU as a developer to SEE exactly how data is flowing from your app!

Page 17: Doug Sillars on App Optimization

What Platforms Can I Test With? All of them!

• All Platforms: Pcap/tcpdump network trace •  Ex: Wi-Fi Hotspot (like Connectify) and Wireshark/NetMon to collect

•  iOS: Remote Virtual Interface uses Instruments to collect pcap over 3G/LTE • Android and Windows 8: Native Collector

•  Note: Android collector requires root

Page 18: Doug Sillars on App Optimization

How Does ARO Work?

Transfer Trace Files Process Trace Test Your Application

• PCAP only: •  Network traffic collected

• Native Collector adds: •  Video •  User Input •  Peripheral Usage •  CPU usage

• Applies Radio and Power models to data

• Graded against 15 Best Practices • Learn how your application

ACTUALLY behaves!

Page 19: Doug Sillars on App Optimization

Everyone Wins With ARO

•  Faster Response Times

•  Improved Battery Life •  Efficient Data Plan Usage •  Enriched User Experience

End User

•  App-specific Analysis

•  Key Areas to Improve

•  Cross Platform and Network Agnostic

•  Free and Open Source

Developer

•  Increased Network Availability

•  Signaling Load Reduction

•  Efficient Spectrum Usage

•  Improved Radio Availability

Wireless Carrier

Page 20: Doug Sillars on App Optimization

What’s the Industry Doing? • Quality App Directory - App Quality Alliance (AQuA)

(http://www.appqualityalliance.org/)

• Smarter App Challenge – GSMA (http://mobileappchallenge.com/smarterapp/)

• Mobile Content Action Team – CTIA (http://www.ctia.org/business_resources/wic/index.cfm/AID/10333)

• Other carriers

• All are using ARO!! (http://developer.att.com/ARO) • Numerous Customer facing apps help customers preserve battery and reduce data usage

Get ahead of the game: Optimize NOW!

Page 21: Doug Sillars on App Optimization

So, How Does ARO Make My App Faster?

ARO is the test kit to identify areas where performance improvements exist

Simple, common sense development best practices

– Reducing connection times – Caching files – Eliminating Errors

The fixes identified by ARO will tune your application to higher performance and speed

Page 22: Doug Sillars on App Optimization

From Zombie to Sprinter in 3 Easy Steps

1. Close Connections

2. Cache Your Data

3. Manage Every Connection

Page 23: Doug Sillars on App Optimization

From Zombie to Sprinter in 3 Easy Steps

1. Close Connections

2. Cache Your Data

3. Manage Every Connection

Page 24: Doug Sillars on App Optimization

Closing Connections? How Does That Help?

>80% of applications do NOT close

connections when they are finished!

Page 25: Doug Sillars on App Optimization

Closing Connections: Example

38% more power on LTE! (18% more power on 3G)

Page 26: Doug Sillars on App Optimization

Closing Connections: CODE MultiRes Sample app from Android SDK

– Modified to download images HttpURLConnection getimagecloseconn = (HttpURLConnection) urln.openConnection(); getimagecloseconn.setRequestProperty("connection", "close"); getimagecloseconn.connect(); String cachecontrol = getimagecloseconn.getHeaderField("Cache-Control"); InputStream isclose = getimagecloseconn.getInputStream(); bitmap = BitmapFactory.decodeStream(isclose); getimagecloseconn.disconnect();

https://github.com/attdevsupport/ARO/tree/master/2013DevSummitTurbocharge

Page 27: Doug Sillars on App Optimization

From Zombie to Sprinter in 3 Easy Steps

1. Close Connections

2. Cache Your Data

3. Manage Every Connection

Page 28: Doug Sillars on App Optimization

Caching Your Data 17% of all mobile traffic is duplicate download of

the same unaltered HTTP content (1)

“It’s just a 6 KB logo”

– 6 KB * 3 DL/session *10,000 users/day = 3.4GB/month

Reading from local cache is 75-99% faster than downloading

from the web

(1)“Web Caching on Smartphones: Ideal vs. Reality”, http://www.research.att.com/~sen/pub/Caching_mobisys12.pdf

Page 29: Doug Sillars on App Optimization

Even if caching IS supported – it is OFF by default!!

Caching Support by Library

Android Connection Libraries iOS Libraries Android & Safari

Test Name UC HUC HC WV HRC T20 NSUR ASIHR AB SB

Basic caching � � � � � � �

Revalidation � � � � � � � � � �

Non-caching directives � � � � � � � » � �

Expiration directives � � � � � � � � � �

URL with query string � � � � � � � � � �

Partial caching � � � � � � � � � �

Redirection � � � � � � �

Page 30: Doug Sillars on App Optimization

Caching Methods (How do I do it?) ETags

Cache Control Headers

• Each file has a Unique Tag • Revalidated on server for each request

– High Performance Web Sites: Rule 1 – Make Fewer HTTP Requests (1)

– Adding a connection drains battery, adds 500-3,000 ms latency

• Important to carefully assign Max-Age times • App will not check file on server until Max-Age is reached – Retrieval is strictly file processing time

(1) http://developer.yahoo.com/blogs/ydn/posts/2007/04/rule_1_make_few/

Page 31: Doug Sillars on App Optimization

Comparing ETag vs. Cache Control

Network Usage Battery Drain Data Usage Speed

NO Cache YES entire file downloaded

Full network connection made High Slowest

ETag Yes – ETag in cache is validated on server

Full network connection Low Slow

Cache Control No N/A N/A Fast

Any Caching is better than no caching, but for mobile, Cache Control is preferred

Page 32: Doug Sillars on App Optimization

Caching: Worth the Effort?

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //establish a cache try { File httpCacheDir = new File(getCacheDir(), "http"); long httpCacheSize = 10 * 1024 * 1024; // 10 MiB HttpResponseCache.install(httpCacheDir, httpCacheSize); //

} catch (IOException e) { Log.i(TAG, "HTTP response cache installation failed:" + e); }

Add this!

Android 4.0:

Don’t leave older devices in the cold: Consider adding reflection for older versions of Android

http://developer.android.com/reference/android/net/http/HttpResponseCache.html

Page 33: Doug Sillars on App Optimization

Caching Performance

File still valid in cache

Radio never turns on

100% less power!

MultiRes sample app – modified to add caching

98% faster!

Page 34: Doug Sillars on App Optimization

Caching Performance

File in cache has expired, revalidate at server

If radio has gone back to IDLE, this can take 2.5s

LTE: 14% less power!

MultiRes sample app – modified to add caching

3G: 30% less power!

30% faster!

89% faster!

Page 35: Doug Sillars on App Optimization

From Zombie to Sprinter in 3 Easy Steps

1. Close Connections

2. Cache Your Data

3. Manage Every Connection

Page 36: Doug Sillars on App Optimization

Grouping Connections

38J of energy used!!

Imagine an app that: 1. Downloads an image every 60s 2. Downloads an Ad every 60s 3. Sends Analytics to a Server every 60s

Page 37: Doug Sillars on App Optimization

Grouping Connections

16J of energy used!! 58% savings!

Now, look what happens if your connections are grouped together 1. Downloads an image every 60s 2. Downloads an Ad every 60s 3. Sends Analytics to a Server every 60s

16J of energy used!! 58% less energy

Page 38: Doug Sillars on App Optimization

How Do I Group Connections if (Tel.getDataActivity() >0){ if (Tel.getDataActivity() <4){ //ok, we are passed the minimum time to check

//and we found network activity- //download the image here using image getter

imagegetter(counter, numberofimages);

//and show the ad AdRequest adRequest = new AdRequest(); adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

adView.loadAd(adRequest); // Initiate a generic request to load it with an ad

adView.loadAd(new AdRequest());

Page 39: Doug Sillars on App Optimization

Grouping Connections for Speed Not only can you save battery, but you can speed up your

application by managing connections properly: Threading file downloads vs. serial download Removing redirects to files Pre-fetching files that are used often

Page 40: Doug Sillars on App Optimization

Grouping Connections for Speed Threading file downloads vs. serial download

Page 41: Doug Sillars on App Optimization

Grouping Connections for Speed Not only can you save battery, but you can speed up your

application by managing connections properly: Removing redirects to files

Redirection adds ~2-3 seconds for each request

{ 2 sec

Page 42: Doug Sillars on App Optimization

Grouping Connections for Speed Not only can you save battery, but you can speed up your

application by managing connections properly: Pre-fetching files that are used often

Page 43: Doug Sillars on App Optimization

More Best Practices Look for error codes: no 4xx 5xx

HTTP response codes should occur:

Page 44: Doug Sillars on App Optimization

More Best Practices Look for error codes: 404s

Error messages should be short and sweet

Page 45: Doug Sillars on App Optimization

Ad Download every 30s

More Best Practices: Periodic Connections

Regular 3 minute Polls for updates (20% battery/day)

Page 46: Doug Sillars on App Optimization

Summary • Our customers expect high performance

• App performance optimizations are easy… Once you know the issues

• Best Practices: –  Close Connections

–  Cache Data

–  Group Connections

• Fewer connections • Threaded Connections • No redirects • 4XX HTTP response codes • Periodic Connections

Page 47: Doug Sillars on App Optimization

everyone wins with ARO

Page 48: Doug Sillars on App Optimization

Developer.att.com/ARO [email protected] @dougsillars

thank you!