This repository contains the test scripts and raw data used in the RunD paper. The paper has been accepted by ATC 2022.
RunD, developed by OpenAnolis Community, will be open-sourced both in the OpenAnolis Community and the Kata Container Community in October. The related commits and pull requests to Kata community are here. RunD guest-to-host solution will drive Kata Container to upgrade from previous version 2.x to version 3.0. The release plan of RunD (Kata 3.0) is shown in the table.
Kata version number | Expected release data |
---|---|
3.0.0-alpha0 | 2022-07-25 |
3.0.0-alpha1 | 2022-08-15 |
3.0.0-alpha2 | 2022-08-29 |
3.0.0-rc0 | 2022-09-12 |
3.0.0-rc1 | 2022-09-26 |
3.0.0-release | 2022-10-10 |
Considering that some related binary packages are tightly integrated with our internal system, we provide a screencast of the tool along with the results in our artifact.
Refer to video: ATC_RunD_AE.mp4.
Test scripts used in the video are also provided in the script
directory. Logs and analysis results are provided in the ae_data
directory.
The hardware we used for experiment is an ecs.ebmg6.26xlarge
instance from Aliyun. The specification is as follow:
Item | Spec |
---|---|
CPU | Intel Xeon(Cascade Lake) Platinum 8269CY |
Cores | 104 |
Memory | 384 GiB |
Storage | Two ESSDs: 100GB + 500GB |
OS | Aliyun Cloud OS 2, with Linux kernel 4.19.91 |
We are using containerd 1.3.10, kata-containers 2.2.3, and kata-containers 1.12.1 for the baseline experiments. Follow the instructions to install them:
-
Download and unzip.
wget https://github.com/containerd/containerd/releases/download/v1.3.10/cri-containerd-cni-1.3.10-linux-amd64.tar.gz wget https://github.com/kata-containers/kata-containers/releases/download/2.2.3/kata-static-2.2.3-x86_64.tar.xz wget https://github.com/kata-containers/runtime/releases/download/1.12.1/kata-static-1.12.1-x86_64.tar.xz tar xf cri-containerd-cni-1.3.10-linux-amd64.tar.gz -C / tar xf kata-static-2.2.3-x86_64.tar.xz -C / mv /opt/kata /opt/kata2 tar xf kata-static-1.12.1-x86_64.tar.xz -C /
-
Create symbol link to the executables.
ln -sf /opt/kata/bin/containerd-shim-kata-v2 /usr/local/bin/containerd-shim-kata-v2 ln -sf /opt/kata2/bin/containerd-shim-kata-v2 /usr/local/bin/containerd-shim-kata2-v2
-
Copy our config files.
mkdir -p /etc/containerd /etc/kata-containers cp ./config/config.toml /etc/containerd/config.toml cp ./config/configuration-* /etc/kata-containers/
-
Setup volume pool for device mapper.
./script/dmsetup.sh
-
Start containerd.
systemctl start containerd
-
Install dependencies
mkdir result pip3 install pandas yum install smem
Scripts time_kata_test.sh
, time_katafc_test.sh
, and time_katatemplate_test.sh
can run the high-concurrency test for kata-qemu, kata-fc and kata-template.
-
Run high-concurrency tests.
./script/time_kata_test.sh ./script/time_katafc_test.sh ./script/time_katatemplate_test.sh
They may takes several hours to finish. To shorten the time, some concurrency tests can be removed by removing the corresponding concurrency setting in file time_test.conf
. The scripts will create a directory named like time_kata_05120948
to store the logs.
We provide python scripts to analyze logs from the tests.
-
Analyze results from high-concurrency tests.
python3 data/time.py python3 data/cpu.py
The python script will create two csv files in the result directory: time.csv
and cpu.csv
. Each line in the csv file indicates the average cold-start latency and cpu time of a container runtime.
Scripts mem_kata_test.sh
, mem_katafc_test.sh
, and mem_katatemplate_test.sh
can run the high-density test for kata-qemu, kata-fc and kata-template.
-
Run high-density tests.
./script/mem_kata_test.sh ./script/mem_katafc_test.sh ./script/mem_katatemplate_test.sh
Density and memory capacity of containers in the tests can be changed in the file mem_test.conf
. The scripts will create a directory named like mem_kata_05120948
to store the logs.
We provide python scripts to analyze logs from the tests.
-
Analyze results from high-density tests.
python3 data/mem.py
The python script will create a csv file for each runtime, named like mem_kata.csv
, containing the average memory consumption of containers with different memory capacity in different density.
Scripts density_kata_test.sh
, density_katafc_test.sh
, and density_katatemplate_test.sh
can run the high-density test for kata-qemu, kata-fc and kata-template.
-
Run high-density tests.
./script/density_kata_test.sh ./script/density_katafc_test.sh ./script/density_katatemplate_test.sh
The background density and the concurrency of the tests can be changed in the file density_test.conf
. The scripts will create a directory named like density_kata_05120948
to store the logs.
We provide python scripts to analyze logs from the tests.
-
Analyze results from high-density tests.
python3 data/density.py
The python script will create a csv file for each runtime, named like density_kata.csv
, containing the average cold-start latency under different background densities and concurrencies.
script
: test scripts.
data
: python scripts for data analysis.
config
: configuration file for containerd and kata-containers.
ae_data
: raw logs and analysis results in the RunD AE video.
paper_data
: raw logs and analysis results used in the paper.