Predicting the performance of software systems

With the advent of distributed and multi-processor computing, systems of cooperating processes have become an attractive alternative to monolithic programs. In such software systems it is often possible to alter the degree of parallelism within a program, and for the parallel threads to synchronize and communicate. There is a likelihood that processes will incur delays for both hardware and software resources. The resulting performance behaviour can be di cult to understand without the use of performance modelling tools. The purpose of this thesis is to develop analytical performance modelling techniques that can be used to study software systems. In particular, xed sets of processes and several communication and synchronization mechanisms are considered. Predicting the Performance of Software Systems by Jerome Alexander Rolia A Thesis submitted in conformity with the requirements for the Degree of Doctor of Philosophy in the University of Toronto January, 1992 c Copyright by Jerome Alexander Rolia 1992 Abstract Jerome Alexander Rolia University of Toronto Department of Computer Science January, 1992 With the advent of distributed and multi-processor computing, systems of cooperating processes have become an attractive alternative to monolithic programs. In such software systems it is often possible to alter the degree of parallelism within a program, and for the parallel threads to synchronize and communicate. There is a likelihood that processes will incur delays for both hardware and software resources. The resulting performance behaviour can be di cult to understand without the use of performance modelling tools. The purpose of this thesis is to develop analytical performance modelling techniques that can be used to study software systems. In particular, xed sets of processes and several communication and synchronization mechanisms are considered.Jerome Alexander Rolia University of Toronto Department of Computer Science January, 1992 With the advent of distributed and multi-processor computing, systems of cooperating processes have become an attractive alternative to monolithic programs. In such software systems it is often possible to alter the degree of parallelism within a program, and for the parallel threads to synchronize and communicate. There is a likelihood that processes will incur delays for both hardware and software resources. The resulting performance behaviour can be di cult to understand without the use of performance modelling tools. The purpose of this thesis is to develop analytical performance modelling techniques that can be used to study software systems. In particular, xed sets of processes and several communication and synchronization mechanisms are considered. Acknowledgements I would like to thank my supervisor Ken Sevcik for the inspiration, guidance, and friendship o ered throughout my studies. My years at the University were enriched by his discussion and detailed criticism of the ideas presented in this thesis. My thanks to the members of my committee: Mart Molle, Vassos Hadzilacos, Songnian Zhou, Dave Wortman, and Eugene Fiume. Their many insightful comments improved this thesis in countless ways. I am grateful to Connie Smith who was the external examiner. Her contributions to software performance engineering in uenced my studies, and her support made my work all the more satisfying. Dr. M. Posner was kind to participate in my Senate Oral. My family and friends contributed greatly to my work with their unending encouragement. In particular, I thank my father for listening, my mother for her desire to help, and my girlfriend Elvira for her love and care. My dear friends from Victor Avenue kept my spirits high! Financial assistance was provided by the University of Toronto, the Department of Computer Science of the University of Toronto, and the National Science and Engineering Research Council of Canada. The IBM Canada Laboratory provided computing facilities for the development and execution of the applications considered in this thesis. 1