VirtualBox他のベンチマークテスト

この記事は [鈴鹿高専 Advent Calendar 2019](https://adventar.org/calendars/4146) にも登録しました。

# なんで仮想マシン比べっこをしようと思ったのか

　ベンチ結果だけ見たい方は本題まで飛ばしてください。
　2019年度から私が在学する高専の実験室PCが Windows + Scientific Linux のデュアルブートから Windows in VirtualBox の仮想マシン運用に変更になりました。（SLはサポート終了のためUbuntu Desktop）
　授業や実験で使用するためWindowsとUnixの両環境が必要です。
　技術職員の方に直接聞いたわけではないですが、VirtualBoxの選定理由としては

- 無料
- 学生個人のPC上にも環境を作成できる
- 学生が間違えて環境を破壊しても学生自身で簡単に復元できる
- メンテナンスが容易

こんな感じかなと思います。
　実際使ってみたところ、動作もスムーズで何の問題もありません。
　ただ、VirtualBoxはほかの仮想マシンに比べて遅いというのもよく聞きます。機械学習とかで顕著に差が出るかもしれません。
　そこで今回は[UnixBench](https://github.com/kdlucas/byte-unixbench)でどれだけ遅いのか確認してみます。

# 対象仮想化環境

ここからが本題
以下6つの環境を比べっこしました。

1. VirtualBox 6.0
1. VMware Player 15.5.1
1. WSL
1. Docker for Windows 2.1.0.4
1. Hyper-V
1. 実機（参考）

きりがなくなるので環境ごとのチューニングは行っていません。デフォルトのままベンチマークをとります。

## ベンチマーク条件
マシンはや条件は以下の通り

| ホストOS  | Windows10 Pro ver.1909 64bit  |
|:-:|---|
| __ゲストOS__  | __Ubuntu 18.04.3__ Desktop版 |
| __CPU__ |__Intel Core i5-4300U__|
|__RAM__| __8GB__ (Dual Channel)|
|__ディスク__|__mSATA SSD__|
ただしWSLに関しては[MicrosoftStore](https://www.microsoft.com/ja-jp/p/ubuntu-1804-lts/9n9tngvndl3q)のイメージ、Dockerは`docker pull ubuntu:18.04`で降ってきたイメージを使用しました。（当然Desktop版ではないです）

ベンチマークソフトは[UnixBench 5.1](https://github.com/kdlucas/byte-unixbench)を使いました。
時間短縮のために以下のベンチを1Coreで3回平均を計測しました。

- Dhrystone（CPU性能依存）
- Pipe Throughput（OS,CPU性能依存）
- System Call Overhead（OS,CPU性能依存）
- File Copy 256 bufsize（OS,ディスク性能依存）
- File Copy 4096 bufsize（OS,ディスク性能依存）

各ベンチの詳細は『[UnixBenchでベンチマーク (IDCFテックブログ) ](https://blog.idcf.jp/entry/cloud/unixbench/)』がわかりやすいです。


## ベンチマーク結果

演算速度と読み書き速度で分けます

### 演算速度
1秒間に何回処理できたか [ Instructions Per Second ]

![CPU, OS [ More is Better ].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448172/b6087fa0-ca71-cd4f-bcc4-befedc348eb2.png)

||Dhrystone|Pipe|Overhead|
|:--|--:|--:|--:|
|__Virtualbox__|<font color="Blue">4184191.2</font>|472103.4|590836.4|
|__Vmware__|33836598.5|<font color="Red">1034379.2|763780.3|
|__WSL__|<font color="Red">34550185.7|<font color="Blue">266246.9</font>|<font color="Blue">285900.8|
|__Docker__|29144076.9|909239.1|589965.1|
|__Hyper-v__|34252477.3|1019804.3|<font color="Red">774552.3|
|<font color="DarkGreen">実機（参考）|<font color="DarkGreen">34644970.6</font>|<font color="DarkGreen">1088138.4|<font color="DarkGreen">796282.7|



### 読み書き速度
単位はMbps

![File Copy (R_W) [ More is Better ].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448172/81559262-33f0-1baf-a493-453bb2105ec5.png)

||File Copy 256|File Copy 4096|
|:--|--:|--:|--:|
|__Virtualbox__|71750|970279|
|__Vmware__|<font color="Red">193158|1782309|
|__WSL__|<font color="Blue">27106|<font color="Blue">331243|
|__Docker__|150723|1553828|
|__Hyper-v__|191226|<font color="Red">1897577|
|<font color="DarkGreen">実機（参考）|<font color="DarkGreen">195891|<font color="DarkGreen">2039428|

# 考察＆結論

VirtualBoxは遅いけど手軽。Dhrystonegaが極端に低いのは[チューニング](https://qiita.com/yoichiwo7/items/9ffbae15d6bc11ff419b#%E9%87%8D%E8%A6%81-io%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%82%92cfq%E4%BB%A5%E5%A4%96%E3%81%AB%E3%81%99%E3%82%8B)すれば改善するらしい
Vmwareは速い。さすが仮想化市場トップランナー
WSLはI/Oが残念。WSL2に期待
Docker for Windows は普通。不具合が多い気がする
Hyper-Vも速い。さすがハイパーバイザー型
結論としては、学校のVirtualBox導入は正解だと思います。技術職員の方々、いつもありがとうございます。