Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2884781.2884794acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Generating performance distributions via probabilistic symbolic execution

Published: 14 May 2016 Publication History

Abstract

Analyzing performance and understanding the potential best-case, worst-case and distribution of program execution times are very important software engineering tasks. There have been model-based and program analysis-based approaches for performance analysis. Model-based approaches rely on analytical or design models derived from mathematical theories or software architecture abstraction, which are typically coarse-grained and could be imprecise. Program analysis-based approaches collect program profiles to identify performance bottlenecks, which often fail to capture the overall program performance. In this paper, we propose a performance analysis framework PerfPlotter. It takes the program source code and usage profile as inputs and generates a performance distribution that captures the input probability distribution over execution times for the program. It heuristically explores high-probability and low-probability paths through probabilistic symbolic execution. Once a path is explored, it generates and runs a set of test inputs to model the performance of the path. Finally, it constructs the performance distribution for the program. We have implemented PerfPlotter based on the Symbolic PathFinder infrastructure, and experimentally demonstrated that PerfPlotter could accurately capture the best-case, worst-case and distribution of program execution times. We also show that performance distributions can be applied to various important tasks such as performance understanding, bug validation, and algorithm selection.

References

[1]
Collision Detector. https://www.cs.purdue.edu/sss/projects/cdx/.
[2]
MathWorks. http://www.mathworks.com/help/simulink/examples.html.
[3]
PerfPlotter. http://pat.sce.ntu.edu.sg/bhchen/perfplotter.
[4]
T. Ball and J. R. Larus. Efficient path profiling. In MICRO, pages 46--57, 1996.
[5]
T. Ball, P. Mataga, and M. Sagiv. Edge profiling versus path profiling: The showdown. In POPL, pages 134--148, 1998.
[6]
S. Balsamo, A. Di Marco, P. Inverardi, and M. Simeoni. Model-based performance prediction in software development: A survey. IEEE Trans. Softw. Eng., 30(5):295--310, 2004.
[7]
P. Barford and M. Crovella. Critical path analysis of tcp transactions. In SIGCOMM, pages 127--138, 2000.
[8]
M. Borges, M. d'Amorim, S. Anand, D. Bushnell, and C. S. Pasareanu. Symbolic execution with interval solving and meta-heuristic search. In ICST, pages 111--120, 2012.
[9]
M. Borges, A. Filieri, M. D'Amorim, and C. S. Păsăreanu. Iterative distribution-aware sampling for probabilistic symbolic execution. In FSE, 2015.
[10]
M. Borges, A. Filieri, M. D'Amorim, C. S. Păsăreanu, and W. Visser. Compositional solution space quantification for probabilistic software analysis. In PLDI, pages 123--132, 2014.
[11]
C. Boyapati, S. Khurshid, and D. Marinov. Korat: Automated testing based on java predicates. In ISSTA, pages 123--133, 2002.
[12]
J. Burnim, S. Juvekar, and K. Sen. Wise: Automated test generation for worst-case complexity. In ICSE, pages 463--473, 2009.
[13]
R. P. L. Buse and W. Weimer. The road not taken: Estimating path execution frequency statically. In ICSE, pages 144--154, 2009.
[14]
C. Cadar, D. Dunbar, and D. Engler. Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, pages 209--224, 2008.
[15]
S. Chattopadhyay, L. K. Chong, and A. Roychoudhury. Program performance spectrum. In LCTES, pages 65--76, 2013.
[16]
L. A. Clarke. A system to generate test data and symbolically execute programs. IEEE Trans. Softw. Eng., 2(3):215--222, 1976.
[17]
E. Coppa, C. Demetrescu, and I. Finocchi. Input-sensitive profiling. In PLDI, pages 89--98, 2012.
[18]
J. A. De Loera, B. Dutra, M. KöPpe, S. Moreinis, G. Pinto, and J. Wu. Software for exact integration of polynomials over polyhedra. Comput. Geom. Theory Appl., 46(3):232--252, 2013.
[19]
E. Duesterwald and V. Bala. Software profiling for hot path prediction: Less is more. In ASPLOS, pages 202--211, 2000.
[20]
A. Filieri, C. S. Pasareanu, and G. Yang. Quantification of software changes through probabilistic symbolic execution (N). In ASE, pages 703--708, 2015.
[21]
A. Filieri, C. S. Păsăreanu, and W. Visser. Reliability analysis in symbolic pathfinder. In ICSE, pages 622--631, 2013.
[22]
A. Filieri, C. S. Păsăreanu, W. Visser, and J. Geldenhuys. Statistical symbolic execution with informed sampling. In FSE, pages 437--448, 2014.
[23]
J. Geldenhuys, M. B. Dwyer, and W. Visser. Probabilistic symbolic execution. In ISSTA, pages 166--176, 2012.
[24]
M. Gittens, H. Lutfiyya, and M. Bauer. An extended operational profile model. In ISSRE, pages 314--325, 2004.
[25]
S. F. Goldsmith, A. S. Aiken, and D. S. Wilkerson. Measuring empirical computational complexity. In ESEC-FSE, pages 395--404, 2007.
[26]
M. Grechanik, C. Fu, and Q. Xie. Automatically finding performance problems with feedback-directed learning software testing. In ICSE, pages 156--166, 2012.
[27]
S. Gulwani, K. K. Mehra, and T. Chilimbi. Speed: Precise and efficient static estimation of program computational complexity. In POPL, pages 127--139, 2009.
[28]
G. Jin, L. Song, X. Shi, J. Scherpelz, and S. Lu. Understanding and detecting real-world performance bugs. In PLDI, pages 77--88, 2012.
[29]
C. Jung, S. Rus, B. P. Railing, N. Clark, and S. Pande. Brainy: Effective selection of data structures. In PLDI, pages 86--97, 2011.
[30]
J. C. King. Symbolic execution and program testing. Commun. ACM, 19(7):385--394, 1976.
[31]
S. Kounev. Performance modeling and evaluation of distributed component-based systems using queueing petri nets. IEEE Trans. Softw. Eng., 32(7):486--502, 2006.
[32]
H. Koziolek. Performance evaluation of component-based software systems: A survey. Perform. Eval., 67(8):634--658, 2010.
[33]
J. R. Larus. Whole program paths. In PLDI, pages 259--269, 1999.
[34]
X. Li, M. J. Garzarán, and D. Padua. A dynamically tuned sorting library. In CGO, pages 111--, 2004.
[35]
S. Liu and J. Zhang. Program analysis: From qualitative analysis to quantitative analysis. In ICSE (NIER Track), pages 956--959, 2011.
[36]
Y. Liu, C. Xu, and S.-C. Cheung. Characterizing and detecting performance bugs for smartphone applications. In ICSE, pages 1013--1024, 2014.
[37]
K. Luckow, C. S. Păsăreanu, M. B. Dwyer, A. Filieri, and W. Visser. Exact and approximate probabilistic symbolic execution for nondeterministic programs. In ASE, pages 575--586, 2014.
[38]
L. Luu, S. Shinde, P. Saxena, and B. Demsky. A model counter for constraints over unbounded strings. In PLDI, pages 565--576, 2014.
[39]
E. W. Myers. An o(nd) difference algorithm and its variations. Algorithmica, 1(1-4):251--266, 1986.
[40]
M. Nagappan, K. Wu, and M. A. Vouk. Efficiently extracting operational profiles from execution logs using suffix arrays. In ISSRE, pages 41--50, 2009.
[41]
A. Nistor, P.-C. Chang, C. Radoi, and S. Lu. Caramel: Detecting and fixing performance problems that have non-intrusive fixes. In ICSE, 2015.
[42]
A. Nistor, L. Song, D. Marinov, and S. Lu. Toddler: Detecting performance problems via similar memory-access patterns. In ICSE, pages 562--571, 2013.
[43]
C. Pasareanu, J. Schumann, P. Mehlitz, M. Lowry, G. Karsai, H. Nine, and S. Neema. Model based analysis and test generation for flight software. In SMC-IT, pages 83--90, 2009.
[44]
W. R. Pestman. Mathematical Statistics: An Introduction. Walter de Gruyter, 1998.
[45]
Q.-S. Phan, P. Malacaria, C. S. Păsăreanu, and M. D'Amorim. Quantifying information leaks using reliability analysis. In SPIN, pages 105--108, 2014.
[46]
C. Prud'homme, J.-G. Fages, and X. Lorca. Choco3 Documentation. TASC, INRIA Rennes, LINA CNRS UMR 6241, COSLING S.A.S., 2014.
[47]
C. S. Păsăreanu, W. Visser, D. Bushnell, J. Geldenhuys, P. Mehlitz, and N. Rungta. Symbolic PathFinder: Integrating symbolic execution with model checking for Java bytecode analysis. Automat. Softw. Eng., 20(3):391--425, 2013.
[48]
P. Puschner and A. Burns. Guest editorial: A review of worst-case execution-time analysis. Real-Time Systems, 18(2):115--128, 2010.
[49]
L. Ravindranath, J. Padhye, S. Agarwal, R. Mahajan, I. Obermiller, and S. Shayandeh. Appinsight: Mobile app performance monitoring in the wild. In OSDI, pages 107--120, 2012.
[50]
S. Sankaranarayanan, A. Chakarov, and S. Gulwani. Static analysis for probabilistic programs: Inferring whole program properties from finitely many paths. In PLDI, pages 447--458, 2013.
[51]
A. Sarkar, J. Guo, N. Siegmund, S. Apel, and K. Czarnecki. Cost-efficient sampling for performance prediction of configurable systems. In ASE, 2015.
[52]
O. Shacham, M. Vechev, and E. Yahav. Chameleon: Adaptive selection of collections. In PLDI, pages 408--418, 2009.
[53]
D. Shen, Q. Luo, D. Poshyvanyk, and M. Grechanik. Automating performance bottleneck detection using search-based application profiling. In ISSTA, pages 270--281, 2015.
[54]
N. Siegmund, S. S. Kolesnikov, C. Kästner, S. Apel, D. Batory, M. Rosenmüller, and G. Saake. Predicting performance via automated feature-interaction detection. In ICSE, pages 167--177, 2012.
[55]
R. Tawhid and D. Petriu. Automatic derivation of a product performance model from a software product line model. In SPLC, pages 80--89, 2011.
[56]
R. Wilhelm, J. Engblom, A. Ermedahl, N. Holsti, S. Thesing, D. Whalley, G. Bernat, C. Ferdinand, R. Heckmann, T. Mitra, F. Mueller, I. Puaut, P. Puschner, J. Staschulat, and P. Stenström. The worst-case execution-time problem -- Overview of methods and survey of tools. ACM Trans. Embed. Comput. Syst., 7(3):36:1--36:53, 2008.
[57]
C.-Q. Yang and B. Miller. Critical path analysis for the execution of parallel and distributed programs. In ICDCS, pages 366--373, 1988.
[58]
D. Zaparanuks and M. Hauswirth. Algorithmic profiling. In PLDI, pages 67--76, 2012.
[59]
J. Zhang. Performance estimation using symbolic data. In Theories of Programming and Formal Methods, pages 346--353. 2013.
[60]
L. Zhang, D. R. Bild, R. P. Dick, Z. M. Mao, and P. Dinda. Panappticon: Event-based tracing to measure mobile application and platform performance. In CODES+ISSS, pages 33:1--33:10, 2013.
[61]
P. Zhang, S. Elbaum, and M. B. Dwyer. Automatic generation of load tests. In ASE, pages 43--52, 2011.

Cited By

View all
  • (2024)Identifying Performance Issues in Microservice Architectures through Causal ReasoningProceedings of the 5th ACM/IEEE International Conference on Automation of Software Test (AST 2024)10.1145/3644032.3644460(149-153)Online publication date: 15-Apr-2024
  • (2024)Titan : Efficient Multi-target Directed Greybox Fuzzing2024 IEEE Symposium on Security and Privacy (SP)10.1109/SP54263.2024.00059(1849-1864)Online publication date: 19-May-2024
  • (2023)Finding Short Slow Inputs Faster with Grammar-Based SearchProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598118(1068-1079)Online publication date: 12-Jul-2023
  • Show More Cited By

Index Terms

  1. Generating performance distributions via probabilistic symbolic execution

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE '16: Proceedings of the 38th International Conference on Software Engineering
    May 2016
    1235 pages
    ISBN:9781450339001
    DOI:10.1145/2884781
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 14 May 2016

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. performance analysis
    2. symbolic execution

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    ICSE '16
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)29
    • Downloads (Last 6 weeks)5
    Reflects downloads up to 11 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Identifying Performance Issues in Microservice Architectures through Causal ReasoningProceedings of the 5th ACM/IEEE International Conference on Automation of Software Test (AST 2024)10.1145/3644032.3644460(149-153)Online publication date: 15-Apr-2024
    • (2024)Titan : Efficient Multi-target Directed Greybox Fuzzing2024 IEEE Symposium on Security and Privacy (SP)10.1109/SP54263.2024.00059(1849-1864)Online publication date: 19-May-2024
    • (2023)Finding Short Slow Inputs Faster with Grammar-Based SearchProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598118(1068-1079)Online publication date: 12-Jul-2023
    • (2023)ETAP: Energy-aware Timing Analysis of Intermittent ProgramsACM Transactions on Embedded Computing Systems10.1145/356321622:2(1-31)Online publication date: 25-Jan-2023
    • (2023)A Large-Scale Empirical Study of Real-Life Performance Issues in Open Source ProjectsIEEE Transactions on Software Engineering10.1109/TSE.2022.316762849:2(924-946)Online publication date: 1-Feb-2023
    • (2022)Symbolic execution for randomized programsProceedings of the ACM on Programming Languages10.1145/35633446:OOPSLA2(1583-1612)Online publication date: 31-Oct-2022
    • (2022)Microservices integrated performance and reliability testingProceedings of the 3rd ACM/IEEE International Conference on Automation of Software Test10.1145/3524481.3527233(29-39)Online publication date: 17-May-2022
    • (2022)PReachProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510227(1706-1717)Online publication date: 21-May-2022
    • (2022)Multi-intention-aware configuration selection for performance tuningProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510094(1431-1442)Online publication date: 21-May-2022
    • (2022)Conditional Quantitative Program AnalysisIEEE Transactions on Software Engineering10.1109/TSE.2020.301677848:4(1212-1227)Online publication date: 1-Apr-2022
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media