Kepler: A framework to calculate the energy consumption of containerized applications
Abstract
Energy accounting in data centers is crucial for optimizing power provisioning, capping, and tuning. This paper introduces the Kepler framework, which offers a method of estimating power consumption at the process, container, and Kubernetes pod levels. The Kepler framework comprises a set of power models that can be applied in various scenarios, including different architectures and metrics. Additionally, we propose a generic power model that utilizes commonly available hardware counters (HC) and real-time system power metrics from hardware vendors (e.g., RAPL) as independent variables in the regression model. Unlike previous works that rely on the aggregate power consumption of all processes as dependent variables, we propose a methodology that experimentally measure the power consumed by the individual process to train our power model. We provide step-by-step instructions to measure process power consumption in a controlled environment by isolating the activation constant and load-dependent dynamic power consumption comparing different executions. By following the Greenhouse Gas (GHG) Protocol, our approach ensures a more fair distribution of the constant power among user's processes. Giving that, our approach results in significantly better accuracy, with a mean squared error (MSE) as low as 0.010. In comparison, a simple ratio approach with an MSE of 0.16, and 0.92 when training the model using aggregated workload power. We also demonstrate that incorporating real-time system power metrics not only increases sensitivity to external factors such as temperature changes but also substantially improves the model's accuracy. Finally, we also show that Kepler has lower overhead due to HC collection via Berkeley Packet Filter (BPF).