| Cloud computing provides users and enterprises shared pools of resources to store and process their data. To provide quality-of-service guarantees for customers and reduce resource wastage, how to manage resources becomes a crucial problem for cloud providers. In this thesis, we propose and implement different approaches for resource optimization with various objectives. Resource optimization algorithms used by cloud providers have a significant impact on the performance of virtual machines (VMs) that users rent for computation as well as the ability for datacenters to accommodate user requests. We propose a multi-dimensional online VM placement algorithm that can balance the usage of resources along multiple dimensions and improve VM performance effectively. There are also some applications like geo-replication that need to transfer data across datacenters within a time period. We propose and implement an efficient solution that maximizes throughput for multiple concurrent inter-datacenter multicast transfers while meeting their deadlines. |