Resource allocation in clouds is mostly done assuming hard requirements, applications either receive the requested resources or fail. Given the dynamic nature of workloads, guaranteeing on-demand allocations requires large spare capacity. Hence, one cannot have a system that is both reliable and efficient.
To solve this issue, we introduce Service-Level (SL) awareness in clouds, assuming applications contain some optional code that can be dynamically deactivated as needed. First, we design a model for such applications and synthesize a controller to decide when to execute the optional code and when to skip it. Then, we propose a Resource Manager (RM) that allocates resources to multiple SL-aware applications in a fair manner. We theoretically prove properties of the overall system using control and game theory.
To show the practical applicability, we implemented SL-aware versions of RUBiS and RUBBoS with less than 170 lines of code. Experiments show that SL-awareness may enable a factor 8 improvement in withstanding flash-crowds or failures. SL-awareness opens up more flexibility in cloud resource management, which is why we encourage further research by publishing all source code.