# Resource Scheduling in Cloud Computing Based on a Hybridized Whale Optimization Algorithm
## 2 Cloud Computing Paradigm, Scheduling and Literature Review
### Resource Scheduling in Cloud Computing  
The flexibility of cloud computing services is reflected in the effectiveness of the demanded resources being provided to the end-users over the internet. Cloud computing centralized infrastructure administers various types of tasks, which are sometimes complex and resource consuming. In order to establish the connection between the tasks and the resources that will execute those tasks, with the availability in mind, scheduling techniques and algorithms that enable this link between the resources (VMs) hosted in the cloud data centers and the tasks submitted by the end-users, should be employed. The notion of resource scheduling becomes an important aspect of the cloud computing paradigm, where the goal is to execute the tasks in the least amount of time and with the least possible resource consumption. More precisely, the goal is to determine the best resource (VM) for executing each of requested tasks. This objective is carried by the scheduling algorithm. The scheduler should help in enhancements of QoS, such as reliability, productivity, resource utilization, energy consumption, cost of the execution, etc. [29]. By using scheduling algorithms, an optimal (or near optimal) allocation of available resources among requested tasks can be obtained in finite time to achieve desired QoS [2]. The goal of scheduling is to build a plan that determines on which resources and when each task will be executed. It should be noted that a scheduling has been for years a current research topic in various domains, for example job shop scheduling, operating system scheduling, etc. As already stated in Section 1, the terms resource scheduling, task scheduling, and cloudlet scheduling are used interchangeably in the modern literature. The notion of the cloudlet is adopted from the CloudSim framework, where the submitted end-users' tasks are referred to as cloudlets. Also, the term resource refers to the VM. With resource scheduling certain issues may arise. Arisen issues can be handled with effective provisioning algorithms, which should analyze and organize the upcoming workload in an adequate way. These issues are connected to the workload arrangement, which depends on the types of requests. If a classical pay-as-you-go model is utilized, on-demand scheduling, where the cloud provider enables access to the resources in a reasonable time followed by random workload, is appropriate. However, online scheduling can cause problems. If distribution of the workload to VMs is unequal, a scenario where some machines are executing more tasks and are exceeding their capacity and overflowing the schedule time, may emerge. This is known as the issue of load balancing. Efficient load balancing algorithms, that distribute the load evenly on all available VMs should be employed. Another issue may arise in scenarios where there are more or less available VMs than the real resources' need of submitted tasks. In the first case, where there is less than the needed VMs available, a scenario of under provisioning may occur. In the latter case, there is a scenario of over provisioning. Neither of them are good. If there is under provisioning, clients' needs could not be processed efficiently and that can lead to end-users' dissatisfaction. On the contrary, if there is over provisioning, the costs of resource utilization are unnecessarily increased. Scheduling algorithms can be divided into static and dynamic algorithms [29; 36]. Static scheduling algorithms before execution (upfront) require detailed information regarding the tasks, such as length, number of tasks, and the deadlines for its execution, as well as information regarding the resources (VMs) that should be provided, such as available processing power, memory capacity, energy consumption, etc.