Article Preview
Top1. Introduction
Cloud computing is a model for enabling ubiquitous, comfortable, and demand-oriented network access to a set of sharing and configurable computing resources, such as networks, servers, storage space, application services and other services, which can be supplied quickly and can be finalized with minimum effort (Armbrust, Fox, & Griffith., 2009; Buyya, Abramson, Giddy, & Stockinger, 2002). The approach that is followed by cloud computing services, is paying a specific amount for the demand and the availability of the resources for the agreed period. Therefore, the well-known cloud servers, such as Amazon EC2, are in the form of using the computation of the resource in hourly use of CPU (Armbrust, Fox, & Griffith., 2009). Although this method is one of the most basic methods of selling goods or services, prevents the complex interaction between buyer and cloud servers. A typical criticism on this method is that during the high workload of the system, a job that is requested by a customer, should wait for long until the workload becomes less and the needed resources be allocated for the job. The current methods of resource allocation such as FIFO, Round-Robin, etc. which are used in clouds, perform an unfair allocation regardless of the priority between the jobs. In most cloud services, scheduling tasks with respect to these conditions is a complex task taking into account the requirements mentioned in the Service Level Agreement. Typically, while assigning resources to the customers, cloud servers agree on some issues as their commitments to provide high quality services, any allocation of resources to tasks, or shifting the tasks from one source to another must be agreed considering the quality of the service. For example, if a resource available for a task, no other task with a higher bid can take over that source until executing the allocated source and also at the time of investigating the applicant's task proposals to allocate to resources, considering these parameters for quality assurance seems to be required. Concepts such as dead line and maximizing the customers’ budget are among these issues. Other issues can also be included in this discussion regarding that Network bandwidth for those jobs requires input file or tasks that are composed of several sub-task (Workflow).
For example, a user has to travel to a city and uses an integrating service that simultaneously performs buying plane tickets, hotel reservations and etc. The cloud service provider that is responsible for executing this task, can simultaneously schedule several subtasks that are correlated, using the scheduler. This scheduler should schedule the mentioned subtasks in a way that their deadline and allocated resources be simultaneous and additionally the required bandwidth to communicate the subtasks is properly provided (Bandwidth). For example, a user has intended to travel to a city or in another example we can name the scientific workflows which are carried out simultaneously and in parallel on the resources needed. In this type of workflow, in addition to considering the implementation time of the original work, the relationship of the subtasks with each other and their required bandwidth must also be considered. Customers are interested to get their tasks done in the least possible time and with minimum cost that the cloud server must receive it. On the other hand, the cloud server also tends to maximize the utilization of its resources and also increase the amount of gain and theses two are in conflict with each other and are not usually consistent with the traditional methods of resource allocation and the existing scheduling mechanisms. Since providing service in the clouds is a kind of product in the supply chain cycle, scheduling the service can be divided into two general categories:
- 1.
User-level
- 2.
System-level