gVisorを試してみた
Googleが開発したgVisorを試して、簡単に性能調査してみましたので、メモとして残しておきます。
環境
gVisorのインストール手順
- Dockerのインストール
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y docker-ce
- gVisor(runsc)のインストール
wget https://storage.googleapis.com/gvisor/releases/nightly/latest/runsc
chmod +x runsc
sudo mv runsc /usr/local/bin
sudo sh -c 'cat <<EOF > /etc/docker/daemon.json
{
"runtimes": {
"runsc": {
"path": "/usr/local/bin/runsc"
}
}
}
EOF'
sudo systemctl restart docker
- コンテナを起動してみる
sudo docker run --runtime=runc hello-world sudo docker run --runtime=runsc hello-world
性能調査
簡単なスクリプトでコンテナ起動と削除のスピードを評価します。
cat <<EOF > runc-test.sh
for i in \$(seq 1 \$1) ; do
sudo docker run --runtime=runc --name gvisor-test hello-world > /dev/null 2>&1
sudo docker rm gvisor-test > /dev/null 2>&1
done
EOF
chmod +x runc-test.sh
cat <<EOF > runsc-test.sh
for i in \$(seq 1 \$1) ; do
sudo docker run --runtime=runsc --name gvisor-test hello-world > /dev/null 2>&1
sudo docker rm gvisor-test > /dev/null 2>&1
done
EOF
chmod +x runsc-test.sh
スクリプトの使い方としては./runc-test.sh <起動および削除回数>、./runsc-test.sh <起動および削除回数>とします。試しに両方100回ずつ起動・削除を繰り返すと、以下のような結果となりました。
ubuntu@gvisor-01:~$ time ./runc-test.sh 100 real 1m20.991s user 0m14.948s sys 0m1.768s ubuntu@gvisor-01:~$ time ./runsc-test.sh 100 real 1m13.219s user 0m15.100s sys 0m1.748s
起動・停止だけではruncとあまり差はみられませんね。むしろrunscの方が速い?
ネットワークトラフィックの差をとるとruncに軍配が上がるみたいですが。。。
追記(2018/06/07) 気になってDisk書き込み速度も調べてみましたが、逆転現象が起きましたw
- runc
root@4aee2e622884:/# dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 4.17698 s, 257 MB/s
- runsc
root@ce7e3926f52e:/# dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.853382 s, 1.3 GB/s