As a result of varying demands of computing resources by the users on cloud, resource provisioning in cloud computing has come out as a prominent topic of research. Many researchers have focused exclusively on the technical and security aspects of cloud computing, thereby neglecting the efficient provisioning of resources and the necessity of cloud services to be cost effective. Cloud consists of a large number of resources that are allocated to cloud customer's on-demand. As demands cannot be static and constantly change with time, cloud service providers cannot adopt static provisioning of resources as there are chances of overprovisioning or under-provisioning. Therefore, to achieve efficient resource utilization, an optimized strategy that can deploy virtual machines on different physical machines according to resource requirements is the current need of cloud computing. That is, there must be a mechanism by which the total number of active physical nodes can be dynamically changed corresponding to their resource usage rate, thereby providing the efficient utilization of resources. In this paper, a linear regression-based prediction model is proposed to predict the resource usage based on the number of function points computed from the users' requests. Thereafter, the artificial neural network is also used to predict the future resource requirements more accurately. The predicted resource usage results are used by a resource pool manager to manage the resources and allocate them to the users. The resource pool manager also uses an efficient load-balancing algorithm to balance the load on each cloud service provider as well as to optimize cloud usage cost. With the help of this prediction model, the decision to allocate or release a virtual machine can be made proactively, thus making the cloud effective in terms of both cost and performance. capital costs. Moreover, it eliminates the overhead of procuring traditional infrastructure resources, which typically takes several months [1,2].Cloud can provision its resources dynamically as per the requirements of the end user. It provides virtually unlimited computational resources to end users, and the users have to pay only for the resources they actually use at any given time interval. Cloud providers offer resources to the users on demand using various schemes based on on-demand instances, reserved instances and spot instances. Cloud services such as Amazon EC2 and Google App Engine are designed to take the advantage of their already existing infrastructure [3].The major contribution in the success of cloud computing is of virtualization technology. Virtualization technologies allow one to create multiple virtual machines (VMs) on one or more physical machines. Infrastructure-as-a-service providers run as many as possible VMs to fully utilize the capacity of their resources. Once VMs are assigned on physical machines, they are ready to run applications, which provide services to the cloud customers through the Internet. As the number of user requests cannot rema...