Keywords

1 Introduction

Cloud computing basically refers to various services and applications that are delivered from distinguished data centres throughout the world. Such application services are delivered via Internet. Three types of services that are rendered by cloud computing are IaaS, PaaS and SaaS [1]. Cloud computing is a rising field and due to its emerging status there are a vast number of organisations and deluge of enterprises that are drifting towards using this environment [2]. Thus, comes into picture the concept of large scale computing where there is vast number of user bases and data centres geographically distributed all across the world. Thus, it becomes a great challenge for these data centres to effectively handle the huge number of incoming requests from different user bases. So, evaluation of performance of the cloud and its proper analysis is of utmost importance, so that the users can take appropriate decisions. The key technology in support of cloud computing is virtualization. Here the virtual machines are particularly abstract form machine running on physical machines. Since, the tasks that are co-located do not intervene with each other and ingress only their own data, it feels to the user as working in a completely isolated environment. There are several factors that can be effective on cloud performance. As far as cloud environment is concerned there are several techniques to take care of the huge services along with the various operations that are performed upon them. One of the very important issues in association with this domain is that of load balancing. There exist distinctive algorithms for balancing of load in distinctive environments. The major object of algorithms concerned with balancing of load is how to efficiently designate the task to nodes, such that the overall response time of request is reduced and processing of request is brought about effectively. Although virtualization has made remarkable attempts for balancing the load of the entire system there still occur a possibility of the underutilisation or overutilisation of resources [3]. Underutilisation of server results in the increase in the power consumption of entire system thereby raising the operational cost and is also not environment friendly. Overloaded servers bring about degradation of performance. Due to imbalance in load distribution excess heat would be produced by heavily loaded servers which would affect the cooling system cost. So, it is mandatory to properly balance the load on different servers by choosing appropriate strategy of assigning the incoming requests from end users to existing VMs. The performance of cloud scenario depends largely on execution time of tasks. The observed limitation of the existing central load balancing algorithm considered here in this thesis is that it does not state any remedy to the fact that when the status of all the VMs is busy what can be done instead of placing all the cloudlets in the queue one by one and then allocating the cloudlets when any one of them is available. So, this would take a lot of time for execution. Our major objective is to design and develop a modified central load balancing algorithm that ameliorates the identified problem and optimises the performance based on the parameter values of the overall response time.

2 Load Balancing

Load balancing in cloud is concerned primarily with job of distributing workloads across various computing resources. The very prominent significance of balancing load in cloud computing is the resource availability is ameliorated and also the document management systems are benefitted with reduced costs. Through load balancing in cloud the transfer of loads can be brought about at a global level. Load balancing strategically helps resources and networks by providing reduced response time and hike in throughput [4, 5]. It also divides the traffic between various servers so that no delay is incurred while sending and receiving the data. It fairly allocates the resources to a computer resulting in ultimate user satisfaction and appropriate resource utilisation which consequently minimises resource consumption and minimises bottleneck problem.

  1. A.

    Types of Load Balancing

The two broad classifications of load balancing algorithms are static and dynamic load balancing algorithms.

Static load balancing algorithms: The allocation of tasks to processors is done during compile time that is prior to program execution. It is done based on processing capabilities of machines. The static scheduling algorithms are non-pre-emptive and their major objective is to reduce overall execution time. They have nothing to do with dynamic modifications at run time.

Dynamic load balancing algorithms: They deal with redistributing processes amongst the processors during the run time of execution. It dynamically re-designates the load amongst machines by collecting information, knowing the run-time conditions and gathered characteristics. The communication dropdown associated with the task is the main reason behind the run time overhead in balancing load.

The dynamic load balancing further has two classifications centralised and distributed. If the single node is responsible for handling the distribution within the entire system (centralised). On the other hand if work involved in making decisions is distributed amongst different processors (distributed). Although centralised approach is simple, it involves single point of failure and bottleneck problems.

Distributed algorithms are free from it. Distributed dynamic scheduling can again be either cooperative or non-cooperative. In the former, every processor is responsible for carrying out its own part of task scheduling whereas in the latter one the independent processors independently arrive at a decision of their resource usage, without affecting the rest of the system.

3 Literature Review

Sidhu et al. [6] have discussed the Round Robin strategy in this paper. Here the data centre controller handles all the requests and allocates them to the Virtual machines in rotating manner. The very first request is assigned to randomly picked Virtual machine. Subsequently, the requests are allocated in the circular fashion. Even though the authors distribute the load of work amongst processors equally but still the processing time of different processes is not identical. Although this approach does the equal distribution of load, there appears the heavy loading on certain virtual machines whereas on the other hand remaining is idle.

Zhang et al. [7] have discussed the Weighed Round Robin strategy in this paper. It is the updated Round Robin version in which every virtual machine is assigned weight according to their processing capacity. In this manner the powerful virtual machine is assigned more requests. In such a situation the two requests are assigned by the controller to the one which is the powerful virtual machine in comparison to one request assigned to the weaker one. It provides better resource utilisation but at the same time it does pay heed to the time of processing each request.

Ahmad et al. [8] have proposed an ESCEW algorithm which scans the queue of jobs and virtual machine list. In this algorithm any available VM is allocated a request which can be handled by it. If the VM is overloaded then it is the responsibility of the balancer to distribute some tasks to the idle VM. This would ameliorate the response time and the overall time of processing tasks.

James et al. [9] gave a Throttled algorithm of balancing load that tries to evenly scatter the load amongst several virtual machines. When the request arrives, the status of virtual machines is consulted from recorded list, if it is idle then the request is accepted otherwise it returns −1 and request gets queued up.

Lua et al. [10] propose a Join-Idle-Queue distributed algorithm for large systems. Here, firstly idle processors are load balanced across dispatchers and then decrease average length of queue at each processor jobs are designated to processors. Thus, JIQ algorithm does not incur any kind of communication overhead between processors and dispatchers at job arrivals.

Wang et al. [11] have proposed a two phase algorithm of balancing load by amalgamating the two phase load balancing algorithms namely opportunistic load balancing algorithm and load balancing min-min algorithm to have better execution efficiency and load of the system is well maintained. The phases of the algorithm are that the job is allocated to the service manager by the Opportunistic Load Balancing scheduling manager in the first phase. Service manager uses the Load balancing min-min to select the appropriate service node for executing the subtask in the second phase. However, the algorithm is only applicable in case of static environment.

Ghafari et al. [12] propose a decentralised nature inspired honey-bee-based load balancing technique for self-organisation which works best under the availability of heterogeneous resources. Local server action is something through which it achieves the global balancing of load. The approach is similar and adopted from real life behaviour of honey bees for harvesting their food and foraging. In the algorithm the servers are set certain virtual servers where each of it has its own virtual server queues. As per the approach as specified and implemented in the paper works very well as far as the resources under consideration are heterogeneous. The problem related to this approach is that it does not improve throughput equally with the increase in the resources.

Zhang et al. [13] have proposed an ant colony and complex network theory-based mechanism of balancing load in open federation of cloud computing. It enhances numerous aspects of ant colony related algorithms which dealt with only balancing loads in distributed environment.

Ren et al. [14] have proposed a Fractal algorithm of balancing load. It is dynamic in nature and assures that the unnecessary migrations are not triggered by the peak instantaneous load. Timing of virtual machine migration is decided by the load forecasting method. The results in the paper demonstrate that the proposed achieves considerably better load balancing. The comparison of the algorithm has been done with existing honey-bee and ant-colony algorithms. The authors conduct the testing of the existing algorithm and experimentally conclude that the algorithms upgrades system performance and achieve load balancing.

Achar et al. [15] have proposed a weighted least connection algorithm that assigns the load to the nodes with the minimum that is the least number of connections. Although it efficiently balances the load, it still does not consider the storage capacity and processing speed.

Randles et al. [16] have stated that the complexity and scalability of the systems brings about the infeasibility in the assignment of jobs to specific servers in a centralised manner. Thus, the paper examines the three possible solutions proposed for balancing load. So, the authors introduce a self aggregation using the concept of active clustering. It works on the tenet of aggregating together similar nodes and then working on them by efficient load balancing. The limitation with this algorithm is that it works poorly in heterogeneous environment.

4 Proposed Approach for Load Balancing

We have adopted cloud partitioning strategy to balance the load. The load balancing then starts, immediately after the cloud partitioning has been done. Once the job arrives at the appropriate system, it is the responsibility of the main controller to decide which job will be moved to which cloud partition. The load balancer of that partition then decides as to how the job has to be assigned to the nodes. If the load status of a cloud partition is detected as normal, this partitioning can be achieved locally. If the load status of cloud partition is not normal, this job should be transferred to another partition. In our proposed approach each and every cloudlet will pass through different stages. And ultimately each cloudlet will be assigned to the suitable virtual machine.

  • Cloudlet to broker.

  • From broker to the most suitable data centre.

  • From data centre to its controller.

  • From controller to best partition.

  • Finally cloudlet is assigned to the virtual machine.

Figure 1 shown is the diagrammatic representation of how our proposed approach works. In our proposed approach the tasks or the requests or jobs from the users firstly arrive at a broker, from there the requests are forwarded to appropriate data centre. The data centre has a data centre controller which decides on which partition the requests will be sent to. Every data centre is divided into partitions and each partition has a number of virtual machines. The activities of each partition are handled by its own partition balancer. Thus, the Data centre controller sends the request to particular partition on the basis of their status. If the status of first partition is normal the request is assigned to the available node under that partition otherwise it checks for the next partition and repeats the process for the next partition.

Fig. 1
figure 1

Working of proposed algorithm

  1. A.

    Proposed Algorithm

    The flowchart of the proposed algorithm has been shown in Fig. 2. The stepwise description of the proposed algorithm is given below

    Fig. 2
    figure 2

    Proposed algorithm

    1. 1.

      User sent a request.

    2. 2.

      All user requests are collected at the point of the broker and broker sends these requests to the Data centre controller.

    3. 3.

      A table is maintained with the central load balancer that contains id of virtual machine (VMid), availability of status of states like (BUSY or AVAILABLE) and VMs priority.

    These states are completely dependent on the cloud partition, like if one cloud partition is normal then other two partitions are idle and overloaded, we have set this condition inside the cloud. Initially, all Virtual Machines are in available state.

    1. 4.

      Data Centre Controller receives the new request from the broker.

    2. 5.

      Data Centre Controller finds a proper cloud partition for next allocations, every cloud partition has its own balancer.

    3. 6.

      Partition Balancer parses the table from top in order to find the highest priority partition virtual machine and the state of that cloud partitions is available.

      If found:

      1. (a)

        The Partition Balancer returns the VMid to the Data Centre Controller.

      2. (b)

        The Data Centre Controller forwards the request to the VM identified by that VMid.

      3. (c)

        Data Centre Controller notifies the Partition Balancer of newer allocation. Central Load Balancer refreshes the table accordingly.

      4. (d)

        Partition Balancer refreshes the table accordingly.

      If not found:

      1. (a)

        The Partition Balancer not accepting request and process again back to step 5, that means partition states is heavy.

      2. (b)

        The Data Centre Controller queues the again request to find the proper partitions.

    1. 7.

      When the partition finishes the processing of requests, and Data Centre Controller receives the response cloudlet, it notifies the Partition Balancer of the VM de-allocation.

    2. 8.

      The Data Centre Controller checks if there are any waiting requests in the queue. If there are, it continues from step 5.

    3. 9.

      End the process.

5 Performance Evaluation and Results

  1. A.

    System Requirements

The proposed algorithm is implemented in CloudSim simulator. It is used for modelling and analysis of large scale cloud computing environment. To set up the simulation environment we need Java development kit which is JDK 1.6 and Eclipse IDE. The language used in the Eclipse IDE is Java. The database used here is Microsoft access. With the proposed algorithm the database connectivity is done with the system and window 7 is used.

  1. B.

    Performance analysis

The certain metrics of performance have to be considered while balancing load in cloud environment. The scalability, utilisation of resources, response time, etc. are certain parameters on the basis of which performance can be computed and analysed. Here, in our work we have seen that the performance of our proposed approach is better than the existing algorithm. The considered existing algorithm is central load balancer [4]. We have modified the existing algorithm by introducing the concept of partitioning [5]. The algorithm in the considered base paper is compared with Round Robin and Throttled. Round Robin and Throttled algorithms give good performance with smaller size requests but when huge data is arriving for allocation the central load balancer would give better results. In addition to this if very large scale computing is to be handled, that can now be done with the help of modified central load balancing algorithm.

Table 1 shown above gives the parametric considerations that have been taken for evaluating the overall performance of modified central load balancer as compared to central load balancer. Figure 3 clearly portrays the overall response time summary of modified central load balancer and thus from these results we conclude that the performance is better optimised with the help of our algorithm.

Table 1 Parametric considerations
Fig. 3
figure 3

Comparison of two algorithms on the basis of closest data centre policy

6 Conclusion

The performance of a cloud computing system depends on the task execution time. In our proposed approach we have integrated the concept of cloud partitioning with central load balancing algorithm to achieve efficient load balancing. In the proposed algorithm prior to the allocation of request to virtual machine the request has to move to suitable partition which is decided by the data centre controller.

Thus, the future work is to develop an enhanced load balancing algorithm considering the fact that existence of partitions in the system, it is possible to apply good load balancing strategy and use optimal algorithms based on the state of the partition. Thus, the task execution is done effectively.