Empirically Assessing Opportunities for Prefetching and Caching in Mobile Apps

E4ec94f3e536e3066279a59adc0cf14d?s=47 Yixue Zhao
September 06, 2018

Empirically Assessing Opportunities for Prefetching and Caching in Mobile Apps

Presentation slides of the paper "Empirically Assessing Opportunities for Prefetching and Caching in Mobile Apps" at the International Conference on Automated Software Engineering (ASE) 2018.

The presentation can be found at https://youtu.be/iT1pNy370ZM

E4ec94f3e536e3066279a59adc0cf14d?s=128

Yixue Zhao

September 06, 2018
Tweet

Transcript

  1. 1.

    Empirically Assessing Opportunities for Prefetching and Caching in Mobile Apps

    Yixue Zhao, Paul Wat, Marcelo Schmitt Laser, and Nenad Medvidović University of Southern California September 6, 2018 @Montpellier
  2. 8.

    Prefetching & Caching immediate response local cache ICSE 2018. Leveraging

    Program Analysis to Reduce User-Perceived Latency in Mobile Applications.
  3. 10.

    Browser Mobile App Browser vs. Mobile App Ø Lack of

    work Ø “Light” requests Ø Large body of work Ø “Rich” requests ?
  4. 11.

    Browser Mobile App Browser vs. Mobile App Ø Lack of

    work Ø “Light” requests Ø Single round-trip time Ø Large body of work Ø “Rich” requests Ø Loading multiple sub-resources ?
  5. 12.

    Browser Mobile App Browser vs. Mobile App Ø Lack of

    work Ø “Light” requests Ø Single round-trip time Ø Prefetch separate requests Ø Large body of work Ø “Rich” requests Ø Loading multiple sub-resources Ø Prefetch sub-resources ?
  6. 13.

    Conclusion Ø Browser à Mobile app Ø Lack of prefetching

    & caching in mobile apps Browser vs. Mobile App
  7. 15.
  8. 16.

    GET requests Ø Read-only Ø No side effects Ø Safe

    to prefetch RQ: Prefetchability Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests
  9. 17.

    1. What is the number of GET requests per app?

    2. What is the percentage of GET requests among all HTTP requests? 3. How prevalent are GET requests across different app categories? RQ: Prefetchability Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests
  10. 18.

    RQ: Cacheability Ø Prefetchability of HTTP requests Ø Cacheability of

    HTTP responses Ø Redundancy of HTTP requests
  11. 19.

    Prefetchable ≠ Cacheable Ø Cache staleness Ø Rely on Expires,

    Cache-Control Ø Trustworthy? RQ: Cacheability Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests
  12. 20.

    4. How prevalent are Expires headers? 5. Are Expires headers

    trustworthy? 6. How prevalent are Cache-Control headers? 7. Are Cache-Control headers trustworthy? RQ: Cacheability Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests
  13. 21.

    RQ: Redundancy Ø Prefetchability of HTTP requests Ø Cacheability of

    HTTP responses Ø Redundancy of HTTP requests
  14. 22.

    Redundant requests Ø Ostensibly redundant: same URL Ø Truly redundant:

    same URL & same response RQ: Redundancy Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests Cache me J
  15. 23.

    8. How prevalent are redundant HTTP requests? 9. Are the

    identified ostensibly redundant requests truly redundant? RQ: Redundancy Ø Prefetchability of HTTP requests Ø Cacheability of HTTP responses Ø Redundancy of HTTP requests
  16. 24.
  17. 25.

    Workflow Overview Send Requests t=0, 10, 30, 60s #req ≥

    4 Instrumented Apps App Testing Monkey Exerciser download Manual Examination Initial Apps
  18. 26.

    Ø 1,687 top-ranked apps Ø 33 app categories e.g., Beauty,

    Tools Workflow: Download download Google Play Initial Apps 1,687
  19. 27.

    Ø Instrumented 1,308 apps to capture needed information by Soot

    Ø App size: 16 KB to 103.4 MB Ø #Request per app: 0 to 1,243 Workflow: Instrumentation download Google Play Initial Apps Instrumented Apps 1,308 1,687
  20. 28.

    Ø 3,000 random events by Monkey Ø NoxPlayer emulator Ø

    Wi-Fi network settings Workflow: Testing download Google Play Initial Apps Instrumented Apps App Testing Monkey Exerciser 1,687 1,308
  21. 30.

    Workflow: Inspection Ø Low network usage Ø Manual inspection Instrumented

    Apps App Testing Monkey Exerciser download Google Play Manual Examination Initial Apps
  22. 31.

    Ø Low network usage Ø Manual inspection Ø 6 recurring

    reasons e.g. obfuscation Workflow: Inspection Instrumented Apps App Testing Monkey Exerciser download Google Play Manual Examination Initial Apps
  23. 32.

    1 ≤ #Requests ≤ 3 Ø Load config files Ø

    Log in with Facebook Ø Monitoring services Workflow: Inspection Instrumented Apps App Testing Monkey Exerciser download Google Play Manual Examination Initial Apps
  24. 33.

    #req ≥ 4 Workflow: Final Apps Final apps (#req ≥

    4) Ø 451 apps Ø 33 app categories e.g. Beauty, Tools Ø #Req per app Avg: 35 Max: 1,243
  25. 34.

    Workflow Overview Send Requests t=0, 10, 30, 60s #req ≥

    4 Instrumented Apps App Testing Monkey Exerciser download Google Play Manual Examination Initial Apps
  26. 35.
  27. 36.
  28. 37.

    Prefetchability of HTTP requests Ø What is the number of

    GET requests per app? Min 0 25 50 75 100 125 150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  29. 38.

    Prefetchability of HTTP requests Ø What is the number of

    GET requests per app? Max 0 25 50 75 100 125 150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  30. 39.

    Prefetchability of HTTP requests Ø What is the number of

    GET requests per app? Avg 0 25 50 75 100 125 150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  31. 40.

    Prefetchability of HTTP requests Ø What is the number of

    GET requests per app? 0 25 50 75 100 125 150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 1,243
  32. 41.

    Prefetchability of HTTP requests Ø What is the number of

    GET requests per app? 0 25 50 75 100 125 150 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 1,243 263 182 802 286 174 166
  33. 42.

    Prefetchability of HTTP requests Ø What is the percentage of

    GET requests per app? 0 25 50 75 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  34. 43.

    Prefetchability of HTTP requests Ø GET is pervasive à prefetching

    opportunity 0 25 50 75 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  35. 44.

    Prefetchability of HTTP requests Ø GET is pervasive à prefetching

    opportunity Ø Highest avg: Beauty 94% Ø Lowest avg: Dating 43% 0 25 50 75 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
  36. 45.

    Prefetchability of HTTP requests 0 25 50 75 100 1

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Beauty 94%
  37. 46.

    Prefetchability of HTTP requests 0 25 50 75 100 1

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Dating 43%
  38. 47.
  39. 48.

    Cacheability of HTTP responses Ø Expires & Cache-Control response headers

    Ø Numbers Ø Percentages 0 5 10 15 20 25 30 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 Percentages of Expires Numbers of Expires
  40. 49.

    Cacheability of HTTP responses Avg of Expires percentages Avg of

    Cache-Control percentages 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33
  41. 50.

    Cacheability of HTTP responses Ø Avg: Expires 53%, Cache-Control 65%

    Avg of Cache-Control percentages 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 Avg of Expires percentages
  42. 51.

    Cacheability of HTTP responses Ø Avg: Expires 53%, Cache-Control 65%

    Ø Both headers are not always included Avg of Cache-Control percentages 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 Avg of Expires percentages
  43. 53.

    Cacheability of HTTP responses Instrumented Apps App Testing Manual Examination

    Monkey Exerciser Send Requests t=0, 10, 30, 60s #req ≥ 4 download Google Play Initial Apps
  44. 54.

    Cacheability of HTTP responses Ø Send original request @ time(t)

    Ø Send same request @ time(t+x), x=10, 30, 60s t = original time x = time period after t
  45. 55.

    Cacheability of HTTP responses Ø Untrustworthy scenarios 1. time(exp) ≤

    time(t) 2. time(t) < time(exp) ≤ time(t+x) ∧ response@(t) = response@(t+x) 3. time(exp) > time(t+x) ∧ response@(t) ≠ response@(t+x) t = original time x = time period after t
  46. 56.

    Cacheability of HTTP responses Ø Untrustworthy scenarios t = original

    time x = time period after t t t + x request@t 2018 Sep 1 2018 Sep 6
  47. 57.

    Cacheability of HTTP responses Ø Untrustworthy scenarios t = original

    time x = time period after t t t + x 2018 Sep 1 2018 Sep 6
  48. 58.

    Cacheability of HTTP responses Ø Untrustworthy scenarios t = original

    time x = time period after t t t + x expire time 2018 Sep 1 2018 Sep 6
  49. 59.

    Cacheability of HTTP responses Ø 1. expire before request is

    sent t = original time x = time period after t t t + x 2018 Sep 1 2018 Sep 6 expire time: 1999 Jan 1
  50. 60.

    Cacheability of HTTP responses Ø 2. should expire but response

    is unchanged t = original time x = time period after t t t + x 2018 Sep 1 2018 Sep 6 expire time: 2018 Sep 3
  51. 61.

    Cacheability of HTTP responses Ø 3. should not expire but

    response is changed t = original time x = time period after t t t + x 2018 Sep 1 2018 Sep 6 expire time: 2018 Sep 10
  52. 62.

    Cacheability of HTTP responses Ø Avg trustworthy: Expires 25%, Cache-Control

    77% (3x) Avg of trusted Expires Avg of trusted Cache-Control 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33
  53. 63.

    Cacheability of HTTP responses Ø Avg trustworthy: Expires 25%, Cache-Control

    77% (3x) Ø 0% and 100% apps Avg of trusted Expires Avg of trusted Cache-Control 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 0 25 50 75 100 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33
  54. 65.

    Cacheability of HTTP responses Ø Should not depend on the

    headers completely Ø No reliable alternatives
  55. 66.

    Cacheability of HTTP responses Ø Should not depend on the

    headers completely Ø No reliable alternatives Ø Research opportunities J
  56. 67.
  57. 68.

    Redundancy of HTTP requests Ø Ostensibly redundant requests Ø Avg:

    20% 0 25 50 75 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Percentages of ostensibly redundant requests
  58. 69.

    Redundancy of HTTP requests Ø Truly redundant requests Ø Avg:

    92% 0 25 50 75 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Percentages of truly redundant requests
  59. 71.
  60. 73.
  61. 74.

    Implications for caching Ø “Avg” app Ø #GET request 28

    Ø Redundant requests: 20% Ø Truly redundant requests: 92% Ø #Cacheable request: 6 Time saved: 4s
  62. 75.
  63. 76.

    Summary Empirical study to understand HTTP characteristics in mobile apps

    Ø Prefetchability of requests Ø Cacheability of responses Ø Redundancy of requests
  64. 77.

    Lessons learned Ø Opportunity for prefetching & caching Ø App-specific

    characteristics Ø Domain-specific characteristics Summary
  65. 78.

    Summary Contributions Ø Bridge the gap between browser and mobile

    app domain Ø Guidelines for developers Ø Motivate future research