Building CPU Stubs to Optimize CPU Bound Systems: An Application of Dynamic Performance Stubs

Dynamic performance stubs provide a framework for the simulation of the performance behavior of software modules and functions. Hence, they can be used as an exten- sion to software performance engineering methodologies. The methodology of dynamic performance stubs can be used for a gain oriented performance improvement. It is also possible to identify "hidden" bottlenecks and to prioritize optimization possibilities. Nowadays, the processing power of CPUs is mainly increased by adding more cores to the architecture. To have benefits from this, new software is mostly designed for parallel processing, especially, in large software projects. As software performance optimizations can be difficult in these environments, new methodologies have to be defined. This paper evaluates a possibility to simulate the functional behavior of software algorithms by the use of the simulated software functionality. These can be used by the dynamic performance stub framework, e.g., to build a CPU stub, to replace the algorithm. Thus, it describes a methodology as well as an implementation and evaluates both in an industrial case study. Moreover, it presents an extension to the CPU stubs by applying these stubs to simulate multi-threaded applications. The extension is evaluated by a case study as well. We show show that the functionality of software algorithms can be replaced by software simulation functions. This stubbing approach can be used to create dynamic performance stubs, such as CPU stubs. Additionally, we show that the concept of CPU stubs can be applied to multi-threaded applications. Keywords-software performance optimization; CPU bound sys- tems; simulated software functionality; stubs; multi-core; multi- threaded

[1]  Neil J. Gunther,et al.  The Practical Performance Analyst , 1998 .

[2]  Christian Facchi,et al.  How to Handle CPU Bound Systems: A Spezialization of Dynamic Performance Stubs to CPU Stubs , 2008, Int. CMG Conference.

[3]  Scott A. Chapman Finding the Critical Path - A Simple Approach , 2009, Int. CMG Conference.

[4]  Ray Jain,et al.  The art of computer systems performance analysis - techniques for experimental design, measurement, simulation, and modeling , 1991, Wiley professional computing.

[5]  Ulrich Herzog,et al.  Formal Methods for Performance Evaluation , 2002, European Educational Forum: School on Formal Methods and Performance Analysis.

[6]  John M. Mellor-Crummey,et al.  Application Insight Through Performance Modeling , 2007, 2007 IEEE International Performance, Computing, and Communications Conference.

[7]  David J. Lilja,et al.  Measuring computer performance : A practitioner's guide , 2000 .

[8]  Christian Facchi,et al.  Main Memory Stubs to Simulate Heap and Stack Memory Behavior , 2010, Int. CMG Conference.

[9]  A. Bertolino,et al.  A Brief Essay on Software Testing , 2004 .

[10]  Donald J. Reifer The smart stub as a software management tool , 1976, SOEN.

[11]  Farooq Khan,et al.  LTE for 4G Mobile Broadband: Air Interface Technologies and Performance , 2009 .

[12]  Dan Tsafrir,et al.  The context-switch overhead inflicted by hardware interrupts (and the enigma of do-nothing loops) , 2007, ExpCS '07.

[13]  Christian Facchi,et al.  Echtzeitverhalten durch die Verwendung von CPU Stubs: Eine Erweiterung von Dynamic Performance Stubs , 2009, Echtzeit.

[14]  Eli Tilevich,et al.  Efficient automated marshaling of C++ data structures for MPI applications , 2008, 2008 IEEE International Symposium on Parallel and Distributed Processing.

[15]  Wesley Tansey,et al.  Automated Adaptive Software Maintenance: A Methodology and Its Applications , 2008 .

[16]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[17]  Dan Tsafrir,et al.  System noise, OS clock ticks, and fine-grained parallel applications , 2005, ICS '05.

[18]  Ram Srinivasan,et al.  MonteSim: a Monte Carlo performance model for in-order microachitectures , 2005, CARN.

[19]  Paul J. Fortier,et al.  Computer Systems Performance Evaluation and Prediction , 2003 .

[20]  Connie U. Smith,et al.  Introduction to Software Performance Engineering: Origins and Outstanding Problems , 2007, SFM.

[21]  Anders Fugmann Scheduling algorithms for Linux , 2002 .

[22]  Peter Trapp,et al.  Performance Improvements Using Dynamic Performance Stubs , 2011 .

[23]  Christian Facchi,et al.  Using CPU Stubs to Optimize Parallel Processing Tasks: An Application of Dynamic Performance Stubs , 2010, 2010 Fifth International Conference on Software Engineering Advances.

[24]  Brian A. Malloy,et al.  A tool chain for reverse engineering C++ applications , 2007, Sci. Comput. Program..

[25]  Daniel Pierre Bovet,et al.  Understanding the Linux Kernel , 2000 .

[26]  John J. Marciniak,et al.  Encyclopedia of Software Engineering , 1994, Encyclopedia of Software Engineering.

[27]  D. Feitelson,et al.  Time Stamp Counters Library - Measurements with Nano Seconds Resolution , 2000 .

[28]  Sebastian Bittl,et al.  The Concept of Memory Stubs as a Specialization of Dynamic Performance Stubs to Simulate Memory Access Behavior , 2009 .

[29]  Jonathan I. Maletic,et al.  An XML-Based Lightweight C++ Fact Extractor , 2003, IWPC.

[30]  Ian Sommerville,et al.  Software engineering (6th ed.) , 2001 .

[31]  Connie U. Smith,et al.  Best Practices for Software Performance Engineering , 2003, Int. CMG Conference.