A comprehensive study on software aging across android versions and vendors

Abstract

This paper analyzes the phenomenon of software aging – namely, the gradual performance degradation and resource exhaustion in the long run – in the Android OS. The study intends to highlight if, and to what extent, devices from different vendors, under various usage conditions and configurations, are affected by software aging and which parts of the system are the main contributors. The results demonstrate that software aging systematically determines a gradual loss of responsiveness perceived by the user, and an unjustified depletion of physical memory. The analysis reveals differences in the aging trends due to the workload factors and to the type of running applications, as well as differences due to vendors’ customization. Moreover, we analyze several system-level metrics to trace back the software aging effects to their main causes. We show that bloated Java containers are a significant contributor to software aging, and that it is feasible to mitigate aging through a micro-rejuvenation solution at the container level.

This is a preview of subscription content, log in to check access.

Listing 1
Listing 2
Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10

Notes

  1. 1.

    Computed with David A. Wheeler’s SLOCCount (Wheeler 2016) on the entire Android Open Source Project (AOSP) Nougat 24 (Android Open-Source Project 2017).

  2. 2.

    For those applications requiring the user to login, we have manually configured them before the experiment, by signing up and activating the automatic login.

References

  1. Alonso J, Torres J, Berral JL, Gavalda R (2010) Adaptive On-Line Software Aging Prediction based on Machine Learning. In: Dependable systems and networks (DSN), 2010, IEEE/IFIP International Conference on, IEEE, pp 507–516

  2. Amalfitano D, Fasolino AR, Tramontana P, De Carmine S, Memon AM (2012) Using GUI ripping for automated testing of Android applications. In: Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ACM, pp 258–261

  3. Android (2016) Developers - investigating your ram usage. https://developer.android.com/studio/profile/investigate-ram.html#LogMessages

  4. Android (2018a) App startup time. https://developer.android.com/topic/performance/vitals/launch-time

  5. Android (2018b) Developers - keeping your app responsive. https://developer.android.com/training/articles/perf-anr.html#Reinforcing

  6. Android (2019a) Distribution dashboard - android developers. https://developer.android.com/about/dashboards

  7. Android (2019b) UI/Application Exerciser Monkey. https://developer.android.com/studio/test/monkey

  8. Android Central (2015) The HTC One series specs. https://www.androidcentral.com/htc-one-series-specs

  9. Android Open-Source Project (2017) Android Open Source Project. https://source.android.com/

  10. Andrzejak A, Eichler F, Ghanavati M (2017) Detection of memory leaks in C/C++ code via machine learning. In: 2017 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 252–258

  11. Anscombe FJ (1948) The validity of comparative experiments. Journal of the royal statistical society series A (General) 111(3):181–211

    MathSciNet  Article  Google Scholar 

  12. Araujo J, Alves V, Oliveira D, Dias P, Silva B, Maciel P (2013) An investigative approach to software aging in android applications. In: Systems, man, and cybernetics (SMC), 2013, IEEE International Conference on, IEEE, pp 1229–1234

  13. Araujo J, Matos R, Alves V, Maciel P, Souza F, Trivedi KS, et al. (2014) Software aging in the eucalyptus cloud computing infrastructure: characterization and rejuvenation. ACM Journal on Emerging Technologies in Computing Systems (JETC) 10(1):11

    Google Scholar 

  14. Bovenzi A, Cotroneo D, Pietrantuono R, Russo S (2011) Workload Characterization for Software Aging Analysis

  15. Carrozza G, Cotroneo D, Natella R, Pecchia A, Russo S (2010) Memory leak analysis of mission-critical middleware. J Syst Softw 83(9):1556–1567

    Article  Google Scholar 

  16. Cotroneo D, Grottke M, Natella R, Pietrantuono R, Trivedi KS (2013a) Fault triggers in open-source software: An experience report. In: Software Reliability Engineering (ISSRE), 2013 IEEE 24th International Symposium on, IEEE, pp 178–187

  17. Cotroneo D, Orlando S, Pietrantuono R, Russo S (2013b) A measurement-based ageing analysis of the JVM. Software Testing, Verification and Reliability 23(3):199–239

    Article  Google Scholar 

  18. Cotroneo D, Natella R, Pietrantuono R, Russo S (2014) A survey of software aging and rejuvenation studies. ACM Journal on Emerging Technologies in Computing Systems (JETC) 10(1):8

    Google Scholar 

  19. Cotroneo D, Fucci F, Iannillo AK, Natella R, Pietrantuono R (2016) Software Aging Analysis of the Android Mobile OS. In: Proc. 27th IEEE Intl. Symp. Software Reliability Engineering (ISSRE)

  20. Daniel WW (1990) Kruskal-wallis one-way analysis of variance by ranks. Applied Nonparametric Statistics, pp 226–234

  21. Dohi T, Goseva-Popstojanova K, Trivedi KS (2000) Statistical non-parametric algorithms to estimate the optimal software rejuvenation schedule. In: Dependable Computing, 2000. Proceedings. 2000 Pacific Rim International Symposium on, IEEE, pp 77–84

  22. Durbin J, Watson GS (1951) Testing for serial correlation in least squares regression. ii. Biometrika 38(1/2):159–177

    MathSciNet  Article  Google Scholar 

  23. Fang L, Dou L (2015) Xu G (2015) perfblower: Quickly detecting memory-related performance problems via amplification. In: 29Th european conference on object-oriented programming (ECOOP)

  24. Gallo R, Hong o P, Dahab R, Navarro LC, Kawakami H, Galvão K, Junqueira G, Ribeiro L (2015) Security and system architecture: Comparison of Android customizations. In: ACM WiSec, ACM, p 12

  25. Garg S, Moorsel AV, Vaidyanathan K, Trivedi KS (1998) A Methodology for Detection and Estimation of Software Aging. In: Proc. of the 9th Intl. Symp. on Software Reliability Engineering (ISSRE)

  26. Ghanavati M, Costa D, Seboek J, Lo D, Andrzejak A (2019) Memory and resource leak defects and their repairs in java projects. Empirical Software Engineering https://doi.org/10.1007/s10664-019-09731-8. https://doi.org/10.1007/s10664-019-09731-8

  27. Grottke M, Trivedi K (2007) Fighting bugs: remove, retry, replicate, and rejuvenate. IEEE Computer 40(2):107–109

    Article  Google Scholar 

  28. Grottke M, Li L, Vaidyanathan K, Trivedi KS (2006) Analysis of software aging in a web server. IEEE Trans Reliability 55(3):480–491

    Article  Google Scholar 

  29. Grottke M, Nikora AP, Trivedi KS (2010) An empirical investigation of fault types in space mission system software. In: Dependable systems and networks (DSN), 2010, IEEE/IFIP International Conference on, IEEE, pp 447–456

  30. Grottke M, Kim DS, Mansharamani R, Nambiar M, Natella R, Trivedi KS (2016) Recovery from software failures caused by mandelbugs. IEEE Trans Reliab 65(1):70–87

    Article  Google Scholar 

  31. GSMArena (2019) Counterpoint: Huawei reaches all-time high market share in Q1 2019. https://www.gsmarena.com/counterpoint_huawei_reaches_alltime_high_market_share_in_q1_2019-news-36845.php

  32. Hamed KH, Rao AR (1998) A modified mann-kendall trend test for autocorrelated data. J Hydrol 204(1-4):182–196

    Article  Google Scholar 

  33. Huang Y, Kintala C, Kolettis N, Fulton ND (1995) software rejuvenation: analysis, module and applications. In: Fault-tolerant computing, 1995. FTCS-25. Digest of papers. Twenty-Fifth International Symposium on, IEEE, pp 381–390

  34. Huo S, Zhao D, Liu X, Xiang J, Zhong Y, Yu H (2018) Using machine learning for software aging detection in Android system. In: 2018 Tenth international conference on advanced computational intelligence, ICACI, IEEE, pp 741–746

  35. Iannillo AK, Natella R, Cotroneo D, Nita-Rotaru C (2017) Chizpurfle: A Gray-Box Android Fuzzer for Vendor Service Customizations. In: Proc. 28th IEEE Intl. Symp. Software Reliability Engineering (ISSRE)

  36. Jump M, McKinley KS (2007) Cork: dynamic memory leak detection for garbage-collected languages. In: Acm sigplan notices, ACM, 42, pp 31–38

  37. Kang Y, Zhou Y, Xu H, Lyu MR (2015) PersisDroid: Android Performance Diagnosis via Anatomizing Asynchronous Executions. arXiv preprint. 151207950

  38. Li L, Bissyandé TF, Wang H, Klein J (2018) CiD: Automating the detection of API-related compatibility issues in Android apps. In: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp 153–163

  39. Love R (2010) Linux Kernel Development. Pearson Education

  40. Machida F, Xiang J, Tadano K, Maeno Y (2012) Aging-related bugs in cloud computing software.. In: Software Reliability Engineering Workshops (ISSREW), 2012 IEEE 23rd International Symposium on, IEEE, pp 287–292

  41. Machida F, Andrzejak A, Matias R, Vicente E (2013) On the effectiveness of Mann-Kendall test for detection of software aging. In: 2013 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)

  42. Machida F, Xiang J, Tadano K, Maeno Y (2016) Lifetime extension of software execution subject to aging. IEEE Trans Reliab 66(1):123–134

    Article  Google Scholar 

  43. Machiry A, Tahiliani R, Naik M (2013) Dynodroid: An input generation system for Android apps. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, ACM, pp 224–234

  44. Mao K, Harman M, Jia Y (2016) Sapienz: Multi-objective automated testing for Android applications. In: Proceedings of the 25th International Symposium on Software Testing and Analysis, ACM, pp 94–105

  45. Montgomery DC (2008) Design and analysis of experiments. John Wiley & Sons

  46. Nagappan M, Zimmermann T, Bird C (2013) Diversity in software engineering research. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, ACM, pp 466–476

  47. Nethercote N, Seward J (2007) Valgrind: a framework for heavyweight dynamic binary instrumentation. In: ACM Sigplan notices, ACM, 42, pp 89–100

  48. Önöz B, Bayazit M (2003) The power of statistical tests for trend detection. Turkish Journal of Engineering and Environmental Sciences 27(4):247–251

    Google Scholar 

  49. Pfening A, Garg S, Puliafito A, Telek M, Trivedi KS (1996) Optimal software rejuvenation for tolerating soft failures. Perform Eval 27:491–506

    Article  Google Scholar 

  50. Pirie W (1988) Spearman rank correlation coefficient. Encyclopedia of statistical sciences

  51. Qiao Y, Zheng Z, Qin F (2016) An Empirical study of software aging manifestations in Android. In: Software Reliability Engineering Workshops, ISSREW. 2016 IEEE International Symposium on

  52. Qiao Y, Zheng Z, Fang Y (2018a) An empirical study on software aging indicators prediction in Android mobile. In: IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, PP 271–277

  53. Qiao Y, Zheng Z, Fang Y, Qin F, Trivedi KS, Cai KY (2018b) Two-level rejuvenation for Android smartphones and its optimization. IEEE Transactions on Reliability 68(2):633–652

    Article  Google Scholar 

  54. Qin F, Zheng Z, Li X, Qiao Y, Trivedi KS (2017) An empirical investigation of fault triggers in Android operating system. In: 2017 IEEE 22Nd pacific rim international symposium on dependable computing, PRDC, IEEE, pp 135–144

  55. Scalabrino S, Bavota G, Linares-Vásquez M, Lanza M, Oliveto R (2019) Data-driven solutions to detect API compatibility issues in android: An empirical study. In: 2019 IEEE/ACM 16Th international conference on mining software repositories, MSR, IEEE, pp 288–298

  56. Sen PK (1968) Estimates of the regression coefficient based on kendall’s tau. J Am Stat Assoc 63(324):1379–1389

    MathSciNet  Article  Google Scholar 

  57. Serebryany K, Bruening D, Potapenko A, Vyukov D (2012) Addresssanitizer: A fast address sanity checker. In: Presented as part of the 2012 {USENIX} annual technical conference ({USENIX}{ATC}), 12, pp 309–318

  58. Silva L, Madeira H, Silva J (2006) Software Aging and Rejuvenation in a SOAP-based Server. In: Proc. of the 5th IEEE Intl. Symp. on Network Computing and Applications (NCA), pp 56–65

  59. Sor V, Treier T, Srirama SN (2013) Improving statistical approach for memory leak detection using machine learning. In: 2013 IEEE International Conference on Software Maintenance, IEEE, pp 544–547

  60. Tanenbaum AS, Bos h (2014) Modern Operating Systems. Prentice Hall Press

  61. Theil H (1992) A rank-invariant method of linear and polynomial regression analysis. In: Henri Theil’s Contributions to Economics and Econometrics, Springer, pp 345–381

  62. Vaidyanathan K, Trivedi KS (2005) A comprehensive model for software rejuvenation. IEEE Transactions on Dependable and Secure Computing 2 (2):124–137

    Article  Google Scholar 

  63. Wang Q, Wolter K (2015) Reducing task completion time in mobile offloading systems through online adaptive local restart. In: Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, ACM, pp 3–13

  64. Wei L, Liu Y, Cheung SC (2016) Taming Android fragmentation: Characterizing and detecting compatibility issues for Android apps. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pp 226–237

  65. Wei L, Liu Y, Cheung SC, Huang H, Lu X (2018) Understanding and detecting fragmentation-induced compatibility issues for Android apps. IEEE Transactions on Software Engineering, Liu X

  66. Weng C, Xiang J, Xiong S, Zhao D, Yang C (2016) Analysis of software aging in android. In: Software reliability engineering workshops, ISSREW. 2016 IEEE International Symposium on

  67. Weng C, Zhao D, Lu L, Xiang J, Yang C, Li D (2017) A rejuvenation strategy in Android. In: 2017 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 273–279

  68. Wheeler D (2016) Sloccount. http://www.dwheeler.com/sloccount/

  69. Wikipedia (2019) Google Nexus. https://en.wikipedia.org/wiki/Google_Nexus

  70. Wu H, Wolter K (2015) Software aging in mobile devices: Partial computation offloading as a solution. In: Software reliability engineering workshops (ISSREW), 2015 IEEE International Symposium on, IEEE, pp 125–131

  71. Wu L, Grace M, Zhou Y, Wu C, Jiang X (2013) The impact of vendor customizations on Android security. In: Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security, ACM, pp 623–634

  72. Xiang J, Weng C, Zhao D, Tian J, Xiong S, Li L, Andrzejakb A (2018) A new software rejuvenation model for Android. In: 2018 IEEE International symposium on software reliability engineering workshops, ISSREW, IEEE, pp 293–299

  73. Xu G, Rountev A (2008) Precise memory leak detection for Java software using container profiling. In: Proceedings of the 30th international conference on Software engineering, ACM, pp 151–160

  74. Xu G, Rountev A (2010) Detecting inefficiently-used containers to avoid bloat. In: ACM Sigplan notices, ACM, 45, pp 160–173

  75. Xu G, Rountev A (2013) Precise memory leak detection for Java software using container profiling. ACM Transactions on Software Engineering and Methodology (TOSEM) 22(3):17

    Article  Google Scholar 

  76. Xu G, Bond MD, Qin F, Rountev A (2011) Leakchaser: Helping programmers narrow down causes of memory leaks. In: ACM SIGPLAN Notices, ACM, 46, pp 270–282

  77. Zheng P, Qi Y, Zhou Y, Chen P, Zhan J, Lyu MR (2014) An Automatic Framework for Detecting and Characterizing Performance Degradation of Software Systems. Reliability, IEEE Transactions on 63(4):927–943

    Article  Google Scholar 

Download references

Author information

Affiliations

Authors

Corresponding author

Correspondence to Antonio Ken Iannillo.

Additional information

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Communicated by: Forrest Shull

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Cotroneo, D., Iannillo, A.K., Natella, R. et al. A comprehensive study on software aging across android versions and vendors. Empir Software Eng (2020). https://doi.org/10.1007/s10664-020-09838-3

Download citation

Keywords

  • Android
  • Operating systems
  • Software aging
  • Stress testing