Container resource management is non-trivial over hyperconverged platforms where the storage is shared among host servers; therefore, the same backbone network is used by the storage traffic as well as the normal network traffic. In this work, we characterize this problem by analyzing the nature of the traffic from storage workloads and its impact on the network workloads in a container-based virtualization environment. Accordingly, we develop CONtrol, a resource management approach for assuring the performance of network workloads in the presence of storage workloads. CONtrol uses a proportional-integral-derivative controller to dynamically decide the bandwidth redistribution among various workloads. Additionally, it uses a container migration strategy for balancing the workloads across different servers of a hyperconverged platform. We have implemented CONtrol over a hyperconverged platform with 5 physical servers, and a thorough testing indicates that it can significantly improve the performance of various benchmark applications over a containerized hyperconverged platform.
This repository holds the implementation of CONtrol, which is mostly written in Python and bash.
- Sumitro Bhaumik (repository owner)
- Sandip Chakraborty
-
This has been tested in Ubuntu Server 18.04 LTS with Docker 19.03.
-
Make sure that all the machines have each others ssh-key installed in each other using
ssh-copy-id
.
Install all the packages mentioned in requirements.txt
using the command
pip3 install -r requirements.txt
- Clone the repository in all the hosts which are part of the shared-storage architecture
- Change the IP and the data collection directory in the
localmanager.py
file - Run the
Gateway.py
in all the hosts usingstartGateWays.sh
- Run
globalmanager.py
. This is will start thebottle
server, which can take REST queries - Start all the container using some workload in any machine in any order. CONtrol will automatically adjust resources among the containers.