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. 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. Mobile Apps Everywhere

  3. Network Latency Latency!

  4. Network Latency Wireless network characteristics Ø Low bandwidth Ø Unstable

    connectivity
  5. Network Latency Performance Bottleneck Network Speed

  6. Prefetching Caching

  7. Prefetching & Caching local cache

  8. Prefetching & Caching immediate response local cache ICSE 2018. Leveraging

    Program Analysis to Reduce User-Perceived Latency in Mobile Applications.
  9. Browser Mobile App Browser vs. Mobile App Ø Lack of

    work Ø Large body of work ?
  10. Browser Mobile App Browser vs. Mobile App Ø Lack of

    work Ø “Light” requests Ø Large body of work Ø “Rich” requests ?
  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 ?
  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 ?
  13. Conclusion Ø Browser à Mobile app Ø Lack of prefetching

    & caching in mobile apps Browser vs. Mobile App
  14. Empirical Study Can we prefetch & cache in mobile apps?

  15. Research Questions Ø Prefetchability of HTTP requests Ø Cacheability of

    HTTP responses Ø Redundancy of HTTP requests
  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
  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
  18. RQ: Cacheability Ø Prefetchability of HTTP requests Ø Cacheability of

    HTTP responses Ø Redundancy of HTTP requests
  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
  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
  21. RQ: Redundancy Ø Prefetchability of HTTP requests Ø Cacheability of

    HTTP responses Ø Redundancy of HTTP requests
  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
  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
  24. Workflow

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

    4 Instrumented Apps App Testing Monkey Exerciser download Manual Examination Initial Apps
  26. Ø 1,687 top-ranked apps Ø 33 app categories e.g., Beauty,

    Tools Workflow: Download download Google Play Initial Apps 1,687
  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
  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
  29. Workflow: Inspection Ø Low network usage

  30. Workflow: Inspection Ø Low network usage Ø Manual inspection Instrumented

    Apps App Testing Monkey Exerciser download Google Play Manual Examination Initial Apps
  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
  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
  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
  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
  35. Findings

  36. Findings Ø Prefetchability of HTTP requests Ø Cacheability of HTTP

    responses Ø Redundancy of HTTP requests
  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
  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
  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
  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
  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
  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
  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
  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
  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%
  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%
  47. Findings Ø Prefetchability of HTTP requests Ø Cacheability of HTTP

    responses Ø Redundancy of HTTP requests
  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
  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
  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
  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
  52. Cacheability of HTTP responses Ø Are Expires and Cache-Control headers

    trustworthy?
  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
  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
  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
  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
  57. Cacheability of HTTP responses Ø Untrustworthy scenarios t = original

    time x = time period after t t t + x 2018 Sep 1 2018 Sep 6
  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
  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
  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
  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
  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
  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
  64. Cacheability of HTTP responses Ø Should not depend on the

    headers completely
  65. Cacheability of HTTP responses Ø Should not depend on the

    headers completely Ø No reliable alternatives
  66. Cacheability of HTTP responses Ø Should not depend on the

    headers completely Ø No reliable alternatives Ø Research opportunities J
  67. Findings Ø Prefetchability of HTTP requests Ø Cacheability of HTTP

    responses Ø Redundancy of HTTP requests
  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
  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
  70. Redundancy of HTTP requests Ø Most redundant requests are truly

    redundant
  71. Redundancy of HTTP requests Ø Most redundant requests are truly

    redundant Ø What does this tell us?
  72. Implications for prefetching Ø “Avg” app Ø #GET request 28

  73. Implications for prefetching Ø “Avg” app Ø #GET request 28

    Ø Response time: 800ms Time saved: 22s
  74. Implications for caching Ø “Avg” app Ø #GET request 28

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

  76. Summary Empirical study to understand HTTP characteristics in mobile apps

    Ø Prefetchability of requests Ø Cacheability of responses Ø Redundancy of requests
  77. Lessons learned Ø Opportunity for prefetching & caching Ø App-specific

    characteristics Ø Domain-specific characteristics Summary
  78. Summary Contributions Ø Bridge the gap between browser and mobile

    app domain Ø Guidelines for developers Ø Motivate future research
  79. Behind the Scene: co-authors Marcelo Schmitt Laser Paul Wat advisor:

    Nenad Medvidović
  80. Behind the Scene: co-authors + sponsors Marcelo Schmitt Laser Paul

    Wat advisor: Nenad Medvidović
  81. Contact: yixue.zhao@usc.edu Github: https://github.com/felicitia/PALOMA-Analysis/tree/empirical