skip to main content
10.1145/2771783.2771816acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Automating performance bottleneck detection using search-based application profiling

Published:13 July 2015Publication History

ABSTRACT

Application profiling is an important performance analysis technique, when an application under test is analyzed dynamically to determine its space and time complexities and the usage of its instructions. A big and important challenge is to profile nontrivial web applications with large numbers of combinations of their input parameter values. Identifying and understanding particular subsets of inputs leading to performance bottlenecks is mostly manual, intellectually intensive and laborious procedure. We propose a novel approach for automating performance bottleneck detection using search-based input-sensitive application profiling. Our key idea is to use a genetic algorithm as a search heuristic for obtaining combinations of input parameter values that maximizes a fitness function that represents the elapsed execution time of the application. We implemented our approach, coined as Genetic Algorithm-driven Profiler (GA-Prof) that combines a search-based heuristic with contrast data mining of execution traces to accurately determine performance bottlenecks. We evaluated GA-Prof to determine how effectively and efficiently it can detect injected performance bottlenecks into three popular open source web applications. Our results demonstrate that GA-Prof efficiently explores a large space of input value combinations while automatically and accurately detecting performance bottlenecks, thus suggesting that it is effective for automatic profiling.

References

  1. W. Afzal and R. Torkar. On the application of genetic programming for software engineering predictive modeling: A systematic review. Expert Syst. Applications, 38(9):11984–11997, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. K. Aguilera, J. C. Mogul, J. L. Wiener, P. Reynolds, and A. Muthitacharoen. Performance debugging for distributed systems of black boxes. In SOSP ’03, pages 74–89, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. S. Ali, L. C. Briand, H. Hemmati, and R. K. Panesar-Walawege. A systematic review of the application and empirical investigation of search-based test case generation. TSE, 36(6):742–762, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. N. Alshahwan and M. Harman. Automated web application testing using search based software engineering. In ASE ’11, pages 3–12, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. G. Ammons, J.-D. Choi, M. Gupta, and N. Swamy. Finding and removing performance bottlenecks in large systems. In ECOOP ’04, pages 172–196. 2004.Google ScholarGoogle Scholar
  6. A. Arcuri and L. Briand. A practical guide for using statistical tests to assess randomized algorithms in software engineering. In ICSE ’11, pages 1–10, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. A. Arcuri and L. Briand. A hitchhiker’s guide to statistical tests for assessing randomized algorithms in software engineering. STVR, 2012.Google ScholarGoogle Scholar
  8. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Directed test generation for effective fault localization. In ISSTA ’10, pages 49–60, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Practical fault localization for dynamic web applications. In ICSE ’10, pages 49–60, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Baars, M. Harman, Y. Hassoun, K. Lakhotia, P. McMinn, P. Tonella, and T. Vos. Symbolic search-based testing. In ASE ’11, pages 53–62, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. Bach. What is exploratory testing? stickyminds.com.Google ScholarGoogle Scholar
  12. L. C. Briand, Y. Labiche, and M. Shousha. Stress testing real-time systems with genetic algorithms. In GECCO ’05, pages 1021–1028, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Burnim, S. Juvekar, and K. Sen. Wise: Automated test generation for worst-case complexity. In ICSE ’09, pages 463–473, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Y. Cai, J. Grundy, and J. Hosking. Synthesizing client load models for performance engineering via web crawling. In ASE ’07, pages 353–362, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. H. W. Cain, B. P. Miller, and B. J. Wylie. A callgraph-based search strategy for automated performance diagnosis. In Euro-Par ’00, pages 108–122, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. N. Chapin, J. E. Hale, K. M. Kham, J. F. Ramil, and W.-G. Tan. Types of software evolution and software maintenance. J. of Softw. Maint. and Evo. R. P., 13(1):3–30, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. T.-H. Chen, W. Shang, Z. M. Jiang, A. E. Hassan, M. Nasser, and P. Flora. Detecting performance anti-patterns for applications developed using object-relational mapping. In ICSE ’14, pages 1001–1012, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. X. Chen, C. P. Ho, R. Osman, P. G. Harrison, and W. J. Knottenbelt. Understanding, modelling, and improving the performance of web applications in multicore virtualised environments. In ICPE ’14, pages 197–207, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. T. M. Chilimbi, B. Liblit, K. Mehra, A. V. Nori, and K. Vaswani. Holmes: Effective statistical debugging via efficient path profiling. In ICSE ’09, pages 34–44, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. E. Coppa, C. Demetrescu, and I. Finocchi. Input-sensitive profiling. In PLDI ’12, pages 89–98, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. C. D’Elia, C. Demetrescu, and I. Finocchi. Mining hot calling contexts in small space. In PLDI ’11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. G. Dong and J. Bailey. Contrast Data Mining: Concepts, Algorithms, and Applications. 1st edition, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. S. Elbaum and M. Hardojo. An empirical study of profiling strategies for released software and their impact on testing activities. In ISSTA ’04, pages 65–75, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. I. F. Emilio Coppa, Camil Demetrescu. Input-sensitive profiling. TSE, 40(12):1185–1205, 2014.Google ScholarGoogle Scholar
  25. D. R. Faught. Exploratory load testing. stickyminds.com.Google ScholarGoogle Scholar
  26. S. Forrest, T. Nguyen, W. Weimer, and C. Le Goues. A genetic programming approach to automated software repair. In GECCO ’09, pages 947–954, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. G. Fraser, A. Arcuri, and P. McMinn. A memetic algorithm for whole test suite generation. JSS, 2014.Google ScholarGoogle Scholar
  28. S. Frey, F. Fittkau, and W. Hasselbring. Search-based genetic optimization for deployment and reconfiguration of software in the cloud. In ICSE ’13, pages 512–521, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. P. Godefroid and S. Khurshid. Exploring very large state spaces using genetic algorithms. STTT, 6(2):117–127, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. C. L. Goues, T. Nguyen, S. Forrest, and W. Weimer. Genprog: A generic method for automatic software repair. TSE, 38:54–72, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. S. Grant, J. R. Cordy, and D. Skillicorn. Automated concept location using independent component analysis. In WCRE’08, pages 138–142, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Grechanik, C. Fu, and Q. Xie. Automatically finding performance problems with feedback-directed learning software testing. In ICSE ’12, pages 156–166, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. B. Gregg. Systems Performance: Enterprise and the Cloud. Prentice Hall Press, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Y. Group. Enterprise application management survey. 2005.Google ScholarGoogle Scholar
  35. S. Han, Y. Dang, S. Ge, D. Zhang, and T. Xie. Performance debugging in the large via mining millions of stack traces. In ICSE ’12, pages 145–155, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Harman. Search based software engineering for program comprehension. In ICPC ’07, pages 3–13, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. M. Harman, Y. Jia, and W. B. Langdon. Strong higher order mutation-based test data generation. In FSE ’11, pages 212–222, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. M. Harman, K. Lakhotia, J. Singer, D. R. White, and S. Yoo. Cloud engineering is search based software engineering too. JSS, 86(9):2225–2241, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. M. Harman, S. A. Mansouri, and Y. Zhang. Search-based software engineering: Trends, techniques and applications. CSUR, 45(1):11:1–11:61, Dec. 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. M. Harman and P. McMinn. A theoretical and empirical study of search-based testing: Local, global, and hybrid search. TSE, 36(2):226–247, Mar. 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. J. H. Holland. Adaptation in natural and artificial systems: An introductory analysis with applications to biology, control, and artificial intelligence. U Michigan Press, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A. Hyvärinen and E. Oja. Independent component analysis: algorithms and applications. Neural networks, 13(4):411–430, 2000.Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. M. Z. Iqbal, A. Arcuri, and L. Briand. Empirical investigation of search algorithms for environment model-based testing of real-time embedded software. In ISSTA ’12, pages 199–209. ACM, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. L. Jiang and Z. Su. Profile-guided program simplification for effective testing and analysis. In FSE ’08, pages 48–58, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Z. M. Jiang, A. E. Hassan, G. Hamann, and P. Flora. Automatic identification of load testing problems. In ICSM ’08, pages 307–316, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  46. Z. M. Jiang, A. E. Hassan, G. Hamann, and P. Flora. Automated performance analysis of load tests. In ICSM ’09, pages 125–134, 2009.Google ScholarGoogle ScholarCross RefCross Ref
  47. G. Jin, L. Song, X. Shi, J. Scherpelz, and S. Lu. Understanding and detecting real-world performance bugs. PIDI ’12, pages 77–88, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. B. F. Jones, H.-H. Sthamer, and D. E. Eyres. Automatic structural testing using genetic algorithms. Softw. Eng. J., 11(5):299–306, 1996.Google ScholarGoogle ScholarCross RefCross Ref
  49. P. Joshi, C.-S. Park, K. Sen, and M. Naik. A randomized dynamic program analysis technique for detecting real deadlocks. SIGPLAN Not., 44(6):110–120, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. B. Korel. Automated software test data generation. TSE, 16(8):870–879, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. T. Küstner, J. Weidendorfer, and T. Weinzierl. Argument controlled profiling. In Euro-Par ’09, pages 177–184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. W. B. Langdon, M. Harman, and Y. Jia. Multi objective higher order mutation testing with genetic programming. In TAIC PART ’09, pages 21–29, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In ICSE ’12, pages 3–13, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Z. Li, M. Harman, and R. M. Hierons. Search algorithms for regression test case prioritization. TSE, 33(4):225–237, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. B. P. Lientz and E. B. Swanson. Software Maintenance Management. Addison-Wesley, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. X. Liu, J. Zhan, K. Zhan, W. Shi, L. Yuan, D. Meng, and L. Wang. Automatic performance debugging of spmd-style parallel programs. JPDC, 71(7):925–937, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. P. McMinn. Search-based software test data generation: A survey: Research articles. STVR, 14(2):105–156, June 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. P. McMinn. Search-based software testing: Past, present and future. In ICSTW ’11, pages 153–163, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. P. McMinn, M. Harman, K. Lakhotia, Y. Hassoun, and J. Wegener. Input domain reduction through irrelevant variable removal and its effect on local, global, and hybrid search-based structural test data generation. TSE, 38(2):453–477, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. A. Memon, A. Porter, C. Yilmaz, A. Nagarajan, D. Schmidt, and B. Natarajan. Skoll: Distributed continuous quality assurance. In ICSE ’04, pages 459–468, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. B. S. Mitchell and S. Mancoridis. Using heuristic search techniques to extract design abstractions from source code. In GECCO ’02, pages 1375–1382, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Evaluating the accuracy of java profilers. In PLDI ’10, pages 187–197, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. T. H. D. Nguyen, M. Nagappan, A. E. Hassan, M. Nasser, and F. Parminder. An industrial case study of automatically identifying performance regression-causes. In MSR ’14. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. M. O’Keeffe and M. Ó. Cinnéide. Search-based software maintenance. In CSMR ’06, pages 249–260. IEEE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. M. Pradel and T. R. Gross. Leveraging test generation and specification mining for automated bug detection without false positives. In ICSE ’12, pages 288–298, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. M. Pradel, P. Schuh, G. Necula, and K. Sen. Eventbreak: Analyzing the responsiveness of user interfaces through performance-guided test generation. In OOPSLA ’14, pages 33–47, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. M. Schur, A. Roth, and A. Zeller. Mining behavior models from enterprise web applications. In FSE ’13, pages 422–432, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. M. Schur, A. Roth, and A. Zeller. Procrawl: Mining test models from multi-user web applications. In ISSTA ’14, pages 413–416, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. C. Schwaber, C. Mines, and L. Hogan. Performance-driven software development: How it shops can more efficiently meet performance requirements. Forrester Research, 2006.Google ScholarGoogle Scholar
  70. B. Schwarz, D. Schuler, and A. Zeller. Breeding high-impact mutations. In ICSTW ’11, pages 382–387. IEEE, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. A. Shankar, M. Arnold, and R. Bodik. Jolt: Lightweight dynamic analysis and removal of object churn. In OOPSLA ’08, pages 127–142, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. A. Srivastava and A. Eustace. Atom: A system for building customized program analysis tools. In PLDI ’94, pages 196–205. ACM, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. V. Vangala, J. Czerwonka, and P. Talluri. Test case comparison and clustering using program profiles and static execution. In FSE ’09, pages 293–294, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. A. L. Watkins. The automatic generation of test data using genetic algorithms. In SQC, pages 300–309, 1995.Google ScholarGoogle Scholar
  75. J. Wegener, K. Grimm, M. Grochtmann, H. Sthamer, and B. Jones. Systematic testing of real-time systems. In EuroSTAR ’96, 1996.Google ScholarGoogle Scholar
  76. J. Wegener and M. Grochtmann. Verifying timing constraints of real-time systems by means of evolutionary testing. Real-Time Systems, 15(3):275–298, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. J. Wegener, H. Sthamer, B. F. Jones, and D. E. Eyres. Testing real-time systems using genetic algorithms. Software Quality Journal, 6(2):127–135, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In ICSE ’09, pages 364–374, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. X. Xiao, S. Han, D. Zhang, and T. Xie. Context-sensitive delta inference for identifying workload-dependent performance bottlenecks. In ISSTA ’13, pages 90–100, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. G. Xu and A. Rountev. Precise memory leak detection for java software using container profiling. In ICSE ’08, pages 151–160, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Z. Xu, M. B. Cohen, and G. Rothermel. Factors affecting the use of genetic algorithms in test suite augmentation. In GECCO ’10, pages 1365–1372, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. D. Yan, G. Xu, and A. Rountev. Uncovering performance problems in java applications with reference propagation profiling. In ICSE ’12, pages 134–144, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. N. Yuhanna. Dbms selection: Look beyond basic functions. Forrester Research, 2009.Google ScholarGoogle Scholar
  84. S. Zaman, B. Adams, and A. E. Hassan. A qualitative study on performance bugs. In MSR ’12, pages 199–208, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. D. Zaparanuks and M. Hauswirth. Algorithmic profiling. In PLDI ’12, pages 67–76, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. P. Zhang, S. Elbaum, and M. B. Dwyer. Automatic generation of load tests. In ASE ’11, pages 43–52, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. S. Zhang and M. D. Ernst. Automated diagnosis of software configuration errors. In ICSE ’13, pages 312–321, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Automating performance bottleneck detection using search-based application profiling

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            ISSTA 2015: Proceedings of the 2015 International Symposium on Software Testing and Analysis
            July 2015
            447 pages
            ISBN:9781450336208
            DOI:10.1145/2771783
            • General Chair:
            • Michal Young,
            • Program Chair:
            • Tao Xie

            Copyright © 2015 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 13 July 2015

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate58of213submissions,27%

            Upcoming Conference

            ISSTA '24

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader