This document discusses resource provisioning algorithms for resource allocation in cloud computing. It begins by introducing distributed computing and cloud computing, and how effective resource management is important for cloud suppliers and users. The existing systems of using virtual machines (VMs) to map to physical resources is described, along with its disadvantages such as not adapting well to heterogeneous demands. The proposed system aims to dynamically allocate resources to meet VM demands while minimizing physical machine usage. It introduces the concept of "skewness" to measure uneven resource usage across machines. The system design and literature survey on related topics like load balancing and green computing are also summarized.