mobile measurements: the mobile app OS perspective · 2015. 6. 30. · 26.March.2014...

Preview:

Citation preview

  • 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 MittRatingMitt

    Rating

    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 Display26.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 Display26.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 Display26.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 Display26.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 Display26.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

Recommended