Elasticity algorithms for cloud infrastructures dynamically change the amount of resources allocated to a running service according to the current and predicted future load.
Since there is no perfect predictor, and since different applications' workloads have different characteristics, no single elasticity algorithm is suitable for future predictions
for all workloads.
In this work, we introduce WAC, a Workload Analysis and Classification tool that analyzes workloads and assigns them to the most suitable elasticity controllers based on the
workloads' characteristics and a set of business level objectives.
WAC has two main components, the analyzer and the classifier. The analyzer analyzes
workloads to extract some of the features used by the classifier, namely, workloads' autocorrelations and sample entropies which
measure the periodicity and the burstiness of the workloads respectively. These two features are used with the business level objectives by the classifier as the features used to assign workloads
to elasticity controllers.
We start by analyzing $14$ real workloads available from different applications. In addition, a set of $55$ workloads is generated to test WAC on more
workload configurations. We implement four state of the art elasticity algorithms. The controllers are the classes to which the classifier
assigns workloads. We use a K nearest neighbors classifier and experiment with different workload combinations as training and test sets. Our experiments show that, when the classifier is tuned
carefully, WAC correctly classifies between $92%$ and $98.3%$ of the workloads to the most suitable elasticity controller.