The goal of the project is to develop methods and tools for performance engineering tasks. We focus on how to build performance models from trace data and how to use those models for various performance engineering exercises: capacity planning, problem determination, estimation of non-measurable parameters, trend analysis, dynamic adaptation, etc. We focus on two main research questions: (a) how to build accurate models at run time, with minimum user intervention and with minimum measurement overhead and (b) how to make the models usable in runtime self optimization and self healing. A performance model captures the quantitative relationships between different resources and metrics of the software system. The model can be a simulation model, a regression model, a queuing model or a combination of the above. A special type of performance models are Layered Queuing Models, which model layers of the software system and the queuing time at software resources such as thread and connection pools, critical sections, semaphores, etc.. A performance engineer can use this performance model in lieu of the real system when performing performance engineering tasks. |