Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> The Cloud phenomenon brings along the cost-saving benefit of dynamic scaling. As a result, the question of efficient resource scaling arises. Prediction is necessary as the virtual resources that Cloud computing uses have a setup time that is not negligible. We propose an approach to the problem of workload prediction based on identifying similar past occurrences of the current short-term workload history. We present in detail the Cloud client resource auto-scaling algorithm that uses the above approach to help when scaling decisions are made, as well as experimental results by using real-world Cloud client application traces. We also present an overall evaluation of this approach, its potential and usefulness for enabling efficient auto-scaling of Cloud user resources. <s> BIB001 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> Cloud computing allows dynamic resource scaling for enterprise online transaction systems, one of the key characteristics that differentiates cloud from the traditional computing paradigm. However, initializing a new virtual instance in cloud is not instantaneous; the cloud hosting platforms introduce significant delay in the hardware resource allocation. In this paper, we develop prediction-based resource measurement and provisioning strategies using Neural Network and Linear Regression to satisfy upcoming resource demands. Experimental results demonstrate that the proposed technique offers more adaptive resource management for applications hosted in cloud environment, an important mechanism to achieve on-demand resource allocation in the cloud. <s> BIB002 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> Cloud systems require elastic resource allocation to minimize resource provisioning costs while meeting service level objectives (SLOs). In this paper, we present a novel PRedictive Elastic reSource Scaling (PRESS) scheme for cloud systems. PRESS unobtrusively extracts fine-grained dynamic patterns in application resource demands and adjust their resource allocations automatically. Our approach leverages light-weight signal processing and statistical learning algorithms to achieve online predictions of dynamic application resource requirements. We have implemented the PRESS system on Xen and tested it using RUBiS and an application load trace from Google. Our experiments show that we can achieve good resource prediction accuracy with less than 5% over-estimation error and near zero under-estimation error, and elastic resource scaling can both significantly reduce resource waste and SLO violations. <s> BIB003 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> The elastic scaling of services permits us (1) to meet service provisioning requirements (i.e., not to violate its SLAs), and (2) to efficiently use available resources (i.e., to minimize the cost of running the application). In this paper, we describe a novel online controller design built on top of the Xen hyper visor. The controller facilitates the elastic provisioning of applications using a combination of adapting the resource constraints of VMs and dynamically plugging in new virtual CPUs. We have implemented our design and evaluated our approach using real world workload traces from the RUBiS online auction benchmark. The results show that our controller allows to reduce total CPU time in comparison to statically allocated CPU with of minimum SLA violation rate and provides stable response time for high priority VM, when we apply it to provision prioritized VMs. <s> BIB004 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> Elasticity is a key property to reduce the costs associated with running services in cloud systems that employ an infrastructure-as-a-service (IaaS) deployment model. However, to be able to exploit this property, users of IaaS systems need to be able to anticipate the short-term future demand of their own services, so that only the required infrastructure is requested at any instant in time. This guarantees that service level objectives (SLOs) are always honored by the users of IaaS systems, while over provisioning is avoided. The process of automatically change the amount of resources used to run a service in an IaaS system is named auto-scaling, and the state-of-the-practice uses simple reactive approaches. Although these approaches can successfully reduce the costs due to over provisioning, they are frequently insufficient to minimize the costs due to SLO violations. For that, proactive approaches are required. In this paper we propose a framework for the implementation of auto-scaling services that follows both reactive and proactive approaches. The latter is based on the use of a set of predictors of the future demand of services deployed over IaaS resources, and a selection mechanism that chooses, over time, what is the best predictor to be used. We have also proposed a correction method that uses historical data on the predictors' errors to reduce the probability of under provisioning the services, thus further diminishing the number of SLO violations. We have evaluated the performance of the proposed approach using production traces of HP customers. Our results show that costs savings of as much as 37% can be achieved, while the probability of an SLO violation can be kept, on average, as small as 0.008%, and never larger than 0.036%. <s> BIB005 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> Resource Usage Prediction. <s> Elasticity is a key feature in cloud computing, and perhaps what distinguishes it from other computing paradigms. Despite the advantages of elasticity, realizing its full potential is hard due to multiple challenges stemming from the need to estimate workload demand. A desirable solution would require predicting system workload and allocating resources a priori, i.e., A predictive approach. Instead, what is mainly available are reactive solutions, requiring difficult parameter tuning. Since each Cloud Provider (CP) has its own implementation idiosyncrasies, it's impossible for developers to: (i) learn only about one platform and re-use that knowledge in others, (ii) migrate developed elasticity solutions between different CPs, and (iii) to develop reusable predictive elasticity rules or algorithms. This paper makes three contributions to provide an effective elasticity environment. First, Vadara, a totally generic elasticity framework, that transparently connects and abstracts several CPs API behaviour, and enables the use of pluggable CP-agnostic elasticity strategies. Second, it presents a predictive workload forecasting approach, which ensembles several individual forecasting methods, and introduces a padding system based on the most recent prediction errors for both under- and over-provisioning. Finally, results show (1) Vadara's successful connection to well-known CPs, (2) the improvements made regarding under- and over-provisioning due to our padding system, and (3) the effectiveness of our ensemble forecasting technique. <s> BIB006
Instead of predicting workload, it is also possible to directly predict resulting resource usage according to the historical usage data. This strategy is commonly used by auto-scalers that only support vertical scaling, as for a single machine, resource usage can substitute workload intensity. Some proposals BIB005 BIB001 BIB002 that target horizontal scaling also follow this strategy to accomplish both workload prediction and resource estimation together. Gong et al. BIB003 used signal processing to discover the longest repeating pattern of resource usage and then relied on the dynamic time warping (DTW) algorithm to make the prediction. For applications without repeating patterns, they referred to a discrete-time Markov chain with finite states to derive a near prediction of future values. Islam et al. BIB002 explored using linear regression and neural network to predict CPU usage. Caron et al. BIB001 adopted a pattern matching approach that abstracts it as a string matching problem and solved it using the Knuth-Morris-Pratt (KMP) algorithm. Yazdanov et al. BIB004 utilized an AR method to predict short-term CPU usage. Morais et al. BIB005 employed multiple time-series algorithms to predict CPU usage, and based on their runtime accuracy, the best is selected. Loff et al. BIB006 also used various prediction algorithms. However, instead of selecting the best one, their approach combines the results of different predictors using the weighted k-nearest neighbors algorithm. The weight of each predictor is dynamically adjusted according to their recent accuracy.