ConfigCrusher: towards white-box performance analysis for configurable systems

Stakeholders of configurable systems are often interested in knowing how configuration options influence the performance of a system to facilitate, for example, the debugging and optimization processes of these systems. Several black-box approaches can be used to obtain this information, but they either sample a large number of configurations to make accurate predictions or miss important performance-influencing interactions when sampling few configurations. Furthermore, black-box approaches cannot pinpoint the parts of a system that are responsible for performance differences among configurations. This article proposes ConfigCrusher, a white-box performance analysis that inspects the implementation of a system to guide the performance analysis, exploiting several insights of configurable systems in the process. ConfigCrusher employs a static data-flow analysis to identify how configuration options may influence control-flow statements and instruments code regions, corresponding to these statements, to dynamically analyze the influence of configuration options on the regions’ performance. Our evaluation on 10 configurable systems shows the feasibility of our white-box approach to more efficiently build performance-influence models that are similar to or more accurate than current state of the art approaches. Overall, we showcase the benefits of white-box performance analyses and their potential to outperform black-box approaches and provide additional information for analyzing configurable systems.

[1]  Thomas H. Austin,et al.  Multiple facets for dynamic information flow , 2012, POPL '12.

[2]  Norbert Siegmund,et al.  Transfer learning for performance modeling of configurable systems: An exploratory analysis , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[3]  HoffmannHenry,et al.  Dynamic knobs for responsive power-aware computing , 2011 .

[4]  David Garlan,et al.  Model-Based Adaptation for Robotics Software , 2019, IEEE Software.

[5]  Tingting Yu,et al.  Pinpointing and repairing performance bottlenecks in concurrent programs , 2017, Empirical Software Engineering.

[6]  Tingting Yu,et al.  An Empirical Study on Performance Bugs for Highly Configurable Software Systems , 2016, ESEM.

[7]  Thomas H. Austin,et al.  Efficient purely-dynamic information flow analysis , 2009, PLAS '09.

[8]  Marcelo d'Amorim,et al.  Balancing Soundness and Efficiency for Practical Testing of Configurable Systems , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[9]  Gunter Saake,et al.  A Classification and Survey of Analysis Strategies for Software Product Lines , 2014, ACM Comput. Surv..

[10]  Long Jin,et al.  Hey, you have given me too many knobs!: understanding and dealing with over-designed configuration in system software , 2015, ESEC/SIGSOFT FSE.

[11]  David Lo,et al.  ORPLocator: Identifying Read Points of Configuration Options via Static Analysis , 2016, 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE).

[12]  Krzysztof Czarnecki,et al.  Transferring Performance Prediction Models Across Different Hardware Platforms , 2017, ICPE.

[13]  Sam Malek,et al.  Ieee Transactions on Software Engineering 1 a Learning-based Framework for Engineering Feature-oriented Self-adaptive Software Systems , 2022 .

[14]  Harald C. Gall,et al.  PerformanceHat – Augmenting Source Code with Runtime Performance Traces in the IDE , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[15]  Myra B. Cohen,et al.  Navigating the Maze: The Impact of Configurability in Bioinformatics Software , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[16]  Anders Møller,et al.  Systematic approaches for increasing soundness and precision of static analyzers , 2017, SOAP@PLDI.

[17]  Marcelo d'Amorim,et al.  Static Analysis of Implicit Control Flow: Resolving Java Reflection and Android Intents (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[18]  Sven Apel,et al.  Performance-influence models for highly configurable systems , 2015, ESEC/SIGSOFT FSE.

[19]  Krzysztof Czarnecki,et al.  A user survey of configuration challenges in Linux and eCos , 2012, VaMoS '12.

[20]  Henry Hoffmann,et al.  Dynamic knobs for responsive power-aware computing , 2011, ASPLOS XVI.

[21]  Adam A. Porter,et al.  Using symbolic evaluation to understand behavior in configurable software systems , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[22]  Arnaud Gotlieb,et al.  Practical minimization of pairwise-covering test configurations using constraint programming , 2016, Inf. Softw. Technol..

[23]  Derek Rayside,et al.  Comparison of exact and approximate multi-objective optimization for software product lines , 2014, SPLC.

[24]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.

[25]  Shu Wang,et al.  Understanding and Auto-Adjusting Performance-Sensitive Configurations , 2018, ASPLOS.

[26]  Yan Wang,et al.  On the unsoundness of static analysis for Android GUIs , 2016, SOAP@PLDI.

[27]  Sarfraz Khurshid,et al.  Reducing combinatorics in testing product lines , 2011, AOSD '11.

[28]  Ramesh Govindan,et al.  Estimating mobile application energy consumption using program analysis , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[29]  Giuliano Casale,et al.  An Uncertainty-Aware Approach to Optimal Configuration of Stream Processing Systems , 2016, 2016 IEEE 24th International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunication Systems (MASCOTS).

[30]  Alessandra Gorla,et al.  Mining Apps for Abnormal Usage of Sensitive Data , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[31]  Mor Harchol-Balter,et al.  Performance Modeling and Design of Computer Systems: Queueing Theory in Action , 2013 .

[32]  Sebastian Krieter,et al.  IncLing: efficient product-line testing using incremental pairwise sampling , 2016, GPCE.

[33]  Sven Apel,et al.  Family-based performance measurement , 2014 .

[34]  Edgar Brunner,et al.  Rank-based multiple test procedures and simultaneous confidence intervals , 2012 .

[35]  Tingting Yu,et al.  PerfLearner: Learning from Bug Reports to Understand and Generate Performance Test Frames , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[36]  Myra B. Cohen,et al.  Configurations everywhere: implications for testing and debugging in practice , 2014, ICSE Companion.

[37]  Sarfraz Khurshid,et al.  SPLat: lightweight dynamic analysis for reducing combinatorics in testing configurable systems , 2013, ESEC/FSE 2013.

[38]  Gunter Saake,et al.  On essential configuration complexity: Measuring interactions in highly-configurable systems , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[39]  Yingying Wang,et al.  Analyzing the analyzers: FlowDroid/IccTA, AmanDroid, and DroidSafe , 2018, ISSTA.

[40]  Alireza Sadeghi,et al.  Energy-aware test-suite minimization for Android apps , 2016, ISSTA.

[41]  Eric Bodden,et al.  Self-Adaptive Static Analysis , 2017, 2018 IEEE/ACM 40th International Conference on Software Engineering: New Ideas and Emerging Technologies Results (ICSE-NIER).

[42]  Adam A. Porter,et al.  iGen: dynamic interaction inference for configurable software , 2016, SIGSOFT FSE.

[43]  Yu Lei,et al.  Introduction to Combinatorial Testing , 2013 .

[44]  Gunter Saake,et al.  SPL Conqueror: Toward optimization of non-functional properties in software product lines , 2012, Software Quality Journal.

[45]  Yuanyuan Zhou,et al.  Do not blame users for misconfigurations , 2013, SOSP.

[46]  Zhendong Su,et al.  Context-sensitive data-dependence analysis via linear conjunctive language reachability , 2017, POPL.

[47]  Byung-Gon Chun,et al.  TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones , 2010, OSDI.

[48]  Christian Bird,et al.  Mining energy traces to aid in software development: an empirical case study , 2014, ESEM '14.

[49]  Eric Petit,et al.  CERE: LLVM-Based Codelet Extractor and REplayer for Piecewise Benchmarking and Optimization , 2015, TACO.

[50]  GeorgesAndy,et al.  Statistically rigorous java performance evaluation , 2007 .

[51]  Christian Kästner,et al.  Transfer Learning for Improving Model Predictions in Highly Configurable Software , 2017, 2017 IEEE/ACM 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[52]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.

[53]  Eric Bodden,et al.  IDEal: efficient and precise alias-aware dataflow analysis , 2017, Proc. ACM Program. Lang..

[54]  Benjamin Livshits,et al.  Just-in-time static analysis , 2016, ISSTA.

[55]  Sven Apel,et al.  Variability-aware performance prediction: A statistical learning approach , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[56]  Boris Koldehofe,et al.  Quality-Aware Runtime Adaptation in Complex Event Processing , 2017, 2017 IEEE/ACM 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[57]  Randy H. Katz,et al.  Static extraction of program configuration options , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[58]  Eric Bodden,et al.  Tracking Load-Time Configuration Options , 2018, IEEE Trans. Software Eng..

[59]  FlanaganCormac,et al.  Precise, dynamic information flow for database-backed applications , 2016 .

[60]  Sharon Goldberg,et al.  Rethinking security for internet routing , 2016, Commun. ACM.

[61]  Christian Bird,et al.  What developers want and need from program analysis: An empirical study , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[62]  Steffen Becker,et al.  The Palladio component model for model-driven performance prediction , 2009, J. Syst. Softw..

[63]  Bo Wang,et al.  SmartFixer: fixing software configurations based on dynamic priorities , 2013, SPLC '13.

[64]  Jacques Klein,et al.  FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps , 2014, PLDI.

[65]  Arnaud Gotlieb,et al.  PACOGEN: Automatic Generation of Pairwise Test Configurations from Feature Models , 2011, 2011 IEEE 22nd International Symposium on Software Reliability Engineering.

[66]  Don S. Batory,et al.  Finding near-optimal configurations in product lines by random sampling , 2017, ESEC/SIGSOFT FSE.

[67]  Armando Solar-Lezama,et al.  Precise, dynamic information flow for database-backed applications , 2015, PLDI.

[68]  Tao Xie,et al.  PerfRanker: prioritization of performance regression tests for collection-intensive software , 2017, ISSTA.

[69]  Mira Mezini,et al.  Access-Path Abstraction: Scaling Field-Sensitive Data-Flow Analysis with Unbounded Access Paths (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[70]  Gail E. Kaiser,et al.  Phosphor: illuminating dynamic data flow in commodity jvms , 2014, OOPSLA.

[71]  Sven Apel,et al.  A Comparison of 10 Sampling Algorithms for Configurable Systems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[72]  Giuseppe Serazzi,et al.  Java Modelling Tools: an Open Source Suite for Queueing Network Modelling andWorkload Analysis , 2006, Third International Conference on the Quantitative Evaluation of Systems - (QEST'06).

[73]  Andreas Grimmer,et al.  Configuration-Aware Change Impact Analysis (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[74]  Eric Bodden,et al.  Do Android taint analysis tools keep their promises? , 2018, ESEC/SIGSOFT FSE.

[75]  Christian Kästner,et al.  Learning to sample: exploiting similarities across environments to learn performance models for configurable systems , 2018, ESEC/SIGSOFT FSE.

[76]  Sven Apel,et al.  Tradeoffs in modeling performance of highly configurable software systems , 2018, Software & Systems Modeling.

[77]  Gunter Saake,et al.  Predicting performance via automated feature-interaction detection , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[78]  Marcelo d'Amorim,et al.  Time-space efficient regression testing for configurable systems , 2017, J. Syst. Softw..

[79]  Benjamin Livshits,et al.  Toward full elasticity in distributed static analysis: the case of callgraph analysis , 2017, ESEC/SIGSOFT FSE.

[80]  Ding Li,et al.  Lightweight Measurement and Estimation of Mobile Ad Energy Consumption , 2016, 2016 IEEE/ACM 5th International Workshop on Green and Sustainable Software (GREENS).

[81]  Sven Apel,et al.  Cost-Efficient Sampling for Performance Prediction of Configurable Systems (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[82]  Mathieu Acher,et al.  Test them all, is it worth it? Assessing configuration sampling on the JHipster Web development stack , 2017, Empirical Software Engineering.

[83]  Lieven Eeckhout,et al.  Statistically rigorous java performance evaluation , 2007, OOPSLA.

[84]  Hareton K. N. Leung,et al.  A survey of combinatorial testing , 2011, CSUR.

[85]  Kevin Leyton-Brown,et al.  Sequential Model-Based Optimization for General Algorithm Configuration , 2011, LION.

[86]  Yuqing Zhu,et al.  BestConfig: tapping the performance potential of systems via automatic configuration tuning , 2017, SoCC.