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.