Summary
In the presence of scale, dynamism, uncertainty, and elasticity, cloud engineers face several challenges when allocating resources for cloud‐based software services. They should allocate appropriate resources in order to guarantee good quality of services as well as low cost of resources. Self‐adaptive ability is needed in this process because engineers' intervention is difficult. Traditional self‐adaptive resource allocation methods are policy‐driven. Thus, cloud engineers usually have to develop separate sets of rules for each systems in order to allocate resources effectively, which leads to high administrative cost and implementation complexity. Machine learning has made great achievements in many fields, and it can be also applied to resource allocation. In this paper, we present a self‐learning and self‐adaptive approach to resource allocation for cloud‐based software services. For a given cloud‐based software service, its QoS model is firstly trained on history data, which is capable to predict the QoS value as output by using the information on workload and allocated resources as inputs. Then, on‐line decision‐making on resource allocation can be carried out automatically based on genetic algorithm, which is aimed to search reasonable resource allocation plan by using the QoS model. We evaluate our approach on RUBiS benchmark, demonstrating the accuracy of the QoS model over 90% and the improvement of resource utilization by 10%‐30%.