mobile measurements: the mobile app OS · PDF filemobile measurements: the mobile app / OS...

Post on 20-Mar-2018

219 views 2 download

Transcript of mobile measurements: the mobile app OS · PDF filemobile measurements: the mobile app / OS...

mobile measurements:the mobile app / OS perspective

Why understanding mobile app performance is hard 

cellular performance matters to some apps

•most demanding apps• multiplayer gaming• VoIP• video chat

• somewhat demanding• web search• app interfaces with web services

• reasonably irrelevant• network transfers that aren’t in the critical path

26.March.2014 sharad.agarwal@microsoft.com 2

app development environment

26.March.2014 sharad.agarwal@microsoft.com 3

Start screen icons

26.March.2014 sharad.agarwal@microsoft.com 4

The Weather Channel

26.March.2014 sharad.agarwal@microsoft.com 5

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 6

MittRating

MittRating

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 7

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 8

Internet

Mitt Romney

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 9

Internet

“Mitt Romney might vote for Obama as well”

“We recommend Mitt Romney for president”

“I would definitely trustMitt Romney with my money.”

“If I had a nickel for every  time Mitt Romney said something stupid I'd be in his tax bracket”

Mitt Romney

MittRating

MittRating

Tweets

26.March.2014 sharad.agarwal@microsoft.com 10

Internet

“Mitt Romney might vote for Obama as well”

“We recommend Mitt Romney for president”

“I would definitely trustMitt Romney with my money.”

“If I had a nickel for every  time Mitt Romney said something stupid I'd be in his tax bracket”

Mitt Romney

MittRating

MittRating

Tweets

26.March.2014 sharad.agarwal@microsoft.com 11

Internet

53%

“Mitt Romney might vote for Obama as well”

“We recommend Mitt Romney for president”

“I would definitely trustMitt Romney with my money.”

“If I had a nickel for every  time Mitt Romney said something stupid I'd be in his tax bracket”

Mitt Romney

MittRating

MittRating

Tweets

26.March.2014 sharad.agarwal@microsoft.com 12

  

   

 

    

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 13

ClickHandler() {

   

}

    

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 14

ClickHandler() {

tweets = HttpGet(url);

 

}

    

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 15

ClickHandler() {

tweets = HttpGet(url);rating = ProcessTweets(tweets);

}

ProcessTweets(tweets){

...}

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 16

ClickHandler() {

tweets = HttpGet(url);rating = ProcessTweets(tweets);display.Text = rating;

}

ProcessTweets(tweets){

...}

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 17

ClickHandler() {

tweets = HttpGet(url);rating = ProcessTweets(tweets);display.Text = rating;

}

ProcessTweets(tweets){

...}

Click HandlerStart

Click HandlerEnd

Thread

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 18

ClickHandler() {

tweets = HttpGet(url);rating = ProcessTweets(tweets);display.Text = rating;

}

ProcessTweets(tweets){

...}

Click HandlerStart

Click HandlerEnd

Thread

User Perceived Delay

53%

MittRating

MittRating

Hypothetical Synchronous Code

26.March.2014 sharad.agarwal@microsoft.com 19

MittRating

MittRating

53%

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 20

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...}

MittRating

MittRating

53%

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 21

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...} UI Thread

ClickHandlerEndClickHandler

Start

MittRating

MittRating

53%

User Click

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 22

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...} UI Thread

ClickHandlerEndClickHandler

Start

MittRating

MittRating

System

Async Get Call

53%

User Click

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 23

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...} UI Thread

Background Thread

ClickHandlerEndClickHandler

Start

MittRating

MittRating

System

Async Get Call

ProcessTweets

DownloadCallback

53%

User Click

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 24

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...} UI Thread

Background ThreadUI Dispatch

ClickHandlerEndClickHandler

Start

MittRating

MittRating

System

Async Get Call

ProcessTweets

DownloadCallback

53%

User Click

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 25

ClickHandler() {

AsyncHttpGet(url, DownloadCallback);}DownloadCallback(tweets) {

rating = ProcessTweets(tweets);UIDispatch(DisplayRating, rating);

}DisplayRating(rating){

display.Text = rating;}ProcessTweets(tweets){

...}

DisplayRating

UI Thread

Background ThreadUI Dispatch

ClickHandlerEndClickHandler

Start

MittRating

MittRating

System

Async Get Call

ProcessTweets

DownloadCallback

53%

User Click

Asynchronous Code

26.March.2014 sharad.agarwal@microsoft.com 26

Apps are highly asynchronous

30 popular apps167,000 transactions from user study

26.March.2014 sharad.agarwal@microsoft.com 27

Apps are highly asynchronous

30 popular apps167,000 transactions from user study

• On average, 19 asynchronous calls per user transaction• On average, 8 parallel threads per user transaction

26.March.2014 sharad.agarwal@microsoft.com 28

Apps are highly asynchronous

For each user transaction, what was the critical path, and did the network matter?

30 popular apps167,000 transactions from user study

• On average, 19 asynchronous calls per user transaction• On average, 8 parallel threads per user transaction

26.March.2014 sharad.agarwal@microsoft.com 29

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 30

Tweets MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 31

Tweets

Posts

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 32

Tweets

Posts

MittRating

MittRating

26.March.2014 sharad.agarwal@microsoft.com 33

Tweets

Posts

MittRating

MittRating

47%

26.March.2014 sharad.agarwal@microsoft.com 34

UI Thread

Background Thread

Background Thread

Background Thread

User Transaction

Tweets

Posts

MittRating

MittRating

47%

26.March.2014 sharad.agarwal@microsoft.com 35

UI Thread

Background Thread

Background Thread

Background Thread

User Transaction

Tweets

Posts

MittRating

MittRating

47%

User Click

26.March.2014 sharad.agarwal@microsoft.com 36

UI Thread

Background Thread

Background Thread

Background Thread

Twitter

Thread Blocked

User Transaction

Tweets

Posts

Facebook

MittRating

MittRating

47%

User Click

26.March.2014 sharad.agarwal@microsoft.com 37

UI Thread

Background Thread

Background Thread

Background Thread

Twitter

Thread Blocked

Fire

User Transaction

Callback

Tweets

PostsTwitter

Process Tweets

Facebook

MittRating

MittRating

47%

User Click

26.March.2014 sharad.agarwal@microsoft.com 38

UI Thread

Background Thread

Background Thread

Background Thread

Twitter

Thread Blocked

Fire

Fire

User Transaction

Callback

Callback

Tweets

PostsTwitter

Facebook Process Posts

Process Tweets

Facebook

MittRating

MittRating

47%

User Click

26.March.2014 sharad.agarwal@microsoft.com 39

UI Thread

Background Thread

Background Thread

Background Thread

Twitter

Thread WakeupThread Blocked

Fire

Fire

DisplayUser Transaction

Callback

Callback

Tweets

PostsTwitter

Facebook Process Posts

Process Tweets

Facebook

MittRating

MittRating

47%

User Click

26.March.2014 sharad.agarwal@microsoft.com 40

UI Thread

Background Thread

Background Thread

Background Thread

User Click

Twitter

Thread WakeupThread Blocked

Fire

Fire

Callback

Callback

Twitter

Facebook Process Posts

Process Tweets

Facebook

User Transaction Display

26.March.2014 sharad.agarwal@microsoft.com 41

UI Thread

Background Thread

Background Thread

Background Thread

User Click

Twitter

Thread WakeupThread Blocked

Fire

Fire

Callback

Callback

Twitter

Facebook Process Posts

Process Tweets

Facebook

User Transaction Display

26.March.2014 sharad.agarwal@microsoft.com 42

UI Thread

Background Thread

Background Thread

Background Thread

User Click

Twitter

Thread WakeupThread Blocked

Fire

Fire

Callback

Callback

Twitter

Facebook Process Posts

Process Tweets

Facebook

Critical Path

User Transaction Display

26.March.2014 sharad.agarwal@microsoft.com 43

UI Thread

Background Thread

Background Thread

Background Thread

User Click

Twitter

Thread WakeupThread Blocked

Fire

Fire

Callback

Callback

Twitter

Facebook Process Posts

Process Tweets

Facebook

Critical PathOptimizing the critical path reduces the user perceived delay

User Transaction Display

26.March.2014 sharad.agarwal@microsoft.com 44

UI Thread

Background Thread

Background Thread

Background Thread

User Click

Twitter

Thread WakeupThread Blocked

Fire

Fire

Callback

Callback

Twitter

Facebook Process Posts

Process Tweets

Facebook

Critical PathOptimizing the critical path reduces the user perceived delay

User Transaction Display

26.March.2014 sharad.agarwal@microsoft.com 45

key points

• app pages designed in GUI• async interfaces in code to UI elements• async interfaces to network• tendency to fetch many network objects at launch• fetch‐parse‐fetch pattern• critical path is hard to determine• in which user transactions does network matter?•of those, what caused network delay, if any?

26.March.2014 sharad.agarwal@microsoft.com 46

cellular network complicates this even more

• radio power states

26.March.2014 sharad.agarwal@microsoft.com 47

cellular network complicates this even more

• radio power states• latency varies by load

26.March.2014 sharad.agarwal@microsoft.com 48

cellular network complicates this even more

• radio power states• latency varies by load

26.March.2014 sharad.agarwal@microsoft.com 49

0

0.2

0.4

0.6

0.8

1

120 170 220

empi

rical

CD

F

RTT (ms)

cellular network complicates this even more

• radio power states• latency varies by load• latency varies

over space

26.March.2014 sharad.agarwal@microsoft.com 50

0

0.2

0.4

0.6

0.8

1

0 50 100 150 200

empi

rical

CD

F

RTT difference at 90th percentile (ms)

why am I telling you all this?•wireless BW, latency, RSSI, etc. data is useful for research

• relate it to user experience• this is hard because of how apps are built• need detailed & efficient app instrumentation

•our mobile OS throttles some network behavior• based on app performance need and cellular data limits• research systems to do this on a per app transfer basis, using detailed & lightweight instrumentation

•need detailed, predictive wireless performance info & how individual parts of apps are affected by net perf

26.March.2014 sharad.agarwal@microsoft.com 51

for more details

• cellular performance variations in short timescales• Switchboard paper in ACM MobiSys 2011

• asynchronous nature of apps & perf measurement• AppInsight paper in USENIX OSDI 2012

•network fetching behavior of apps• Procrastinator paper in ACM MobiSys 2014

26.March.2014 sharad.agarwal@microsoft.com 52