Adaptive Cloud Application Tuning with Enhanced Structural Bayesian Optimization Bayesian optimization has been widely applied on the performance tuning for workloads such as: large web applications running on Java Virtual Machine (JVM), parallel databases such as Hive  HBase, and Hive on Spark. However, with the rapidly expanding search space of these complex and large applications on cloud, the evaluation phase takes inordinate amount of time, rendering Bayesian optimization ineffective. In this paper, we propose a novel Bayesian optimization based framework, called, Adaptive Cloud Application Optimization Framework (ACAOF) to efficiently and optimally tune the performance of cloud workloads via significantly pruning the search space. We conducted extensive evaluations on ACAOF to compare with nonoptimized Bayesian optimization on multiple categories of cloud workloads. The results demonstrate that the ACAOF outperforms approximately by up to 218%. The comparison with other machine learning techniques such as Random Search, Neural Network, Genetic Algorithm and Hill Climb also shows the significant effectiveness of ACAOF.

ParaOpt: Automated Application Parameterization and Optimization for the Cloud The variety of instance types available on cloud platforms offers enormous flexibility to match the requirements of applications with available resources. However, selecting the most suitable instance type and configuring an application to optimally execute on that instance type can be complicated and timeconsuming. For example, application parallelism flags must match available cores and problem sizes must be tuned to match available memory. As the search space of application configurations can be enormous, we propose an automated approach, called ParaOpt, to automatically explore and tune application configurations on arbitrary cloud instances. ParaOpt supports arbitrary applications, enables use of custom optimization methods, and can be configured with different optimization targets such as runtime and cost. We evaluate ParaOpt by optimizing genomics, molecular dynamics, and machine learning applications with four types of optimizers. We show with as few as 15 parameterized executions of an application, representing between 1.2%26.7% of the search space, that ParaOpt is able to identify the optimal configuration in 32.7% of experiments and a nearoptimal configuration in 83.2% of cases. As a result of using nearoptimal configurations, ParaOpt reduces overall execution time by up to 85.8% when compared with using the default configuration.