Clouds provide to users on-demand access to large computing and storing resources and offer over on premise IT infrastructures many advantages in terms of cost, flexibility, and availability.However, this new paradigm still faces many challenges, and in this paper, we address the load balancing problem. Even though many approaches have been proposed to balance the load among the servers, most of them are too sensitive to the fluctuation in the clouds load and produce unstable systems. In this paper, we propose a new distributed load balancing algorithm, based on adaptive starvation threshold. It tries to balance the load between the servers while minimizing the response time of the cloud, maximizing the utilization rate of the servers, decreasing the overall migration cost, and maintaining the stability of the system.The performance of the proposed algorithm was compared to a well-known load balancing algorithm, inspired from the honey bee behavior (HBB). The experimental results showed that the application of the proposed load balancing algorithm gives considerable performance gains and a significant reduction in number of migrations when compared to the performance of the HBB algorithm.
KEYWORDScloud computing, distributed systems, load balancing, virtualization
INTRODUCTIONCloud computing is a very promising technology which enables users on-demand network access to a shared set of computing and storing resources. The Infrastructure as a Service (IaaS) is the lowest-level cloud service paradigm where the cloud provides shared hardware and software to meet users' demands. In IaaS, a virtual machine (VM) is endowed with processing power, memory, and permanent storage to execute its assigned tasks within a reasonable time. 1 Since in a Cloud, VMs might be heterogeneous and the job arrival time is not predictable, an efficient and user-transparent workload control of the VMs is essential to improve the overall performance of the cloud.In this paper, it is assumed that tasks of random size arrive at random intervals and get randomly allocated to data centers. Therefore, the heterogeneous VMs composing the cloud do not get the same load and an efficient load balancing algorithm must be applied to dynamically balance the load between the VMs according to their capacities. It should also improve the total occupancy of the computing resources and thus speed up the execution time of the user-submitted applications. Moreover, it should guarantee the good quality of service (QoS) of the cloud by reducing its response time and ensuring its scalability and fault tolerance regardless of the heterogeneity of its VMs.A typical load balancing algorithm includes the information, location, transfer, and selection policies. 2,3 The information policy is responsible for updating the load information and specifying how it should be collected. The location policy selects the appropriate resources for a job transfer.The transfer policy uses the resources load information to decide when to perform load balancing and to determine when a...