With High Level Fragmentation Of Dataset, Load Balancing In Cloud Computing Devesh Kumar Vineet Tyagi Computer Engineering Department Shobhit University Meerut, U.P., India vineettyagi28@gmail.com Computer Engineering Department Shobhit University Meerut, U.P., India deveshkumar1990@gmail.com Abstract— Cloud computing may be considered as another name for distributed computing by heterogeneous resources over a network, which use all the resources to compute the utility using virtualization technologies and real time communication networks for data transfers (usually over the internet). This gives the ability to run a program over a network of processing devices at the same time, where each processing unit individually working on a subset of dataset. Vijay Maheshwari Assistant Professor Computer Engineering Department Shobhit University Meerut, U.P., India develop an effective load balancing algorithm which could utilize the powers of different existing algorithms put together to maximize or minimize different parameters like throughput latency etc for the cloud of different sizes and topologies. Keywords—Load Balancing, Cloud Computing, Software Engineering. I. A very large number of enterprises have started providing and using cloud enabled infrastructures and services. But still a lot of work is required to be done in the field of cloud computing because of the challenges in the field of like fault scalability, high availability, scalability, tolerance, flexibility, reduced overhead for users, reduced cost of ownership, on demand services and the most important of them Load Balancing etc. The core of all these issues is actually related to the Load Balancing issue, where the load can be of several types like load on the processing unit, load on the network, load on the memory etc. Load balancing is the process of distributing the load over the network among various nodes in the distributed network to get the result in the minimum possible time as well as to utilize the resources at their maximum. In the situations where some of the nodes are heavily loaded, while other nodes are not being used or not being used to their maximum capacity makes a situation of bottleneck in Cloud responsible for both delay in response time of the service as well inefficient use of the cloud resources. Load balancing ensures that all the available resources are being used in the way that their maximum utilization of the resources is taking place. In a homogeneous system load balancing is easy to perform since all the resources can be allocated same amount of work and they will respond back in almost same time. But the issue lies in the heterogeneous clouds, since every unit in the heterogeneous cloud behaves differently and has different attributes responsible for different response times for any particular process, so the distribution of work in heterogeneous clouds cannot be done in a homogenous way. In real world scenarios most of the clouds use heterogeneous resources for computation because of the continuously changing technologies. Our work in this paper first compares the existing methods of load balancing in cloud computing, then our objective is to INTRODUCTION These days cloud computing is one of the major topics of discussion as it promises high levels of scalability and flexibility without making much efforts in setting up and running the large scale data centers and computing infrastructures. Cloud Computing is a very new paradigm which enables organizations to scale up or scale down their use of resources of information technologies based on their requirements without making any efforts in infrastructures. Since in cloud computing all the resources are in a shared environment so a resource management mechanism is required which can assign tasks to processing units whenever necessary, handle requests, re-compute the responses returned by the processing units, manage the data availability to all the processing units etc. Since we live in a heterogeneous world were evolution is the field of computers is a continuous process So the cloud infrastructures are also changing. Load balancing is one of the most important part of the resource management, if load is not managed properly it can lead to large delays in processes. Different kinds of load balancing techniques will be explained later in this paper. II. CLOUD COMPUTING A. Overview Cloud computing is a on demand service in which shared resources work together to perform a task to get the results in minimum possible time by distribution of any dataset among all the connected processing units. Cloud computing is also referred to refer the network based services which give an illusion of providing a real server hardware but in real it is simulated by the software's running on one or more real machines. Such virtual servers do not exist physically so they can be scaled up and down at any point of time.[1] Cloud computing that we are dealing with is related to the processes to decomposing 'Big Data' tasks into small dataset tasks and distributing them to several computing units, so the task can be performed in the minimum possible time. Three main characteristics are required by any cloud service : resource publication through a single provider, ability to acquire transactional resource on demand, and mechanisms to bill users on the basis of resource utilization [1]. For detailed discussion about deployment of cloud and services provided by the cloud please use the publications [1-7]. B. Cloud Infrastructure A cloud consists of a group of processing unit put together, so we can define that the basic unit of cloud is processing units, which are grouped together to achieve same goal. The groups of processing units are connected to the master processing unit which is responsible for assigning the tasks to its slave units (single processing unit). The groups master system is again connected to the head node of the cloud which is responsible for receiving the tasks, dividing it into small tasks and then assigning it to the group masters which further assigns the tasks to its slaves. Please see the Fig.1 for the pictorial representation of the same.[9] Head Node Job Distribution by Master processing results to head node node Master Data sharing in cloud is done by real time sharing over the network, since all the data is required to accessible to all the processing units for processing their dataset. In the System Shown in Fig 1. Let a task is generated to be processed by one of the CPU's then that task is first transferred to the master of its group which again transfers the task to the head node of the cloud. the clouds head node is responsible for the division of big task into small tasks i.e. same task but to be performed on smaller dataset. After division of the task the head node transfers the assigned tasks to the master of each group which again distributes the divided tasks to the slave processing units. After the processing is complete the result is then returned to the Masters by slaves, which re-compute the result after getting results from all the slaves and sends it back to the head node. The head node also combines all the results of masters and pass it to the system which initially initiated the process. The hierarchy of the processing units in a cloud can go up to any number of levels, but the concept of processing the 'Big Data' in small datasets and the re-computing their results remains the same. As mentioned earlier in modern scenario the processing units can be located at different locations or the datasets can be located at different locations. To make the data available to each node a high speed network is used but a unmanaged network can lead to creation of bottleneck in the system so a manager or a load balancing system is required for the availability of data to all the nodes. Similarly all the processing units are not required to be having equal processing power if the system need to wait for some particular processing unit to complete its job then the whole system has to keep on waiting for it to get complete, which ultimately leads to wastage of resources in the system. Load balancing is required here so that tasks could be divided in such a way that all processing units produce their results in same amount of time. This is possible by dynamic heterogeneous task distribution systems. C. Development models in Cloud Computing Job Assignment to processing unit There are mainly three different cloud computing models : Processing Unit Data Sharing data Fig 1. Cloud Infrastructure Private clouds Public Clouds Hybrid Clouds Private cloud is a cloud in which the computing resource, storage resources and cloud technology is owned by a private enterprise. The owner is responsible for maintenance of the infrastructure. On the other hand public cloud is the one in which the resources and technology may or may not be owned by more than one organization but the resources are offered to external users. A hybrid cloud is the category of cloud in which a part of the cloud infrastructure is maintained by the organization itself with acquiring services from the public clouds. These three different models of cloud are having both advantages as well as disadvantages over each other. The main By the use of a cloud infrastructure, different types of services are offered by the organizations. First of them is Software as a service (SaaS) infrastructure which offers software applications to its customers. In this kind of service the customer is not allowed to make changes in the applications, however customization options available in the software itself can be used by the user to make it more compatible in use. Google email service is an example of SaaS model. Second is Platform as a Service (PaaS) infrastructure, the developers of the platform are provided with some API's in different languages which can be used to modify the application according to the use of the customer. The language support is provided for some specific languages only. Google Application Engine is an example of such platform. Third and the last is Infrastructure as a Service (IaaS) in which even infrastructure in terms of computing and storage resources is customizable by the users according to their preferences. This infrastructure is used to host applications. IaaS models often provide automatic support for on demand scalability of computing and storage resources [2]. Recently new clouds development models have came into picture like Virtual Private Clouds (VPC). A VPC inherits a public cloud with additional functionalities like customizations of network topologies and security systems. So a virtual cloud has the ability to use the cost effective system of public clouds and security system of a private cloud. In the similar way there are cases where a number of organizations come together to develop cloud system for their common personal uses, these are called as community clouds. Community clouds provide much higher level of privacy and security to the members of community.[9] Both software and hardware development models are explained in Fig. 2 in the pictorial form. The service models in the figure also contains the examples of each service model. Like Google App, Microsoft cloud service and Salesforce CRM are the examples of Software As A Service, Google App Engine, Yahoo open strategy and Microsoft Azure are the examples of Platform As A Service and Amazon's Ec2, IBM Computing on Demand, VMware vSphere are the examples of Infrastructure As A Service Microsoft Cloud Service Salesforce CRM Model s Google Apps Google App Engine Yahoo Open Strategy Microsoft Azure Ser vic e Platform As A Service (PAAS) Infrastructure As A Service (IAAS) Amazon EC2 Public Cloud IBM -Computing on Demand Private Cloud VMware vSphere Virtual Private Cloud Hybrid Cloud Models D. Service models in cloud computing Software As A Service (SAAS) Develop ment advantage of using a private cloud is the control over all the resources and infrastructure, which makes it feasible for them to make changes in the infrastructure at any point of time according to their requirements. But the disadvantage of using a private cloud is the investment cost required to be put in establishment of the infrastructure, in the same way the a extra cost is required for the software and the maintenance activities. The advantage of using the public cloud is that an organizations itself does not have to take care of the cloud computing infrastructure and operational activities. The disadvantage of utilizing the services from a public cloud provider is that it is completely dependent upon another business entity that is offering resources through public clouds for non critical business operations [2, 7]. Fig 2. Different Service and development Models III. LOAD BALANCING IN CLOUD COMPUTING As this explained earlier, in cloud computing when a computation is requested by any system it is distributed to all the slaves existing in that cloud. So the way in which the distribution is being done must get the response from all the slaves at the same time so that there should not be any waiting for any particular computing device to reply before further processing could happen. But in the real time clouds heterogeneous computing devices exists and any process's execution time on the slave is required to be estimated. So the main feature that is must in any load balancer is the asymmetric load distribution. A greater ratio of workload is required to be given to those with higher computation capabilities. But sometimes just higher computation power only cannot help is deciding how much share of the task is required should be assigned to that system. This assignation of proper task to proper system in heterogeneous computing infrastructure is done by load balancer. Load balancer is also responsible for 'Priority Activation' which means that when the number of slave computing device devices drops below a certain point the load balancer must wake some of the sleeping devices to maintain the computing performance for the client. A. Persistence Issue in Load Balancing D. MapReduce method for task distribution One of the main issues faced by a load balancer is when operating a load balancer service is ' how to handle information that must be kept across the multiple requests in a user's session' e.g. session data. If the information is stored only on computation requesting system, it will not be accessible to other computing devices and since subsequent requests takes place for this information this can lead to a performance issue. MapReduce framework is basically used for processing large datasets across a large number of computers (a cluster in the cloud). In this technique the processing is done in two main steps that are : Map and Reduce. Each having its own specific purpose leading to the result of computation. Both Map and Reduce functions are explained below. One of the solutions to this issue is sending all the requests to the same computing device which contains this information. This is known as persistence or stickiness. One major downside of this technique is lack of automatic failures. If the device containing the information goes down the whole system gets down, also the any session of the processes present on the system is also lost. So the problem is because of non backed up centralized system, one of the solution is using a backup system together but this will lead to major performance issue. Next solution is related to backup system. One other solution that can be used is by using database for storing the information, but this increases the load on the database. But databases provide solutions to some of the problems that exists in centralized systems. Databases can be backed up easily solving the problem of single point of failure, databases are also highly scalable. Since in a backed up system of databases there are several systems holding the same information the query load can also be distributed over them to get a better performance. Microsoft's ASP.net State Server technology is an example of this kind of database. All servers in the cloud store their information data on State Server and any server in the cloud can retrieve the data. "Map" Step : The process of converting a problem to small sub-problems and distributing it to the salve nodes in the cloud cluster is called as Map. There can be further distribution also leading to multilevel tree structure. The slave computing devices performs the processing and returns the result to the requesting device - Master Node. "Reduce" Step : After receiving the results from the slave nodes the master node is required to perform the task of combining the results into one, which is done in this step. MapReduce functions can also be performed in distributed systems. Since each mapping is independent to each other and all mappings can be done in parallel, but this is limited by the number of independent data sources and number of CPU's near each source. IV. Following is the list of load balancing techniques known with their short description : VectorDot- This technique for load balancing in cloud was proposed by A. Singh [10]. It was able to handle the hierarchical complexity of the cloud system data centers and multidimensionality of resource loads across servers, network switches, and storage in an agile data center that has integrated server and storage virtualization technologies. This technique uses the dot product to distinguish nodes based on the item requirements and helps in removing overloads on servers, switches and storage nodes. CARTON- This technique for load balancing in cloud was proposed by R. Stanojevic [11]. This uses a mechanism CARTON for cloud control that unifies the use of LB and DRL. LB (Load Balancing) is used to equally distribute the jobs to different computing units so that the associated costs can be minimized and DRL (Distributed Rate Limiting) is used to make sure that the resources are distributed in a way to keep a fair resource allocation. DRL also adapts to computing device capacities for the dynamic workloads so that performance levels at all computing units are equal. With very low computation and communication overhead, this algorithm is simple and easy to implement. Compare and Balance- This technique for load balancing in cloud was proposed by Y. Zhao [12]. addressed the problem of intra-cloud load balancing amongst physical hosts by adaptive live migration of virtual machines. A load balancing model is designed and implemented to reduce virtual machine's migration B. Load Balancing Architecture Both software and dedicated hardware options are available in the market as a solution to the load balancing problem, including open source solutions. Examples of the latter include the Apache web server's mod_proxy_balancer extension, nginx, Varnish, or the Pound reverse proxy and load balancer. Gearman can be used to distribute appropriate computer tasks to multiple computers, so large tasks can be done more quickly. Multiple layers of load balancers can also be used to achieve more sophisticated systems creating a tree structure. The upper level load balancer distributes the task to lower level computing devices which uses their own load balancer to distribute the task further, this leveling in cloud can go up to any number of levels creating very complex systems. C. Scheduling Algorithms used in load balancing There are a number of scheduling algorithms available for load balancing to determine the computing device which should be sent the next computing task. One of the most simple is round robin algorithm. More sophisticated systems use additional factors to determine this such as server's reported load, number of active connections, , geographic location recent response times, up/down status (determined by a monitoring poll of some kind), capabilities, or how much traffic it has recently been assigned. LOAD BALANCING TECHNIQUES IN CLOUD time by shared storage, to balance load amongst servers according to their processor or IO usage, etc. and to keep virtual machines’ zero-downtime in the process. A distributed load balancing algorithm COMPARE AND BALANCE is also proposed that is based on sampling and reaches equilibrium very fast. This algorithm assures that the migration of VMs is always from high-cost physical hosts to low-cost host but assumes that each physical host has enough memory which is a weak assumption. Event-driven- This technique for load balancing in cloud was proposed by V. Nae [13]. This is an event driven load balancing algorithm for real-time Massively Multiplayer Online Games (MMOG). This algorithm after receiving capacity events as input, analyzes its components in context of the resources and the global state of the game session, thereby generating the game session load balancing actions. It is capable of scaling up and down a game session on multiple resources according to the variable user load but has occasional QoS breaches. Scheduling strategy on LB of VM resources - This technique for load balancing in cloud was proposed by J. Hu [14].This is a scheduling strategy on load balancing of VM resources that uses historical data and current state of the system. This strategy achieves the best load balancing and reduced dynamic migration by using a genetic algorithm. It helps in resolving the issue of load imbalance and high cost of migration thus achieving better resource utilization. CLBVM- This technique for load balancing in cloud was proposed by A. Bhadani [15]. This is a Central Load Balancing Policy for Virtual Machines (CLBVM) that balances the load evenly in a distributed virtual machine/cloud computing environment. This policy improves the overall performance of the system but does not consider the systems that are fault-tolerant. LBVS- This technique for load balancing in cloud was proposed by H. Liu [16]. This load balancing technique considers virtual storage strategy (LBVS) that provides a large scale net data storage model and Storage as a Service model based on Cloud Storage. Storage virtualization is achieved using an architecture that is three-layered and load balancing is achieved using two load balancing modules. It helps in improving the efficiency of concurrent access by using replica balancing further reducing the response time and enhancing the capacity of disaster recovery. This strategy also helps in improving the use rate of storage resource, flexibility and robustness of the system. Task Scheduling based on LB- This technique for load balancing in cloud was proposed by Y. Fang [17]. This technique discussed a two-level task scheduling mechanism based on load balancing to meet dynamic requirements of users and obtain high resource utilization. It achieves load balancing by first map-ping tasks to virtual machines and then virtual machines to host resources thereby improving the task response time, resource utilization and overall performance of the cloud computing environment. Honeybee Foraging Behavior- This technique for load balancing in cloud was proposed by M. Randles [18]. This technique investigated a decentralized honeybee-based load balancing technique that is a nature-inspired algorithm for self-organization. It achieves global load balancing through local server actions. Performance of the system is enhanced with increased system diversity but throughput is not increased with an increase in system size. It is best suited for the conditions where the diverse population of service types is required. Biased Random Sampling- This technique for load balancing in cloud was proposed by M. Randles [19]. This technique investigated a distributed and scalable load balancing approach that uses random sampling of the system domain to achieve self-organization thus balancing the load across all nodes of the system. The performance of the system is improved with high and similar population of resources thus resulting in an increased throughput by effectively utilizing the increased sys-tem resources. It is degraded with an increase in population diversity. Active Clustering- This technique for load balancing in cloud was proposed by M. Randles [20]. This technique investigated a self-aggregation load balancing technique that is a self-aggregation algorithm to optimize job assignments by connecting similar services using local re-wiring. The performance of the system is enhanced with high resources thereby increasing the throughput by using these resources effectively. It is degraded with an increase in system diversity. ACCLB- This technique for load balancing in cloud was proposed by Z. Zhang [21]. This technique proposed a load balancing mechanism based on ant colony and complex network theory (ACCLB) in an open cloud computing federation. It uses small-world and scale-free characteristics of a complex network to achieve better load balancing. This technique overcomes heterogeneity, is adaptive to dynamic environments, is excellent in fault tolerance and has good scalability hence helps in improving the performance of the system. (OLB + LBMM)- This technique for load balancing in cloud was proposed by S.-C. Wang [22]. This technique proposed a two-phase scheduling algorithm that combines OLB (Opportunistic Load Balancing) and LBMM (Load Balance Min-Min) scheduling algorithms to utilize better executing efficiency and maintain the load balancing of the system. OLB scheduling algorithm, keeps every node in working state to achieve the goal of load balance and LBMM scheduling algorithm is utilized to minimize the execution time of each task on the node thereby minimizing the overall completion time. This combined approach hence helps in an efficient utilization of resources and enhances the work efficiency. Decentralized content aware- This technique for load balancing in cloud was proposed by H. Mehta [23]. This technique proposed a new content aware load balancing policy named as work-load and client aware policy (WCAP). It uses a parameter named as USP to specify the unique and special property of the requests as well as computing nodes. USP helps the scheduler to decide the best suitable node for processing the requests. This strategy is implemented in a decentralized manner with low overhead. By using the content information to narrow down the search, it improves the searching performance overall performance of the system. It also helps in reducing the idle time of the computing nodes hence improving their utilization. Server-based LB for Internet distributed servicesThis technique for load balancing in cloud was proposed by A. M. Nakai [24]. This technique proposed a new server-based load balancing policy for web servers which are distributed all over the world. It helps in reducing the service response times by using a protocol that limits the redirection of requests to the closest remote servers without overloading them. A middleware is described to implement this protocol. It also uses a heuristic to help web servers to endure overloads. Join-Idle-Queue- This technique for load balancing in cloud was proposed by Y. Lua [25]. This technique proposed a Join-Idle-Queue load balancing algorithm for dynamically scalable web services. This algorithm provides large-scale load balancing with distributed dispatchers by, first load balancing idle processors across dispatchers for the availability of idle processors at each dispatcher and then, assigning jobs to processors to reduce average queue length at each processor. By removing the load balancing work from the critical path of request processing, it effectively reduces the system load, incurs no communication overhead at job arrivals and does not increase actual response time. Lock-free multiprocessing solution for LB- This technique for load balancing in cloud was proposed by X. Liu [26]. This technique proposed a lock-free multiprocessing load balancing solution that avoids the use of shared memory in contrast to other multiprocessing load balancing solutions which use shared memory and lock to maintain a user session. It is achieved by modifying Linux kernel. This solution helps in improving the overall performance of load balancer in a multi-core environment by running multiple loadbalancing processes in one load balancer. Performance Attributes For Load Balancing In Clouds Various performance attributes considered in existing load balancing techniques in cloud computing are discussed below Throughput is considered as no. of tasks whose execution has been completed. For any load balancing system throughput decides the quality so it should be high. Overhead determines the amount of extra work required to be done to implement the load balancing algorithms. Overhead usually comes because of inter processor communications, inter process communications, movement of tasks and data. Overhead should be minimized to get the best results. Fault Tolerance system is a system in which the processing does not get affected because of failure of any particular processing device in the system. The load balancing should be fault tolerant. Migration time is the time of movement of job from the master system to the slave system and vice versa in case of results. Migration time is the overhead which cannot be removed but should be minimized. Response Time is the amount of time taken to respond by a particular load balancing algorithm in a distributed system. This parameter should be minimized. Resource Utilization is the parameter which looks into that how the resources are being utilized. The resource utilization must be very high since one of the main aspects of cloud computing is to use the resources at the maximum. Scalability defines if the algorithm being implemented can be used for any number of nodes and any kind of hierarchical structure in cloud. Scalability is one of the main concepts since clouds are expending daily with increasing heterogeneity. Performance determines the efficiency of the system. The overall performance of the system should increase by using a particular load balancing technique. Based on these performance attributes, the existing load balancing techniques have been compared in Table 1. Where Tn stands for nth technique of the seventeen techniques explained earlier. Overhead Fault tolerance Migration time Response Time Resource Utilization Scalability Performance T1 X X X X X Y X X T2 X Y X X X Y X Y T3 X Y X Y X Y X X T4 X X X X X Y Y X T5 Y Y X X X Y X X T6 X X X X Y Y X Y T7 X X Y X Y X Y Y T8 Y X X X Y Y X Y T9 Y X X X X X Y Y T10 Y X X X X X Y Y T11 X X X X X X Y Y T12 X X Y X X Y Y Y T13 X X X X X Y X Y T14 X Y X X Y Y Y Y T15 X X X X Y X Y Y T16 X Y X X Y X X Y T17 Y X X X X X X Y ATTRIBUTES Throughput TABLE 1- Comparison Of Existing Load Balancing Techniques Based On Various Metrics V. HIGHER LEVEL FRAGMENTATION OF DATASET As we have seen that it is very hard to decide how much work can be performed by a computing device prior to computing the function on the same device in a heterogeneous cloud architecture. So if the load balancer assigns equal amount of work to all the computing devices this could lead to higher waiting time from some of the computing devices than others. Leading to loss of throughput of the whole system. In more sophisticated systems variable amount of work can also be assigned to all the computing devices according to their capabilities, but getting to know this information is not an easy task. So we propose a system in which the dataset is not divided in equal number of tasks equal to the number of computing devices but higher number of datasets elements of equal or variable size and assigning those small dataset tasks to each of the computing device. When a computing device gives the result back new task can be assigned to it at the same time. So the devices which are slow will not get any new task to perform when they are busy with their old task but the fast devices will be given a task as soon as they are finished with their assigned job. Example : let us consider we have 3 processing units with us with different processing capability of 2:3:1 for P1:P2:P3 where P1 is having 2 times processing capability with respect to P3 and P2 is having 3 times the processing capability with respect to P3. Now let us consider that we have a large dataset to be sorted now this can be done by dividing the dataset into parts and assigning each dataset to be processed by each processor and finally merging the results of all datasets. Let in the first case we divide the dataset into equal parts and assign each dataset to each processor. But now since processing capabilities are in the order of P2>P1>P3 so the results of P2 will come very fast but master processing unit will have to wait for P3 for a long time before it can merge the results. So throughput of the cloud decreases. See Fig 3. d1 d2 d3 minimum replay time maximum replay time d1 P1 d2 d3 P2 P3 Fig 3. Equal distribution of dataset to all processing units Now let us consider the case in which the dataset is divided into different sizes and then assigned to the computing units for processing. See Fig 4. d1 d2 d3 equal replay time from all the processors d1 d2 d3 P1 P2 P3 Fig. 4. different size distribution of dataset to all processing units In this case the results from all the computing units will come at the same time. but the problem with this approach is that it not easy to determine the dataset size for the processing unit since clouds are heterogeneous and ever changing. There are several factors responsible for the computation time of a processing unit in the real world. Our approach is dividing the dataset into smaller parts let us say 6 in this case. See Fig. 5. The main advantage of using this technique is resource utilization at the maximum since all the processing units will be returning their results at almost same time (depends on level of fragmentation of dataset, higher the fragmentation less is the difference in response times). d1 d2 d3 d4 d5 d6 But the disadvantage of using this technique is the overhead that comes on assigning the jobs since number of job assignations will be larger in this case. d6 d5 d4 d1 d2 P1 d3 P2 P3 Fig. 5. More number of dataset elements than the number of processing units Now as we can see in Fig. 5. first the dataset is divided into 6 parts initially d1,d2,d3 are assigned to P1,P2,P3 respectively for processing. P1 d3 P2 d4 P3 d6 d1 0 1 2 If the heterogeneity of the computing devices in the cloud is very high this technique can be very useful. Since the devices with higher processing speeds can be given more number of dataset elements get process and the devices with lower processing speed can be given less number of dataset elements to process. But the ultimate result will be maximum use of the processing resources. Deciding the dataset element size is a problem since it should depend upon the minimum processing speed device in the cloud. If the dataset element size ratio is more than what can be handled by the minimum speed processing device it will lead to delay. Higher the number of fragmented elements less is the difference between the times of responses of the processing devices, still the size of the dataset element is required to be set very carefully for optimization. If the dataset element size is kept very less then it can lead to large number of job assignments which will lead to overhead. But if the size is kept too large the minimum speed processor will take lot of time on its dataset to process it again leading to poor resource utilization. So the size of the dataset element should be chosen very carefully. Advantages of using the suggested model is that it can be very useful in the highly heterogeneous environments since calculation of the amount of task that should be distributed to each device in such environments is not easy. The suggested model gives a mechanism in which the amount of task that should be distributed to a particular computing device is calculated by a threshold value which is the number of tasks in which the complete task should be divided resulting into a better efficiency. d5 d2 Let us assume that time taken by P3 to process a single dataset (here of equal sizes) is 3 seconds, then time taken by P1 and P2 to process the same amount of data will be 1.5 second and 1 sec respectively. So when processing on d2 is complete by P2 it can start the processing on d4 and similarly P1 will start processing d5 on completion of d3 and P2 will process d6 on completion of processing of d4. And all the results will be returned back to the master server at the end of 3 seconds. 3 time Fig. 6. Dataset processing with respect to time in higher level fragmentation of Dataset Disadvantage of using this model is in the case of homogeneous models where almost equal amount of computation time is taken by all the devices. Here if the task is divided in more number if tasks then the computation devices it will lead to an extra overhead of division of tasks as well as combining the results back to give the consolidated result. Calculation of the number of subtasks is also a critical because wrongly divided tasks will also create extra overheads in the calculation of results. As a whole we can say that the proposed models works better for the heterogeneous environments but leads to an extra overhead as the homogeneity increases. CONCLUSION Cloud Computing offers a very large number of opportunities of using IT infrastructure as a utility with many possibilities like scaling down and scaling up depending upon the needs of the organization. However, similar to most rising technologies cloud computing is also having issues that need to be resolved. In this paper gave an introduction to cloud computing then explained the challenges that need to be focused in the coming future. This document explains Load Balancing problem as the main problem in this paper, We have described the problem with a short description. This paper also contains the description of already available solutions for the load balancing problem. We saw that with higher level fragmentation of dataset better resource utilization can be achieved but this comes with the overhead of more number of job assignations to take place. But in very high heterogeneity environment of cloud this technique can be very useful, when we don't know the capabilities of the computing devices available to us in the cloud. [7] Zhang, Q., Cheng, L., and Boutaba, R., Cloud computing: state-of-theart and research challenges, Journal of Internet Services and Applications, 2010. 1(1): pp. 7-18. [8] Ali Babar, M. and Chauhan,A Tale of Migration to Cloud Computing for Sharing Experiences and Observations IT University of Copenhagen Denmark [9] Bicer, T., Chiu, D., Agrawal, G., Time and Cost Sensitive DataIntensive Computing on Hybrid Clouds Ohio State University, 2012 12th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing [10] Singh A., Korupolu M. and Mohapatra D. (2008) ACM/IEEE conference on Supercomputing. [11] Stanojevic R. and Shorten R. (2009) IEEE ICC, 1-6. [12] Zhao Y. and Huang W. (2009) 5th International Joint Confer-ence on INC, IMS and IDC, 170-175. [13] Nae V., Prodan R. and Fahringer T. (2010) 11th IEEE/ACM International Conference on Grid Computing (Grid), 9-17. [14] Hu J., Gu J., Sun G. and Zhao T. (2010) 3rd International Symposium on Parallel Architectures, Algorithms and Pro-gramming, 89-96. [15] Bhadani A. and Chaudhary S. (2010) 3rd Annual ACM Banga-lore Conference. [16] Liu H., Liu S., Meng X., Yang C. and Zhang Y. (2010) Interna-tional Conference on Service Sciences (ICSS), 257-262. References [1] Ali Babar, M. and Chauhan, A., Toward a Framework for Migrating Software Systems to Cloud Computing, Tech Report TR-2011-139, IT University of Copenhagen, Denmark, 2011. [2] Armbrust, M., et al., A View of Cloud Computing, Communication of ACM, 2010. 53(4): pp. 50-58. [3] Baiardi, F. and Sgandurra, D., Secuing a Community Cloud, in IEEE 30th International Conference on Distributed Computing Systems Workshops. 2010, IEEE Computer Society. pp. 32-41 [4] Khajeh-Hosseini A, Greenwood D, and 2010., S.I., Cloud Migration: A Case Study of Migrating an Enterprise IT System to IaaS, in IEEE 3rd International Conference on Cloud Computing. 2010, IEEE Computer Society: Miami, USA. pp. 450-457 [5] [6] Khajeh-Hosseini A, Greenwood D, and 2010., S.I., Cloud Migration: A Case Study of Migrating an Enterprise IT System to IaaS, in IEEE 3rd International Conference on Cloud Computing. 2010, IEEE Computer Society: Miami, USA. pp. 450-457 Strowd, D.H. and Lewis, G., T-Check in System-of-Systems Technologies: Cloud Computing, Tech Report CMU/SEI-2010-TN-009, Softwar Engineering Institute, Carnegie Mellon University, 2009. [17] Fang Y., Wang F. and Ge J. (2010) Lecture Notes in Comput-er Science, 6318, 271-277. [18] Randles M., Lamb D. and Taleb-Bendiab A. (2010) 24th Inter-national Conference on Advanced Information Networking and Applications Workshops, 551-556. [19] Zhang Z. and Zhang X. (2010) 2nd International Conference on Industrial Mechatronics and Automation, 240-243. [20] Wang S., Yan K., Liao W. and Wang S. (2010) 3rd Internation-al Conference on Computer Science and Information Technol-ogy, 108113. [21] Mehta H., Kanungo P. and Chandwani M. (2011) International Conference Workshop on Emerging Trends in Technology, 370-375. [22] Nakai A.M., Madeira E. and Buzato L.E. (2011) 5th Latin-American Symposium on Dependable Computing, 156-165. [23] Lua Y., Xiea Q., Kliotb G., Gellerb A., Larusb J. R. and Green-ber A. (2011) Int. Journal on Performance evaluation. [24] Liu Xi., Pan Lei., Wang Chong-Jun. and Xie Jun-Yuan. (2011) 3rd International Workshop on Intelligent Systems and Appli-cations, 1-4. [25] Armbrust M., Fox A., Griffith R., Joseph A. D., Katz R., Kon-winski A., Lee G., Patterson D., Rabkin A., Stoica I. and Zaha-ria M. (2009) Above the Clouds: A Berkeley View of Cloud Computing, EECS Department, University of California, 1-23. [26] Pallis G. (2010) IEEE J. of Internet Computing, 14(5), 70-73.