Application Layer Scheduling in Cloud: Fundamentals, Review and Research Directions

The cloud computing paradigm facilitates a finite pool of on-demand virtualized resources on a pay-per-use basis. For large-scale heterogeneous distributed systems like a cloud, scheduling is an essential component of resource management at the application layer as well as at the virtualization layer in order to deliver the optimal Quality of Services (QoS). The cloud scheduling, in general, is an NP-hard problem due to large solution space, thus, it is difficult to find an optimal solution within a reasonable time. In application layer scheduling, the tasks are mapped to logical resources (i.e., virtual machines), aiming to optimize one or more QoS parameters, and conforming to several constraints. Various algorithms have been proposed in the literature for application layer scheduling, where each of them is based on some fundamental design techniques like simple heuristics, meta-heuristics, and most recently hybrid heuristics. Although ample literature survey exists for cloud scheduling algorithms, none of them present their study exclusively for the application layer. In this survey paper, we present a study on task scheduling algorithms used only at the application layer of the cloud. We classify our study according to various fundamental techniques used in designing such scheduling algorithms. One of the main features of our study is that it covers numerous application type e.g., a set of independent tasks, simple workflow, scientific workflow, and MapReduce jobs. We also provide a comparative analysis of existing algorithms on various parameters like makespan, cost, resource utilization, etc. In the end, research directions for future work have been provided


INTRODUCTION
The cloud computing technology provides a virtualized pool of on-demand resources and is based on a pay-per-use model [1] [2]. The concept has been perceived as a realization of utility computing where computing facilities are provided over the network similar to other utility services like water, electricity, telephone, etc. With an increase in on-demand resource allocation and utility-based pricing, cloud service providers can truly maximize the utilization of resources and thus minimize operating costs [3]. Also, cloud computing technology plays a major role in the success of various business enterprises as it eliminates the essential requirements to plan before provisioning resources. Hence, any business enterprise may start with a small in cloud computing paradigm focuses on the organization and usages of these resources to optimize energy consumption, cost, execution time and other quality of service (QoS) parameters. It further includes the efficient establishment of networking infrastructure for better communication among servers within data centers, and management of efficient power and cooling infrastructure, etc. On the other hand, scheduling is just a tool of resource management at the application and virtualization layer of cloud. As the problem of scheduling is generally taken into consideration at two layers of the cloud service stack, the cloud scheduling problem can be classified into scheduling at the application layer 1 and scheduling at virtualization layer 2 [3] as illustrated in Fig. 1. The scheduling at application layer allocates various independent tasks, user applications, workflow tasks, etc. to virtual machines. Whereas, at the virtualization layer, scheduling focuses on the process of mapping virtual machines on physical machines (i.e.,servers)usually considering parameters such as energy conservation,resource utilization, and optimal load balance. In this work, we study only application layer scheduling algorithms. In the view of the above discussion, the term resource management refers to the overall management all resources available in a data center to optimize the QoS parameters whereas, at application and virtualization layer, it is handled by scheduling in order to assign shared resources from the lower layer to upper layer tasks.
Traditional scheduling schemes that are used in multiprocessor, cluster and Grid environment fails to work in cloud computing systems due to its specific characteristics like virtualization, elasticity, and pay-per-use model. Therefore, to overcome such limitations, various heuristic, meta-heuristic and hybrid-heuristic techniques have been adopted to design scheduling algorithms at the application layer. The heuristic techniques are problem-dependent, thus, cannot be applicable to every problem. On the other hand, the meta-heuristics techniques are problem-independent and can be applied to a wide variety of situations. The hybrid-heuristic technique merges the previous two to take advantage in terms of improved efficiency of an individual scheme. The task scheduling algorithms studied 1 Scheduling at application layer is usually termed as task scheduling 2 Scheduling at virtualization layer is generally termed as VM scheduling or resource provisioning in the paper have been classified on the basis of above-mentioned fundamental techniques.
An adequate number of literature survey works [4], [5], [14], [15], [6]- [13] have attempted to study various cloud scheduling algorithms at multiple layers. Some of them discussed the cloud schedulers which are designed only for a specific QoS objective. Whereas, some of them studied the cloud scheduler designed specifically for a particular application. Authors in [5]- [7], [11] present a comprehensive study of energy-efficient cloud schedulers at application and virtualization layer. Authors in [10][9] discussed only workflow schedulers at various layers. Although the existing surveys are comprehensive, none of them focused exclusively at the application layer for scheduling of different categories of applications. In this survey paper, we include different kind of applications e.g., a set of independent tasks, a simple workflow, scientific workflow, MapReduce jobs, etc. and studied various cloud scheduler proposed for them. We classify our study on the basis of the fundamental technique used to design such schedulers.
The rest of the paper is organized as follows. Section 2 introduces the generic and cloud-based scheduling problem. Section 3 describes the application layer cloud scheduling in detail with various QoS requirements and characteristics of scheduling algorithms. Section 4 presents the study of the different cloud scheduling algorithms at the application layer classified according to the fundamental technique used to design it. The open challenges and current research trends have been presented in section 5, followed by the conclusion in section 6.

THE SCHEDULING PROBLEM: GENERIC AND CLOUD-BASED
The scheduling problem in computer science has evolved from single processor to multiprocessor, and then to large-scale multi-computer systems e.g., Grid, Cluster, and Cloud [16]. The cloud scheduling problem is similar to, multi-processor scheduling problem where one has to find an optimal solution for scheduling a given set of tasks  predefined set of constraints and measurements. In simple words,nnumber of tasks (T ) is to be mapped (assigned) to m number of resources (R). The criteria like makespan, energy efficiency, tardiness, flow time, etc. are widely used to measure the performance of scheduling algorithms.
Similar to traditional parallel scheduling, cloud scheduling problem at the application layer is to focus on finding an "optimal" mapping C:T × VM → F which will assign n tasks T = {t 1 , t 2 , . . . , t n } on to m available virtual machines V M = {vm 1 , vm 2 , . . . , vm m } such that the fitness of objective functions . . , f z } is either maximized or minimized collectively in weighting or individually with various constraints such as deadline, budget, etc. [4]. In case of scheduling problem at the virtualization layer, set T represents virtual machines to be scheduled and set V M represents physical machines. It is noted that cloud scheduling problem is an NP-hard. Fig. 2 illustrates the schematic view of task scheduling in the cloud where more than one task may have to share the same virtual machine. The cloud-specific scheduling objectives (objective functions)include makespan, cost, energy conservation, load balancing, resource utilization, security, fault tolerance, scalability, etc.
The scheduling problem usually transformed into some mathematical formulations e.g., linear programming (LP), integer linear programming (ILP), quadratic programming (QP), quadratic constraint programming (QCP), etc. Among these formulations, the most common is ILP problems [17] which are optimization problems where one has to find the best solution from many feasible solutions. The standard form of an ILP problem is as follows [17]: and, x ≥ 0 where x represents the vector of n unknown decision variables whose value is to be determined, is a vector of right-hand side(RHS) values of m inequalities, and A(m × nn is a two-dimensional known matrix of coefficients. The expression c T x which is to be minimized is called the objective function. Depending upon the variable being optimized, the optimization problems can be divided into two categories, namely, continuous optimization and combinatorial optimization problems [17] where former can have real values for variable x and the later can have only integer values. Cloud scheduling problem also leads to an ILP problem which is proved to be an NP-hard optimization problem [18] [19]. For instance, in [20] scheduling problem of mapping dependent task to VMs has been formulated for the solution (s) as follows: where n and m are the numbers of tasks and machines respectively, U (s), B(s) and C(s) are the number of overdue tasks, restriction on the budget for the tasks of schedule s, and total cost of s respectively. And, C i j and C max (s) represents the cost of processing the i th task on the j th machine and the completion time of the last job i.e., makespan respectively.

TASK SCHEDULING ALGORITHMS AT APPLICATION LAYER: CHARACTERISTICS AND CLASSIFICATION
The resource management in the cloud at the application layer as well as the virtualization layer is handled through scheduling. The application layer scheduling involves two stakeholders, namely, cloud service provider and consumer. The cloud service provider provides the resources in the form of VMs on a rental basis to consumers who submit (schedule) their tasks over those VMs for processing. Both these stakeholders have their own set of QoS requirements. The consumer is concerned with the performance of various applications in terms of execution time, deadline, cost (budget), fault tolerance, security etc., whereas the service provider is more interested in efficient resource utilization and energy efficiency in the data center. Thus, the QoS requirements can be categorized into two groups, namely, Consumer-desired and Provider-desired. Efficient application scheduling helps to achieve a better quality of services for both stakeholders. The quality requirements of both categories have been shown in Figs. 3(a) and 3(b) as explained by Xhafa et al. [21] for clouds and Grid environments. It is noted that some of these QoS parameters need to be either maximized or minimized. While transforming the scheduling problem into the linear program, choosing the QoS objective as a variable in a linear function or keeping it as a constraint depends upon the requirements, assumptions and the environment.
Apart from the various QoS requirements which are targeted or optimized by scheduling algorithms, there exist few other essential characteristics identified in the literature [22] that can be used to classify the algorithms in various categories which are as follows:   runtime overhead as the task arrival information is unknown at rum time. Nevertheless, dynamic scheduling better adapts to the timing changes [23] [24]. In other texts, static and dynamic scheduling are also referred to as off line and online scheduling respectively. Min-min and Max-min algorithms are traditional examples of off line scheduling.

• Centralized/Distributed
The centralized scheduling is controlled by a master processing unit for the collection of tasks and further sent to other workers for processing. On the other hand, in distributed scheduling, local schedulers manage the requests of resources and maintain the job states. Centralized scheduling is more efficient than distributed scheduling due to no overhead for maintaining the coordination among local schedulers, however, it suffers from single node failure.

• Preemptive/Non-preemptive
The preemptive scheduling allows each task to be interrupted during the run-time and hence, resources can be released from the task. On the other hand, the resource can be released only on the completion of tasks in nonpreemptive scheduling, The single objective scheduling algorithm optimizes only one metric at a time whereas multiple metrics can be optimized in multi-objective scheduling [25]. The multi-objective optimization becomes more difficult when conflicting criteria are optimized.

Application Type
Job or application characteristics greatly influence the design principal of scheduling algorithms. The type of applications scheduled over VMs may vary from simple independent tasks to complex graph applications e.g., social network analysis. The scheduling algorithms differ significantly on the basis of the application being scheduled due to later's essential intrinsic properties. For example, a MapReduce (MR) job is a set of several map and reduce tasks to be scheduled over the limited map/reduce slots on various VMs along with a constraint of completing all map tasks before reduce tasks start [26] This special characteristic drives the different methodology of MR scheduling algorithm over the cloud On the other hand, a scientific workflow application is a set of tasks, dependent on each other and needs to be executed according to that dependency [20]. While designing a scheduling algorithm that dependency should be taken into consideration. Such diverse characteristics of applications pose a great challenge while designing an efficient scheduling algorithm. We note that the different categories of applications that are usually scheduled over cloud include a set of independent tasks, simple or scientific workflow, MapReduce application, and most recently Big Graph application, etc

Fundamental Techniques Used in Designing Cloud Schedulers
Traditional techniques used in single or multiprocessor scenario takes exponential time in the cloud environment to find a feasible solution. Hence, other advanced techniques that find a suboptimal or near-optimal solution in a given time frame are used to design cloud scheduling algorithms. Various Cloud schedulers available in the literature are essentially based on some fundamental technique. For example, some of them are based on particle swarm optimization (PSO) technique,whereas, some are based on problem-specific heuristic methods. Different fundamental approaches that are used in the context of cloud scheduling are as follows: Figure 4 General steps in heuristic and meta-heuristic techniques.

Figure 5
Steps hybrid heuristic techniques.
• Traditional approach: Several traditional scheduling techniques e.g., FIFO, greedy approach, EDD [27], CPM [28], PERT [29], dynamic programming [30] and branch-and-bound [31] etc. may be used in a cloud environment. However, such techniques fail to work due to a large solution space and unable to find the optimal solution in polynomial time. These methods are generally much easier to implement in comparison to metaheuristic and hybrid scheduling algorithms as their design is based on one or few particular rules to manage and arrange the tasks.
• Heuristic approach: The heuristic techniques, on the other hand, are problem-dependent and can be adapted so as to consider the intricate and essential particularities of a given problem. However, being too greedy, the heuristic techniques usually get trapped in a local optimum and thus, fail to obtain a globally optimal solution. Because heuristics use "tactical guess" to find the possible solutions, there is a better chance to find an optimal result as compared to rule-based deterministic algorithms.
• Meta-heuristic approach: The meta-heuristics techniques are problem-independent and do not take advantage of any specificity of the problem. It is a special category of heuristic techniques. Here, the technique may adapt to temporary deterioration of the solution to explore better results. Though meta-heuristic is problem-independent, it is nonetheless necessary to fine-tune the intrinsic parameters of a problem in order to achieve an optimal solution.
• Hybridheuristic approach: The hybrid heuristic technique combines two or more heuristic or meta-heuristic algorithms into a single heuristic. Recently a new kind of hybrid heuristic technique has been developed known as hyper-heuristic which considers the space of heuristic or meta-heuristic techniques as a solution space. Indeed, the hyper-heuristic can be thought of as "heuristics to search for heuristics" or sometimes as "heuristics to generate heuristics." The basic idea behind heuristic and meta-heuristic techniques is to use three key operators namely, transition, evaluation, and determination for searching large solution space on the convergence process. Fig. 4 shows the generic flow in heuristic and meta-heuristic techniques. Both these techniques operate in an iterative fashion. In each iteration, first, the transition operator creates the solution s by using the perturbative or constructive or both methods [43]. Thereafter, the fitness of solution s is measured by evaluation operator using a predefined measurement. Finally, the determination operator determines the next search directions based on the s from the transition and the evaluation operator.
The basic idea of the hybrid-heuristic algorithm is shown in Fig. 5, where two or more heuristics/meta-heuristics algorithms are combined to exploit the complementary advantages to find a better result. At each iteration, during the transition (T ), evaluation (E), and determination (D) stage in the convergence process, any one of the participating heuristic/meta-heuristic H i may be used.
In view of the above discussion, the scheduling algorithms at the application layer in cloud computing can be classified on the basis of (i ) QoS objectives, (ii) Other essential characteristics e.g., static/dynamic, preemptive/non-preemptive etc., (iii) type of application scheduled, and (i v) fundamental technique used in designing. In this work, we classify all discussed scheduling algorithms on the basis of various fundamental techniques like heuristic, meta-heuristic and hybridheuristic used while designing the scheduling algorithms. A detailed taxonomy of discussed algorithms has been shown in Fig. 6

STUDY OF SCHEDULING ALGORITHMS AT THE APPLICATION LAYER
The scheduling at the application layer is important and must be efficient for both cloud consumer and service provider. An efficient scheduling technique helps in the optimal utilization of the available cloud resources. The problem cloud scheduling is complex and NP-hard due to which the traditional techniques like min-min [32], max-min [32], FIFO, round-robin, etc. may not achieve better performance. Therefore, such techniques may be either combined with other existing efficient techniques or improved as proposed by Kumar et al. [32] and Gang Liu et al. [33]. In this section, we present the main study of various cloud scheduling algorithms classified according to taxonomy given in Fig. 6. We devote a separate section for each fundamental technique. At the end of each section, we provide two tables which summarize the various attributes of the discussed algorithms.

The Heuristic Approach
The heuristic approach is problem-dependent unlike metaheuristic techniques and can be adapted in order to consider the intricate and essential particularities of a given problem.
Singh et al. [34] proposed a score-based fault-tolerant workflow scheduling heuristic with a deadline as a constraint. The proposed scheme reduces the failure rate and execution time with a cost that is manageable by the user. The capabilities of resources have been represented by score values that are used for the allocation of a workflow task to resources. In the scheme, the list of the workflow tasks (DAGs) is initially submitted to get the available virtual resources from the data center. Afterward, the entire workflow is imposed by a user deadline. Thereafter, the final score of VM's is obtained from the components of minimum sub-scores and then a VM with the lowest sub-score is picked that satisfies the threshold of the task. Lastly, the task is assigned to the selected VM to execute the given task within a deadline.
In case, the VM fails to meet the deadline, the selection of a new VM with the next minimum score is carried out. The process continues until all the tasks are mapped to the VMs. Bitten court and Madeira [35] proposed a scheduling algorithm HCOC (Hybrid Cloud Optimized Cost) for a hybrid cloud environment to minimize the cost and makespan of a workflow application. The algorithm decides about the resources that should be leased from the public cloud and aggregated to the private cloud. The motive here is to provide enough processing power in order to execute a workflow within a given time period. Firstly, the selected tasks are rescheduled and thereafter the resources from a public cloud are taken along with consideration of both price and performance of the resource. The multi-core awareness facility and known cost of a resource can minimize the overall makespan as desired by the user. Moreover, the adaptability of the HCOC algorithm to handle cost instead of a deadline makes it more flexible.
Verma and Kaushal [36] proposed a Deadline and Budget Distribution based Cost-Time Optimization (DBD-CTO) algorithm which minimizes the cost and execution time while meeting the user-defined deadline and budget constraints. They divide the workflow tasks into two groups of tasks. The tasks with more than one parent or child task are categorized as synchronization tasks and rest are categorized as simple tasks. The partitioning of workflow is done in a way so that a group of simple tasks is executed sequentially between two synchronization tasks. The workflow actually starts executing when the calculated values of execution time and cost are less than the user-defined deadline and budget. Thereafter, the overall deadline and budget are distributed into every partition of tasks, proportional to their minimum processing time and cost. Finally, all service lists are arranged in decreasing order of their cost. A service is chosen to execute tasks such that the processing cost and execution time are lesser than the partition's deadline and budget value.
Poola et al. [37] used spot and on-demand instance pricing models while scheduling workflow tasks on VMs to reduce the overall execution cost, thereby, meeting the user-defined deadline. The main advantage of the approach is to tolerate early termination of spot instances and variations in the performance of cloud resources. In the scheme, for every ready task, the critical path is evaluated and slack time is computed, i.e., the time difference between critical path time and deadline. Whenever the slack time decreases due to performance variations or failures in the system, a checkpointing and bidding strategy is applied to reduce the cost and hence, meet the deadline.
Bessai et al. [38] proposed three workflow scheduling schemes to optimize the execution time and total cost of utilizing the resources. The first scheme uses several allocation techniques to minimize the communication and execution cost while calculating the completion time of each solution. On the other hand, the second scheme aims to minimize communication and execution time while calculating the computation cost of each solution. The third scheme is based on the pare to solution obtained by the first two solutions and is called the cost-time based approach. Thus, in the third approach, only non-dominated solutions are selected by using the cost and timebased approaches.
Among all the research work that has been conducted to achieve fault tolerance in distributed systems like Grid and Cluster, scheduling plays a significant role [39]. However, very few fault-tolerant scheduling schemes have been studied in cloud computing taking virtualization and elasticity into consideration. To address these issues, Wang et al. [40] extended the primary-backup model and presented a fault-tolerant mechanism FESTAL (Fault-tolerant Elastic Scheduling algorithms for realtime TAsks in cLouds) to incorporate the cloud-specific features. The elastic resource provisioning method is used for real-time tasks to achieve both, high resource utilization and fault tolerance in the cloud.TheFESTAL comprehensively addresses the issue of reliability, elasticity, and schedulability of virtualized clouds.
The cloud infrastructure is also used for big data processing using Hadoop MapReduce framework. Its performance is heavily governed by its scheduler, which implicitly assumes that tasks make progress linearly and the cluster is homogeneous i.e., all cluster nodes are similar in terms of computational power, disk, and network I/O bandwidth. However, the performance of Hadoop's scheduler degrades severely in a heterogeneous environment. The most common place where this heterogeneity occurs is virtualized cloud computing infrastructure like Amazon EC2, Google, etc.
In the context of Hadoop MapReduce, slow tasks (map or reduce) due to faulty hardware or heavy load on that particular node are called stragglers. To address the straggler detection problem while scheduling the MapReduce application over the cloud, Zaharia et al. [41] proposed a scheduling algorithm called as Longest Approximate Time to End (LATE) that is highly robust to heterogeneous computing system like a cloud. LATE decides when to speculatively re-execute tasks that appear to be stragglers to improve response time in a cloud environment. It prioritizes speculative tasks (unlike native Hadoop scheduler which considers all stragglers equally low), selects fast nodes for execution, and binds the number of speculative tasks using a threshold to prevent thrashing.
A simple heuristic has been proposed in LATE that work well in practice. The algorithm first calculates the ProgressScore (PS) of a task as shown in Eq. 1 (like Hadoop native scheduler) where M is the number of key/value pairs that have been processed and N is the number of key/value pairs that need to be processed in total for map task. In the same manner, M' is the number of key/value pairs that have been processed and N' is the number of key/value pairs that have been processed in any particular phase of reduce task. Further, it calculates the ProgressRate of each task as ProgressScore/T, and then the new heuristic, "time to completion" or Approximate Time to End (ATE) of the task is estimated as (1-ProgressScore)/ProgressRate. The heuristic serves to prioritize the stragglers i.e., tasks with high "time to completion" values are speculatively re-executed first. A different technique to estimate the completion time may also be incorporated into LATE. Furthermore, LATE also improves the performance of speculative execution in a homogeneous environment.
To improve the LATE algorithm, Chen et al. [42] and Xiaoyu et al. [43] proposed Self-adaptive MapReduce Scheduling Algorithm (SAMR) and Enhanced Self-Adaptive MapReduce scheduling (ESAMR) respectively, with a better heuristic to identify the stragglers. Yang et al. [44] further improved the original speculative execution in Hadoop (called Hadoop Speculative) and LATE scheduler in a heterogeneous cloud environment by proposing a new scheduling scheme known as Adaptive Task Allocation Scheduler (ATAS). It employs an efficient and more accurate heuristic called TimeToEnd for each task in order to trace stragglers. The motive of this improved method is to increase the success ratio of backup tasks that consequently increases the system's ability to respond in an efficient manner. The nodes are divided into QuickNode and SlowNode. The QuickNodeis always given priority while the allocation of backup tasks. The authors performed three simulation experiments and concluded that ATAS effectively enhances the performance of Hadoop framework in a heterogeneous cloud computing environment. Security in the cloud computing environment is one of the most important issues as sensitive data may get leaked to unauthorized persons. Secure scheduling prevents the allocation of tasks and associated data to vulnerable machines. Abazari et al. [45] proposed a heuristic algorithm for tasks scheduling which is based on the task's security requirements and completion time. To quantify tasks security requirements, the authors introduced task security sensitivity measurement. Besides this, they also proposed a new attack response to tackle some security threats. Table 1 summarizes the various QoS metrics used during the evaluation of individual algorithm discussed in this section. In addition, Table 2 analyzes the discussed algorithms on the basis of objectives, SLA adherence, strengths/weakness, experimental/environments scale, and target application type, etc.

The Meta-heuristic Approach
The meta-heuristic technique has the following two categories: (i) simple e.g., simulated annealing vol 34 no 6 November 2019 Table 1 Analysis of metrics measured during the evaluation of heuristic algorithms.
The simulated annealing (SA) is a probabilistic procedure to approximate the global optimum of a given objective function. Precisely, it is a meta-heuristic to estimate global minimum or maximum in a given large search space. The basic idea of SA has been derived from the physical annealing process in metallurgy. The technique involves heating and controlled cooling of a material to increase the size of its crystals and reduce the defects. The so-called physical annealing has three stages, (i ) Heating to enhance the thermal motion of particles, (ii) Isothermal to exchange heat with the surrounding environment and (iii) Cooling to make the thermal motion of the particle weaken and become more orderly. Inspired by SA, Xi Liu et al. [46]proposed a task scheduling mechanism to overcome the shortcomings of the local optimum search method. The method uses a greedy approach to generate an initial value. In the heating stage, the temperature is raised sufficiently and afterward, a given set of rules is used to generate a new value. In case, the new value is either better than the original value or possess an acceptable probability;the new value is replaced by original value until cooling stage. Compared with traditional algorithms, the task scheduling based on SA meets the user's requirement as well as enhances the overall performance of the system.
Analysis of metrics measured during the evaluation of heuristic algorithms.
The application of genetic algorithm (GA)as cloud scheduling technique can be traced back to Early 2009 when Zhao et al. [47] proposed a scheduler to map independent and divisible tasks to cloud resources with makespan as the objective. In the scheme, M tasks are scheduled over N cloud resources with a simple chromosome encoding as already depicted in Fig. 2 (section 2), assuming the number of tasks as its length. Each gene is represented as an integer i where i ∈ {1, 2, 3, . . . , M}. Further, each index of the resource is represented as j where j (1, 2, . . . , N), indicating that i th task T i has been scheduled on the j th resource R j . Therefore, the use of GA is simple and better to formulate cloud scheduling problems as proposed by Kumar et al. [32] and Junwei et al. [48].The work proposed by Kumar et al. [32] combines GA with Max-Min and Min-Min to improve the speed of the algorithm and population initialization, thereby, minimizing the makespan.
In classical GA method, the initial population (essentially, schedule in this context) is generated randomly and may not always be fit. Also, whenever mutated, there is a minimal chance that the initial populations produce a better schedule. Hence, using min-min and max-min with GA while generating an initial population, a fit schedule can be produced resulting in better schedules whenever mutated. Junwei et al. [48] used the same encoding scheme as Zhao et al. [47] and proposed a modified genetic algorithm (MGA) to schedule the cloud resources. The parameters such as average makespan, total makespan, user cost have been considered and prove MGA to be more efficient for cloud computing. Nevertheless, the scheme of chromosome encoding is typical. However, the same is widely used for cloud resource scheduling.
Ant colony optimization (ACO) is another popular natureinspired meta-heuristic technique used in cloud scheduling. In Fig. 7, a general framework is illustrated where ACO is used to schedule user tasks on cloud resources [4]. In its simplest form, M steps are used by each ant in order to construct a solution. The heuristic information and pheromones are used by an ant to select the suitable resource R j in the i th step for scheduling the i th task T i . Further, after executing M steps, all tasks are scheduled with different resources.
Based on the same scheme aforementioned, Banerjee et al. [49] and Liu et al. [50] schedule M tasks one by one to the resources of the cloud as only a single task can be scheduled on any resource at each step. Banerjee et al. [49] modify the pheromone update scheme according to different time slots of cloud service. In the scheme, each antis positioned on a starting node and a state transition rule is applied to build an iterative solution. In addition, a local pheromone has been used to update rule until all ants built a complete solution. The analysis, however, does not consider fault-tolerance issues. Liu et al. [50] use the heuristic information based on the user's QoS criteria like cost, response time, system reliability and security to guide ant to select an optimal resource. The scheduling algorithm is designed to schedule service flow with several QoS requirements as mentioned above. The end users are permitted to define QoS threshold in software level agreement (SLA). In order to ensure the QoS, the default rate is used to denote the ratio that may be dishonored by a cloud service provider. An SLA monitoring module has been introduced to keep a check on the running state of cloud services.
In literature, the ACO-based approach was also used by Zhu et al. [51] to optimize user cost, network bandwidth, makespan, and system reliability while scheduling applications over cloud resources. According to different QoS metrics, the tasks are   In addition to ACO and GA, particle swarm optimization (PSO)is also a meta-heuristic technique as it makes few or no assumptions about the problem being optimized and can search very large spaces of candidate solutions [53]. PSO is an effective tool for scheduling cloud task on cloud resources and offers faster convergence than other meta-heuristic algorithms. A simple variation of the PSO procedure works by having a population (called a swarm)of candidate solutions (called particles). These particles are moved around in the search-space using few simple formulae. The movements of the particles are directed by their own best-known location in the search-space as well as the entire swarm's best-known location. Whenever an improved position is being discovered, the particles participate and guide the movement of the swarm. The process is repeated that eventually lead to a satisfactory solution.
Pandey et al. [54] use the PSO technique to schedule cloud tasks employing the same GA encoding scheme as described in [47]. In the method, the task number is assumed to position length of particles and the integer value indicates the cloud resource is executing the corresponding task. The approach considers, both, data transmission and computation cost. The total cost of execution is obtained by varying the cost of computing resources and communication cost between resources. The proposed heuristic is generic in nature due to the fact that any number of resources and task can use it only by increasing the particle dimension and number of resources. Later, Rodriguez and Buyya [55] proposed a PSO based workflow scheduling algorithm in a public cloud to minimize the overall execution cost while meeting a user-defined deadline. Besides a scheduling algorithm at the application layer, the proposed scheme also discusses a resource provisioning algorithm at the virtualization layer. The scheduling algorithm attempts to minimize the Total Execution Cost (TEC)of the schedule. The formulated problem has been shown in Eq. 2 where L ET i and L ST i are Lease End Time and Lease Start Time respectively of the i th virtual machines with τ as a unit of time. Furthermore, TET is total execution time and δ w is a deadline associated with workflow (W ).
(2) In this scheme, the real number is rounded to integer number to indicate the resource index on which the workflow is scheduled. It is worth mentioning that the features of the resources are not reflected by the index of the resource. Therefore, the particles may fly randomly, in case, learning has been made from the resources index.
Dhinesh et al. [56] designed an algorithm named as Honey Bee Behavior inspired Load Balancing scheme (HBB-LB). The algorithm aims to maximize the throughput of the system and achieves a balanced load across virtual machines. In addition, along with balancing the load of VMs, the priorities of tasks are considered. The tasks are removed from heavily loaded VMs so that the overall waiting time of the task in the queue can be minimized. The removed tasks from these VMs are treated as honey bees that act as information updater globally.
Wen et al. [57] proposed a secure Multi-Objective Privacy-Aware workflow scheduling algorithm (MOPA) which minimizes both execution time and cost with a data privacy protection constraint. Given a set of workflow instances in the cloud environments the authors have modeled a multi-objective optimization problem as shown in Eq. 3.

Mi ni mi ze F = (T wtotal, Cwtotalsatis f ying P
Where T wtotal and Cwtotal are total execution time and monetary cost respectively, and P is the set of privacy protection constraints. MOPA proposes a problem-specific encoding strategy which is based on the currently-generated workflow schedules, candidate lists of VM instances, and related privacy protection constraints. The authors compare the proposed scheme with NSGA-II and MOPSO which were modified with Table 3 Analysis of metrics measured during the evaluation of heuristic algorithms.

The Hybrid-Heuristic Approach
Every heuristic and meta-heuristic scheduling algorithm has a tradeoff in terms of performance. For example, ACO technique may provide a better schedule than other traditional scheduling algorithm in terms of the total cost. However, it takes more computation time. Hence, in order to overcome the limitations of an individual technique, the latest approach in the field of cloud scheduling is to combine the two or more heuristics or meta-heuristic techniques into a single heuristic method. This kind of integration may compensate for the intrinsic weak points of the specific heuristic algorithm. For instance, Wen et al. [61] improve the resource utilization ratio by combining PSO and ACO schemes. The proposed scheme takes a longer computation time at each iteration of the convergence process, however, it has a higher chance to find a better result than a single heuristic. Delavar and Aryan [62] propose a hybrid scheduling algorithm GMSW to map workflow tasks (DAG) on the cloud resources having various communication cost. It considers the suitable distribution of the workload on VMs and helps in reducing the number of GA operations via making an optimized initial population. The algorithm uses two evaluation functions in order to obtain a solution. The first function measures the priority of every task in the workflow DAG and the second function evaluates the value of the generated solution. Due to the hybrid nature of the algorithm, the optimal solution can be achieved early. Further, the searching process is done on the basis of the failure frequency and workload, led by special mutation method, considering the most effective task and the resources reassignment.
In recent years, multi-objective cloud scheduling has emerged as one of the major challenges. The concept is based on the optimization of more than one QoS parameters simultaneously. Though the problem is NP-hard, evolutionary computing techniques i.e.,meta-heuristics proved to be efficient with a minimum time overhead. However, the multi-objective scheduling becomes difficult whenever one parameter has to be minimized and other parameters need to be maximized. In literature, a multi-objective scheduling algorithm has been proposed by Yassa et al. [63] and Mezmaz et al. [64] where energy is one of the scheduling objectives. In both algorithms, Dynamic Voltage and Frequency Scaling (DVFS) technique have been used to minimize overall energy consumption. Yassa et al. [63] used a hybrid PSO scheme to optimize makespan, cost as well as energy simultaneously. Also, the heterogeneity of cluster nodes has been taken into consideration. Using the DVFS scheme, the processor can be operated on the different supply voltage. However, the clock cycles are sacrificed in terms of speed. Therefore, energy can be saved only by decreasing the execution time that may compromise the quality of schedules and energy. The hybrid scheme i.e., DVFS Multi-Objective Discrete Particle Swarm Optimization (DVFS-MODPSO) produces a set of non-dominated solutions in order to evaluate the user preference. Accordingly, a schedule can be selected to achieve the QoS requirement. Mezmaz et al. [64] presented a new parallel multi-objective (bi-objective) hybrid genetic algorithm to schedule the precedence constraint application like DAGs over heterogeneous computing system e.g., cloud computing. Being bi-objective in nature, the algorithm optimizes makespan (completion time of the last task in DAG) as well as energy using DVFS technique. In the experimental study, the results exhibit a reduction in energy consumption 47.5% and makespan by 12%.
Another important QoS parameter in hybrid heuristic is load balancing A better workload balanced system always enhances the overall throughput and energy efficiency. Delavar and Aryan [65] proposed a scheme to optimize load balancing, speedup ratio and makespan. The algorithm combines GA with Round Robin and Best Fit techniques. Hence, the iteration of GA operations is decreased while executing the algorithm   HHSA [68] Makespan, Waiting time FIFO, fair scheduler FUGE [66] Makespan, Cost, Load balancing Classical ACO, MACO [77] ACO-PSO [61] Time, Resource utilization Classical ACO Hybrid [70] Speed up, Energy efficiency Classical ACO with an optimized initial population. Firstly, the impact of tasks on other tasks is analyzed and prioritized accordingly in the complex graph. Afterward, Best-Fit and Round Robin are combined to generate an optimal initial population. M Shojafar et al. [66] combined the FUzzy theory with the GEnetic algorithm and proposed a hybrid scheme called FUGE to balance the workload among VMs while optimizing execution time and cost. In the scheme, Standard Genetic Algorithm (SGA) is modified with a combination of fuzzy theory in order to develop a fuzzy-based steady-state genetic algorithm which may improve the performance in terms of makespan. The jobs are assigned to the available resources by considering the virtual machine's memory, bandwidth, processing speed, and job lengths. Authors formulated the job scheduling problem into a Linear Programming (LP) model as shown in Eq. 4, where the objective function is to minimize the total time required to finish all jobs subjected to eight constraints [66].
Recently, hyper-heuristic techniques are gaining popularity indifferent research domains. In these schemes, two or more heuristic algorithms are combined [67] with two additional operators namely, low-level heuristic selection (LLH) and acceptance operator. LLH selection operator determines the selection of a heuristic algorithm whereas acceptance operator determines the timing to select a new heuristic algorithm. The hyper-heuristic also attempts to use two or more heuristics during the convergence process like other hybrid-heuristic schemes. However, it uses "one and only one" heuristic algorithm at each iteration. Hence, it is fundamentally different from the so-called hybrid heuristic algorithm which uses more than one heuristics (low-level) at each iteration, thus, requiring a much longer computation time. In the existing literature, Tsai et al. [68] proposed a hyper-heuristic scheduling algorithm (HHSA) to find better scheduling of task on cloud computing systems. The technique automatically determines the appropriate low heuristic algorithm (SA, GA, ACO, PSO) to be used with the help of two detection operators, namely, diversity and improvement. These low-level heuristic algorithms are used in finding a better candidate solution. Further, the solution is optimized through low-level heuristic by using perturbation operator to improve the performance in terms of makespan. The proposed "hyperheuristic" technique exploits the strengths of every low-level algorithm keeping the computation time lower by executing one low-level algorithm at a time. The proposed HHSA algorithm has been validated through CloudSim and real Hadoop cluster.
Wen et al. [61] attempted to improve the resource utilization ratio desired by a cloud service provider and proposed a hybrid scheme consisting of ACO and PSO. The ACO is used as the main procedure to select appropriate resources for various tasks. The pheromone is associated with the resource node. Whenever a resource node is selected for a newly arrived task, the pheromone on the current resource node is reduced. The ACO as an individual technique achieves local optima and may terminate prematurely. Therefore, the PSO process is hybridized with ACO in order to maximize resource utilization. However, to calculate position and particle velocity, crossover and mutation operations are used to combine the search information of the individual best solution, global best solution and the particle itself.
Cuckoo Search (CS) is another meta-heuristic optimization technique developed by Yang and Deb [69] in 2009 which was motivated by the obligate brood parasitic activities of some cuckoo species in combination with the Levy flight actions of some birds and fruit flies. Apart from the population size n, The Cuckoo search uses a single parameter and hence it is very easy to apply in a wide variety of scenarios. Babukarthik et al. [70] and Navimipour et al [71] employed the CS algorithm in combination with other meta-heuristics ina various cloud scheduling application. Particularly, Babukarthik et al. [70] combined the advantages of ACO with the CS technique and proposed a hybrid algorithm to schedule the tasks to save energy. In the scheme, ACO is used as the main framework where CS is used to find the next resource for the task instead of heuristic information. Table 5 and 6 present the summary of discussed algorithms in this section.

OPEN CHALLENGES AND RESEARCH DIRECTIONS
The existing schedulers available in the literature for the application layer of cloud capture much of the aspects. Sometimes they No other than op-timization for-mulation come up with some heuristics to overcome the problem while some other times they exploit the complementary advantages of heuristic and meta-heuristic techniques to find a better result. However, there is still some scope for improvement. In this section, we will explore some aspects that must be examined to improve performance. Followings are some research directions.

Real-Time Scheduling
Scheduling of real-time workflow applications has not been taken much attention in a cloud environment. Traditional realtime scheduling on multiprocessor, Grid and cluster environment have been studied extensively in the available literature but achieving strict time requirement in virtualized and scalable cloud environment imposes great challenge. These timedependent and mission-critical application cannot bear deadline miss. When and where to schedule real-time application efficiently so that it may acquire its deadline is a complex task to be still addressed.

Dynamic Scheduling
As the cloud resources (whether physical infrastructure or number and type of VMs) and the requests of the user can change dynamically, scheduling scheme must be smart enough to adapt to a changing environment in real-time. As various cloud users with different QoS requirement are migrating from an inhouse data center to the public cloud, scheduling approaches for such dynamic environment should have the adaptability to adjust accordingly.

Multi-Objective Scheduling
Until now, optimizing multiple scheduling parameters, all variables except one are made constraints while transforming scheduling problem into Linear Program. Multi-objective scheduling has gained much attention in which more than one parameter is optimized simultaneously. This multi-objective optimization problem becomes more complex if conflicting criteria are optimized at the same time as time and energy. If completion time is to be minimized, the more powerful server is to be fired that consumes more energy. This multi-objective scheduling phenomenon is very common in cloud computing as objectives of cloud user; cloud providers can be independent. For example, cloud user can try to optimize time efficiency while at the same time the service provider wants to optimize resource utilization. Even for a single stakeholder some time, more than one scheduling parameter need to be optimized for example a cloud user may need to the optimized response time of its application with minimum budget.

Scheduling for Big Data
Over the past few years, the world has witnessed the vast generation of data from a variety of sources whether it is a scientific lab, e-commerce site, business enterprises, banking system, etc. This huge amount of data is characterized by 5 V's that is velocity, variety, volume, veracity, and value. There are many distributed framework like Hadoop MapReduce, Hadoop Spark, GraphLab, Microsoft Dryad [78] to process it efficiently. Now, everything is migrating towards the cloud;big data processing has made its entry to the cloud computing environment. In heterogeneous cloud environment scheduling of big data for processing through these frameworks imposes many challenges which need to be addressed.

Secure Scheduling
Data security, at all times, is one of the most important concerns to cloud users because their data may be seized or stolen by malicious parties during those data flows, specifically for less protected hybrid cloud systems. Research is required to implement scheduling in a way that it safeguards the sensitive and/or private information related to tasks/users. This type of scheduling is significant when the scheduled jobs carry private and/ or special information about various subjects in a given context.

CONCLUSION
In cloud computing, the problem of scheduling plays a significant role to optimize QoS requirements of multiple stake holders at the application as well as at virtualization layer. As the problem is NP-hard, the traditional scheduling algorithms fail to exhibit the required performance and take exponential time to produce the best schedules. On the other hand, the scheduling algorithms based on a scheme like heuristic, meta-heuristic and hybrid heuristicproduces better results and are extensively used to schedule different categories of application (e.g., set of independent tasks, scientific workflow, MapReduce jobs, etc.). This survey paper discusses various cloud scheduling algorithms used only at the application layer. Algorithms are categorized on the basis of fundamental techniques used for design. Among these techniques, nature-inspired meta-heuristics are problem independent techniques which are used in many of scheduling algorithms. Whereas the heuristic techniques are problem dependent, hence, their scope is limited and specific to the environment for which they are designed. Both these techniques have their limitations which are overcome by hybridheuristic techniques. It takes the advantages of complementary benefits for heuristic and meta-heuristic techniques. During the study, we have covered many application types which are usually scheduled on cloud resources. Due to diverse characteristics of such applications, the design of scheduling algorithms differs in large scale. In the end, we provide the current research trends in this evolving area.