A Framework for Building LinuxBased SinglePurpose Appliances Optimized for the Cloud Cloudspecialized OSes improve performance and efficiency of cloud applications by specializing their kernels to their target applications. Existing cloudspecialized OSes such as OSv and Unikernels are developed from the ground up and requires substantial porting efforts, resulting in the following drawbacks: 1) their functionalities are not as rich as generalpurpose OSes, 2) some features are not optimized well, 3) the API compatibility with generalpurpose OSes is limited, and 4) maintenance independent of existing development communities is required. To mitigate these drawbacks, we propose a Linuxbased execution environment that can be specialized in the cloud but keeps the functionalities of Linux. The proposed environment enables inkernel execution of existing applications, and the compiletime wholesystem optimization beyond the applicationkernel boundary. Memcached, running in our environment, shows 10% better throughput than the OSv version.

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.