# Modeling and Evaluation of Power-Aware Software Rejuvenation in Cloud Systems
## 1 Introduction  
Cloud computing is the practice of storing, managing, and processing data using a network of remote servers accessed via the Internet [1]. As such, cloud computing is a model for easy and ubiquitous access to a set of servers, storage devices, networks, applications, and services with minimal interaction with the service provider and minimal management cost [2]. Virtualization techniques are used in cloud systems to appropriately handle user requests. By applying virtualization, multiple Virtual Machines (VMs) are simultaneously run on a single Physical Machine (PM) controlled by software usually known as Hypervisor or Virtual Machine Monitor (VMM) [3; 4; 5]. In Infrastructure-as-a-Service (IaaS) clouds, each user request is in the form of one or more VM requests. The tendency of software to fail or cause a system failure after running continuously for a specific time period is referred to as software aging [6; 7]. Software aging is a phenomenon in long-run software systems that causes an increased failure rate and/or degraded performance due to accumulation of aging errors [8; 9]. Since VM requests in IaaS clouds are usually different in terms of software and tools for which they are initiated, their corresponding VMs exhibit complex behaviors and sophisticated interactions throughout their lifetime that enable VMMs to manage a wide variety of VM behaviors. Consequently, after running for a long time or managing heavy workloads, VMMs, like any other software, age and slow due to a multitude of internal errors and diverse behaviors of VMs [7; 10; 11; 12; 13]. If these errors are not prevented or addressed properly, the performance of the system degrades and the cloud provider may fail to meet Quality of Service (QoS) requirements [14]. Software rejuvenation is an effective method used to cope with software aging and performance degradation [11; 15; 16]. In this method, software is restored to its original state before causing aging-induced crashes and system failures. In cloud systems, providers can also benefit from software rejuvenation by rejuvenating their VMMs before they fail. However, the main problem in this regard is how to choose the right VMM to be rejuvenated and the correct time to do so. In addition to the selection of the appropriate VMM and the proper time for rejuvenation, the selection of the right method amongst existing options is of utmost importance. The majority of models proposed in the literature use a series of side programs to measure the efficiency and performance of VMMs. A study showed that the majority of previous studies in the field of software rejuvenation adopted time-based or prediction-based strategies [17], both of them show low performance. The rapid worldwide growth of the cloud computing paradigm has led to the emergence of massive data centers with high power consumption across the world [18]. In 2016, the total energy consumption of the world's data centers was 416 terawatt hours (TWh), which is 38% higher than the 300 TWh of energy that the entire U.K. consumed in the same year [19]. As a result, the power consumption of cloud computing servers and the field of green computing are worthy of more attention [20]. Active PMs, i.e., switched-on PMs, consume a major portion of a cloud system's power. Therefore, a cloud provider with many active but lightly loaded PMs/VMMs has high power waste, resulting in low energy efficiency. The technique proposed to increase the energy efficiency in this paper involves migration of VMs from lightly loaded VMMs, and then switching free PMs off, leading to a smaller number of active VMMs and PMs. In real-world cloud systems, requested VMs are heterogeneous and they differ in terms of processing speed, memory, and storage capacities.