Abstract:
Auto-Tuning Multi Tiered Applications for Performance With the widespread use of cluster-based environments, getting the maximum possible performance from multi-tiered web applications becomes an important task. The large numbers of configurable parameters in such environments and applications, however, makes manual performance tuning (i.e., searching for and identifying key parameters that affect performance and optimal values for those parameters) extremely difficult, if not virtually impossible. The problem becomes further complicated because the key parameters and/or their optimal values will vary across environments, applications and workloads. In this work, we explore the autotuning approach, which is generally used to automatically tune the performance of programs in traditional HPC settings, to tune multi-tiered web applications. Our approach is based on OpenTuner, a framework used to build auto-tuners to search through a configuration space for an optimal configuration. Even for this autotuning approach, the wide variations and the dynamic nature in the runtime environment, such as network congestion, variations in demand, possible node failures and changes in workloads pose a significant challenge. In this work, we explore offline and online tuning techniques to overcome the challenges of autotuning multi-tiered applications. We present results of offline autotuning experiments that tuned benchmark applications for multiple performance goals. We show that 20% - 25% improvements in response time and throughput can be achieved through our offline autotuning approach. We present a way of reducing the tuning time by pruning the configuration space. We identify the parameters in web servers that contribute most to performance. We also show that different performance goals can lead to differences in configurations and discuss the shortcomings of offline autotuning methods. We also take a look at online tuning methods and show that online tuning of multi-tiered applications is feasible.