Scheduling and managing cloud resources presents a new set of challenges when compared to more traditional resource pooling models, such as grid and cluster computing. First of all, the monetary costs change dynamically based on the amount of resources used, which prevents users from greedily acquiring as many resources as possible. Secondly, the wide variety of options of virtualised hardware specification makes it difficult for users to select the most appropriate options for their applications.
This research project focuses on optimising the usage of cloud computing resources. We propose approaches for scheduling the execution of applications on the cloud such that the desired performance is met while the incurred monetary costs are minimised. Furthermore, we propose a set of mechanisms which manage an execution at runtime in order to detect and handle unexpected events that can result in undesirable consequences, such as violations of quality of service metrics, or cost overhead.