I. Introduction
Cloud computing is a popular networking paradigm that provides resources via the internet [1]. The economical IT operations offered by Cloud have led to an increase in demands of Cloud infrastructures by users. Cloud computing as a service model offers computing, storage, and software as a service to a large number of users rather than a product. Resource usages are measured using some metrics and users are charged on a Pay-per-Use basis. Job request scheduling in cloud computing is a process of allocating and adjusting computing, storage resources and services between various users based on usage strategy in the configuration environment [2]. The key challenge in resource scheduling is the allocation of user job request to maximize the profit of the service provider and maintain the required QoS of the user’s job request. The complexity of resource scheduling increases with an increase in the number of job requests and upscale in cloud resources. In view of this, a number of classical scheduling algorithms including Min-Min, Min-Max, and FIFO were introduced. Min-Min and Min-Max fail to efficiently utilize resources leading to load imbalance problem [3]. FIFO schedules job requests based on the arrival time of the request. A request may be starved if queued behind a large request and leads to the expiration of its deadline. Also, these techniques fail when a user priority is required [3]. In cloud computing, a resource may be partitioned into a number of independent computing resources (Virtual Machines) capable of processing job requests concurrently. During scheduling of resources, a large job request may be assigned to a VM with less ability and this result to large execution time which fails to satisfy the required QoS. Also, a job request may be assigned to a VM with a strong ability.