Automatic Performance modelling of Multithreaded Java Programs

92
Следующее
Популярные
Опубликовано 21 июня 2016, 21:31
Performance of the software system depends on various factors, such as the properties of the underlying hardware, characteristics of the system's workload, and configuration options of the program, such as the number of working threads. Understanding dependency between the configuration of the system and its performance is essential for many applications. However, this remains a challenging task, especially for multithreaded programs. Multiple threads use various locking operations, resulting in the parallel execution of some computations and the sequential execution of others. Threads use computational resources such as CPU or disks simultaneously, which may lead to their saturation. The result is a complex non-linear dependency between the configuration of a multithreaded program and its performance. To better understand this dependency, a performance prediction model is used. Such a model predicts the performance of a system for different configurations. Configurations reflect variations in the workload, program options such as the number of threads, and characteristics of the hardware. Such models are complex and require a solid understanding of the program’s behaviour. As a result, building models of complex applications manually is extremely time-consuming and error-prone. In this talk we present an approach for building performance models of large multithreaded programs automatically. We employ hierarchical discrete-event performance models. The higher-level queuing model simulates the data flow within the program; the mid-level model simulates behaviour of the program's threads; and low-level model simulates shared resources. We extract information necessary for constructing the model using a combination of static and dynamic analyses of a program under study. This includes information about the structure of the program, the semantics of interaction between the program's threads, and resource demands of individual program's components. The discovered information is translated into the discrete-event model of the program. To verify our approach we constructed performance models of large complex programs: the Sunflow 3D renderer and the Apache Tomcat web server and servlet container. Our models predict performance of these programs across a range of configurations with a reasonable degree of accuracy.
автотехномузыкадетское