A Literature Survey on Resource Management Techniques, Issues and Challenges in Cloud Computing

Cloud computing is a large scale distributed computing which provides on demand services for clients. Cloud Clients use web browsers, mobile apps, thin clients, or terminal emulators to request and control their cloud resources at any time and anywhere through the network. As many companies are shifting their data to cloud and as many people are being aware of the advantages of storing data to cloud, there is increasing number of cloud computing infrastructure and large amount of data which lead to the complexity management for cloud providers. We surveyed the state-of-the-art resource management techniques for IaaS (infrastructure as a service) in cloud computing. Then we put forward different major issues in the deployment of the cloud infrastructure in order to avoid poor service delivery in cloud computing.


Introduction
Cloud computing is a modern paradigm to provide services through the Internet. The cloud infrastructure often sit in geographically dispersed data centers around the world and the customers obtain services through internet. A data center is a physical area where IT equipment reside such as disk enclosures, controller enclosure, routers, switches, servers, load balancers, firewalls, power delivery devices, cooling machines, unmanaged devices, and other security devices. Those IT equipment can be remotely managed or monitored IT Engineers using monitoring software. We refer to the figure 1 below to show the cloud resources in data center where a number of racks contain a certain number of servers, swithes or routers stacked one above the other.
The virtualization technologies enabled the realization of large-scale data centers resources to be leased and released by third parties through pay per use model [1]. Since cloud computing resources are scattered across various places and its use continues to grow, companies, universities and research centers have high-performance needs which lead to the resource management problems. According to the NIST [2], cloud computing resources are classified as IaaS (infrastructure as a Service), SaaS (Sofware as a Servce) and PaaS (Platform as a Service). One of the key problem in cloud computing is the management of how to procure and release the resources [3]. Other cloud characteristics such as the interdependancies of heterogeneous resource types, the variation and unpredictability of the workload all contribute to the complexity of cloud environment management.
To address the above mentioned problems, we referred to the works done by other researchers on this topic. Currently, we found that there exist few papers and most of them lack detailed working on each of the resource management technique and demonstrate limited critical discussions on the existing issues and challenges. Author in [4] shows the state-of-theart resource provisioning technique. Authors have based on some metrics such as cost, utility, and service quality. Author in [5] also has studied dynamic resource provisioning technique using the online auction framework. Authors in [6] have proposed an IEDA based on auction protocol. Another technique of the resource management was studied in [7]  According to [9], the survey study on VMs placement for cloud computing shows that virtual machines (VMs) can be mapped onto physical machines (PMs) to optimize cloud resources. Authors in [10] have outlined the use of self-organizing algorithms in resource management such as bio-inspired computing, multi-agent system, bacterial foraging algorithm (BFA), shuffle flog algorithm leaping (SFLA), evolutionary techniques and have highlighted few of the main open challenges related to the area such as energy efficiency, and security issues. The security issues in cloud resources also were highlighted in [11].
Our contributions in this survey study is to conduct a comprehensive study on different techniques that can be used to solve resource management problems. For this paper, we reviewed 300+ recent research papers, which we selected about a third for this article. The rest of the paper is divided into the following section: Section 2 outlined the scope of the resource management. Section 3 presented resource management techniques. Section 4 discussed some issues and solutions for resource management. Section 5 showed the remaining open problems, and suggestions. Section 6 concluded the paper.

The Scope of Resource Management in Cloud Computing
According to Peter Mell and Timothy Grance from NIST [2], cloud computing is defined as a model for providing services to configurable computing resources which can be rapidly leased and released with cloud user's minimal management effort or with a service provider interaction. The cloud computing service models are: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS).

Classifications of Cloud Computing Resources
Cloud computing resources are classified into physical resources, virtual resources, and logical resources. The physical resources are processors, memory, disk drive, Network Interface Controller (NIC), peripheral devices (floppy, keyboard), network resources (networking products), storage media, and other physical components. The physical resources are distributed around the world in data centers for faster serving the cloud clients. Virtualization is a a technique to divide the computer resources into execution environments to make the physical machine to be more productive. It allows multiple instances of an operating system and associated application to run on single physical machine. The virtual resources (VR) are dynamically shared, schedulered, and scaled according to consumer demand. Virtual resources are virtual processor (vCPU), virtual memory, virtual Switch (vSwitch), virtual storage (vSAN).
Through the virtualization technology, multiple resources are dynamically assigned and reassigned. Those resources are managed with resource management system (RMS) such that when a user orders resources, the RMS checks the resources availability and decides if they satisfy users' requests. The RMS is responsible to monitor continuously the user's allocated resources while optimizing the system [10]. Virtual and Physical servers in data-centers host many applications types such as webservers, databases, customer business apps, etc. Virtual resource management tools and technologies in cloud data-center has the cloud computing platforms shifts toward providing infrastructure as service(IaaS) where computing resources are provisioned on a per-demand resource basis regardless of location of the available computing resources [12]. Logical resources management are system abstractions which have temporary control over physical resources [13] (i.e operating system, energy, network throughput/ bandwidth, information security, protocols, APIs, network loads, and delays).

The Requirements of Cloud Computing Resource Management
Cloud computing presents five characteristics and their requirements: on-demand selfservice, broadband network access, resource pooling, rapid elasticity, and measured service.

Challenges in Cloud Computing Resource Management
There exists several problems to manage cloud resources. In this section, we surveyed some of the challenges related to cloud resource management. When a cloud users make requests to provide of one or more resources, the cloud provider's resource management system (RMS) schedules the available resources by making them available to the cloud users but some challenges are still available such as the capabilities to minimize energy consumption, minimize the cost, and maximize the performance. The efficient strategies for resource management are as follows [14][15][16][17]: energy-efficient, bandwidth cost minimization, storage and performance optimization. We limit ourselves to the brief review of some works addressing power resources, networking resources, compute resources, storage resources challenges.
The power resource is a big issue in cloud resource management [18]. The power consumption rate for idle servers in datacenters is 60% and the rest of power coupled with cooling equipment, and the security system. In order to improve the energy efficiency it is advised to turn off the idle servers and automate the cooling system. Other power management solutions are: Dynamic Component Deactivation (DCD), Dynamic Performance Scaling (DPS), and Dynamic Voltage and Frequency Scaling (DVFS) [19]. The DVFS scheme maximizes energy consumptions and user profits. The study in [20] outlines an energy-aware algorithm that supports DVFS. Paper [21], proposes a multi-agent-based resource management to minimize the energy consumption. The network resource also is a big challenge in cloud computing. The study in [22,23] proposed the VM resource scheduling algorithm based on auction mechanism which considered network bandwidth cost minimization. The compute resource is important and can be optimization. Edwardo, et al. [24] has presented a dynamic programming approach to optimize the computing resources. Traditional storage resource management system faces many challenges in cloud computing. A modern resource management system is needed to manage cloud storage resources.

Strategies of Cloud Computing Resource Management
Resource management strategies are classified into resource monitoring, resource allocation, resource consolidation, resource discovery, resource scheduling, resource sharing, resource modeling, and resource provisioning. We reviewed various strategies developed so far for resource management.
(1) Automatic resource allocation and dynamic resource allocation are the strategies used for resource management to increase the profit of cloud resource utilization, and minimize the response time.
(2) Network-Aware Resource Management strategy solves efficient network resource sharing issue, and network congestion issues based on SDN (Software-Defined Network) resource management strategy.
(3) Resource scheduling, we adopt two types of resource scheduling: Processor scheduling and server scheduling. Single and multiprocessor scheduling should be used to reduce energy consumption. Server scheduling helps to find the idle machines to be turn off when no services running on them to save the energy. Using this strategy, server can dynamically start, hang, or turned off.
(4) Resource provisioning can solve the overall workflow execution cost and deadline constraints.
(5) Resource discovery helps to locate desired resources without the global knowledge about shared resource information with less human intervention (i.e multi-valued distributed hash tables).
(6) Resource monitoring strategy allows monitoring the resource information such as compute (CPU usage, memory usage, and operations), capacity, network, power, security, and event monitoring.

Resource Management Techniques
The main objective of resource management is to reduce the service costs, improve the performance, security, and energy efficiency. Here, we considered different resource management techniques based on parameters like monetary parameters (service cost), application performance parameters (response time, execution time, delay, SLA violation, task type, number of processors needed to run tasks, throughput, resource availability, resource utlization, etc), security, and energy-efficiency parameters (overall power, energy consumption) [25]. The algorithms such as load balancing, Round Robin, Bin packing algorithm and gradient search algorithm were mentioned as the optimization methods to improve the performance, reduce the cost, and minimize the energy consumption in IaaS resources [26][27][28][29].
The research in [30] considered a stochastic model based on load balancing and scheduling in cloud computing clusters [31,32]. Another resource management methods were proposed in [33] which use the Self-Organizing Clouds (SOC) to achieve the maximum of the resource utilization and to deliver optimal execution time. Table 2 gives a summary comparison of cloud resources based on some metrics.

Virtualization Techniques
Virtualization is a part of cloud computing and is very worthwhile concept [34]. This concept has started back in 1964 with IBM project called CP/CMS system and later spreaded all the world [35]. Virtualization technique is a framework to divide the resources of a computer into 1922 execution environments to make the physical machine to be productive for the resource utilization and resource management. There are different kind of virtualization technology such as storage virtualization, server virtualization, network virtualization, client virtualization, and operation framework virtualization. The network virtualization is based on virtualized network switch technology commonly known as vSwitch. Client Virtualization is based on creating a client desktop known as VDI (virtual desktop infrastructure). Storage virtualization is a virtualization technique based on connecting the storage system to the application server over the network. It is a solution to cloud users to store their data onto unified cloud platforms. Among the above mentioned techniques, we added the following techniques: Resource adaptation Resource allocation Resource provisioning Resource discovery Resource scheduling Resource mapping

Migration Techniques
Migration technique is the process of moving an operating system instance from one node to another node without interrupting an operation in order to improve the system reliability and availability [56]. It facilitates load balancing, low level system maintenance, fault tolerant, and energy efficiency.
Due to the sensitivity of the migration process, some performance metrics have to be considered such as preparation time, memory pages transferred estimation, total migration time, and application performance degradation. a. Live migration b. Offline migration c. Cold migration d. Hybrid migration e. Storage Migration There are many VM storage data migration solutions. In this paper, the following storage data migration solutions shoud be cited: i.
LVM mirroring based data migration solution ii. LDM Mirroring-based Data Migration Solution iii. iii.SmartVirtualization and SmartMigration based data migration solution:

Other techniques 3.3.1. Server Optimization
The optimization for server migration helps on improving the live migration and optimizing the performance metrics such as total migration time, and downtime while providing uninterruptible services to applications running in VMs. The following techniques should be listed: a. Memory Page Compression b. Delta page transfer c. Data de-duplication d. Post-copy technique e. Hybrid pre and post copy f.
Server consolidation g. The memory buddies

Load Balancing with Data Migration
The more VMs can be placed on the same host, the greater the workload and the increase of the VMs migration and the degradation of the system performance. Load Balancing with data migration is important in virtual environment. Some load balancing algorithms were proposed such as self acting load balancing algorithm, and many others. The advantage of load balancing algorithms are to enhance the performance in data migration and the resource utilization rate. Considering a large parallel file system, where data are transferred between the memory and the storage devices. There are different challenges that are faced during load balancing such as scalability, and the availability, and the load migration. To overcome those challenges, the hotspot mitigation algorithm [57] came up to help to determine which heavyloaded VMs to migrate first.

Hotspot & Coldspot Migration
Hotspots and coldspots are based on the thresholds set by the cloud owner or based on the SLA specified by the clients. Hotspot uses a memory-to-memory stop-and-copy migration technique that copies the container's memory state from the memory of the destination VM without saving it to stable storage.
The advantage of hotspot migration is to minimize cost and the disadvantage is that it does not consider the application performance when deciding where and when to migrate. In order to migrate data, hotspot estimates the resource utilization by considering: Low utilization and high utilization threshold [58].

Solution to Resource Management Issues
The top resource management issues are as the follows: a. Dynamic Fault-tolerant: Dynamic fault-tolerant scheduling algorithm takes in consider ation to use full-idle resources and VM migration [43] b. Failure-Aware resource provisioning: Failure-aware resource provisioning algorithm considers the workload model to redirect users' requests to the appropriate cloud providers [59]. c. Energy efficiency: Towards efficient resource provisioning allows users to identify the best trade-off point between performance and energy efficiency [60]. d. Resource availability: Considers these metrics: mapping, finishing time, cost and resources to meet the optimization objectives [61]. e. Bandwidth minimization and low latency: Author proposed a bandwidth minimization and low latency based on a polynomial-time routing algorithm, integer linear programming (ILP) and heuristic algorithm [62]. f. Hybrid approach: Hybrid approach combined the concept of the autonomic computing and Reinforcement Learning to predict the future demands and to deal with fluctuating demands of the cloud services [63]. g. Cost minimization: Authors used Linear programming approches to optimize the cost and latency at the same time.

Open Problems in cloud resource management
In this work, we analyzed the resource management technique issues and discussed their merits such as throughput, availability, high scalability, quality of Service, optimal utility, reduced latency, reduced overheads, communication cost, computational time, and energy efficiency. The resource management technique demerits are: less security, Low priority, system performance degradation due to migration effect, network delay, and more time is used for balancing the workload. Also we are mentioning some of the unresolved issues such as:

Performance issues in cloud resources
The performance guarantee is the important issue between the cloud service providers and cloud users. The possible ways to improve the performance of resources and applications running in the cloud are suggested here.
a. Identify the performance parameters and evaluation metrics: The following metrics are used to evaluate the performance of cloud resources: IOPS including read IOPS, write IOPS, total response time, read response time or write response time, total bandwidth, write bandwidth, and so on. b. Apply performance metrics: Use the mentioned metrics to measure and capture the QoS level to gain user satisfaction. The QoS levels include the number of SLA violations, response time, delay, etc. c. Apply the energy efficiency metrics: Some energy improvements metrics are considered to measure the overall power and energy consumption. The power saving methods were suggested such as DVFS, turning on/off, DVS, VM migration [64], VM placement [65], Hibernation [66]. d. Apply monetary metrics: the monetary metrics is based on the evaluation of service provider's cost, and user cost.

Security issues in cloud resources
The cloud providers may face with the security and privacy issues in PaaS and IaaS. Despite that the cloud infrastructure and other related services provide basic security firewall, the problem of security and privacy are still the major concerns in cloud computing since the the users have no control over their data. According to authors in [67], the cloud providers may convince the third parties the safety of their data and their infrastructure against both exterior and domestic attacks. That hope is however rely on organizational procedures but it cannot be verified or remotely validated by the third parties [68].
Security issues in cloud resources can be classified into security issues in SaaS, in PaaS, and in IaaS. They can be grouped into key security elements such as Data security; Network security; Data locality; Data integrity; Data segregation; Data access; and Authentication and authorization. Cloud security alliance reports [69,70] and studies on cloud security issues [71] identify several security threats such as data breaches, data leakage, data loss, denial of service, accounts, services and traffic hijacking, insecure application programming interfaces, and many more others which can occur in cloud system information management. Some security approaches were suggested such as confidentiality, availability, reliability, authentication and authorization, integrity, etc. Other approaches on authorization and authentication to enforce identity and access management policies are Public key infrastructure (PKI)X509 certificates, IBE, IBS, CP-ABE [72][73][74][75][76][77].

Scheduling in Cloud Resources
Cloud computing is the innovation gives away to use shared pool of resources globally. Those resources can be dynamically upscale or downscale accordingly. In order to adapt to the effective cloud resource management and deal with resource scheduling, we adopt two types of resource scheduling: Processor resource scheduling and server resource scheduling. The efficient processor resource scheduling leads to many advantages. We deal with processor resource scheduling based on the preemptive strategy. In cloud computing, the processor resources are encapsulated into jobs. The jobs with highest priority should be scheduled prior to jobs with lowest priority. Common metrics can be considered: makespan, load balancing, average waiting time, throughput, turnaround time, energy efficient, etc. Lack of effective process resource scheduling methods may lead to overheating of cloud resources (Compute and storage). Single and multiprocessor resource scheduling should be considered to reduce energy consumption [78][79][80] Server resource scheduling: Virtualization is a part of cloud computing and is very worthwhile concept. Virtual machines are managed and hosted by physical servers and share the physical resources such as memory, storage, processor. The purpose for server resource scheduling is to find the idle machines to be turn off when no services running on them to save the energy. Another purpose of server resource scheduling is to balance the workload between servers to improve the system performance, maintain the system stability, and build the system fault tolerance.

Conclusion
In our paper, we have surveyed various cloud resource management techniques for cloud computing. Among those techniques we cite resource provisioning, resource discovery, resource monitoring, resource mapping, resource allocation, and resource consolidation. The main purpose of cloud resource management techniques is to satisfy the customer requirements. As described above, though there are huge advantages in applying resource management techniques, still, several outstanding issues exist which can be solved to make the cloud system more manageable and efficient. Those open challenges are resource performance issues, security and privacy issue, and server, processor, workload resources scheduling issues. The following metrics were mentioned: CPU utilization, throughput, reduced number of SLA violations, response time, reduced delay, energy efficiency, total bandwidth, reduced latency, reduced overheads, specialized environment, communication cost, etc. In our next paper we will focus on cloud resource scheduling based on meta-heuristic techniques.