Reducing resource waste while maintaining end-to-end latency service-level objective (SLO) by simultaneously managing CPU bandwidth, memory allocation, and pod number of web applications running on Java virtual machine (JVM) is challenging. The challenges stem from the complexity of the multi-type resource allocation optimization problem, the high sensitivity of JVM performance to resource scaling actions, and the lack of low-level resource scaling mechanisms. We present GenesisRM, a resource management framework with a novel state-driven architecture. Specifically, we design a state control model for JVM web applications that encompasses seven pod states. This model serves as an abstraction layer, decoupling the centralized resource management system into a global state manager and distributed pod managers. The state manager controls the state transitions of the pods based on the overall workload, while the pod managers dynamically allocate resources for each pod according to the state and local workload.Then, we propose a multi-frequency control model with two predictive state controllers and a reactive state controller to manage the state of pods based on the state control model. In addition, GenesisRM brings new mechanisms to scale JVM pods’ low-level resources without damaging their performance. We evaluate our work using a real-world JVM web application benchmark in three different scale server clusters of Pengcheng Laboratory Developer Cloud, and the 21-day experimental results show that GenesisRM saves 31.70% CPU and 17.60% memory compared to the best-performing state-of-the-art solutions while guaranteeing the SLO imposed on end-to-end latency.
Read full abstract