LoginSignup
24
22

More than 5 years have passed since last update.

VirtualBoxはVMwareの5倍遅いのか改めて検証してみた

Posted at

ScalaのコンパイルはVirtualBox環境だと5倍時間がかかる』とのことですが、VirtualBox 5が出た今、VirtualBoxがVMwareと比べてどのくらい遅いのか調べてみました。

検証に使ったバージョン

  • Vagrant 1.7.4
  • VirtualBox 5.0.4
  • VMware Fusion 7.1.1 1
  • ホストマシンはMacのOSX 10.10.5
  • Docker 1.8.2

割当CPUは8、割当メモリは2GBです。

ベンチマークスクリプト

普段Vagrant上のDockerコンテナでScalaのコンパイルをしているので、開発の実情に合うように、ベンチマークもDockerコンテナ上でコンパイルするようにします。元記事によれば、Dockerがボトルネックではないそうなので、問題ないかと思います。

次のスクリプトがベンチマークを取るために書いたコードです。単純にactivator cleanactivator compileを10回繰り返すようになっています。

なお、コンパイルする対象のコードは社内のScalaプロジェクトのコードで7000行くらいです。

benchmark.sh
#!/usr/bin/env bash

set -eu

# clean up target directory
git clean -fdXq .

echo "architecture: $(uname -s) $(uname -m)"
if [[ $(uname -s) == "Darwin" ]]; then
  echo "cpus: $(sysctl -n hw.ncpu)"
  echo "memory: $(sysctl -n hw.memsize)"
  java -version 2>&1 | head -n 1
  activator() {
    ./activator "$@"
  }
fi
if [[ $(uname -s) == "Linux" ]]; then
  echo "cpus: $(nproc)"
  echo "memory: $(cat /proc/meminfo | grep MemTotal | awk '{ print $2 }')"
  docker run --rm java:8u66 java -version 2>&1 | head -n 1
  activator() {
    docker run --rm \
      -v $(pwd):/wd \
      -v /vagrant/.ivy2:/root/.ivy2 \
      -v /vagrant/.sbt:/root/.sbt \
      -w /wd \
      java:8u66 ./activator "$@"
  }
fi

activator --version || true
echo "scalaVersion $(activator scalaVersion | tail -n 1)"
echo "repeat activator clean and compile 10 times"
for i in {1..10}
do
  activator clean > /dev/null
  activator compile | tail -n 1
done

測定結果

OSX(ホストマシン)

参考値として、ホストマシンでもベンチマークを取ってみました。大体、26秒くらいでコンパイルできています。

architecture: Darwin x86_64
cpus: 8
memory: 17179869184
java version "1.8.0_45"
sbt launcher version 0.13.8
scalaVersion [info] 2.11.7
repeat activator clean and compile 10 times
[success] Total time: 24 s, completed 2015/09/18 17:17:39
[success] Total time: 24 s, completed 2015/09/18 17:18:10
[success] Total time: 25 s, completed 2015/09/18 17:18:43
[success] Total time: 26 s, completed 2015/09/18 17:19:16
[success] Total time: 26 s, completed 2015/09/18 17:19:49
[success] Total time: 27 s, completed 2015/09/18 17:20:24
[success] Total time: 26 s, completed 2015/09/18 17:20:57
[success] Total time: 26 s, completed 2015/09/18 17:21:31
[success] Total time: 26 s, completed 2015/09/18 17:22:04
[success] Total time: 26 s, completed 2015/09/18 17:22:38

VirtualBox 5

次にVirtualBoxの結果です。58〜64秒かかりました。

architecture: Linux x86_64
cpus: 8
memory: 2048376
openjdk version "1.8.0_66-internal"
sbt launcher version 0.13.8
scalaVersion [info] 2.11.7
repeat activator clean and compile 10 times
[success] Total time: 58 s, completed Sep 18, 2015 8:28:46 AM
[success] Total time: 60 s, completed Sep 18, 2015 8:30:03 AM
[success] Total time: 61 s, completed Sep 18, 2015 8:31:20 AM
[success] Total time: 62 s, completed Sep 18, 2015 8:32:39 AM
[success] Total time: 62 s, completed Sep 18, 2015 8:33:58 AM
[success] Total time: 64 s, completed Sep 18, 2015 8:35:19 AM
[success] Total time: 62 s, completed Sep 18, 2015 8:36:38 AM
[success] Total time: 63 s, completed Sep 18, 2015 8:37:59 AM
[success] Total time: 63 s, completed Sep 18, 2015 8:39:20 AM
[success] Total time: 63 s, completed Sep 18, 2015 8:40:41 AM

VMware Fusion 7

最後に、VMWareの結果です。33〜36秒かかりました。

architecture: Linux x86_64
cpus: 8
memory: 2048392
openjdk version "1.8.0_66-internal"
sbt launcher version 0.13.8
scalaVersion [info] 2.11.7
repeat activator clean and compile 10 times
[success] Total time: 36 s, completed Sep 18, 2015 3:25:28 PM
[success] Total time: 33 s, completed Sep 18, 2015 3:26:10 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:26:54 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:27:37 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:28:21 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:29:04 PM
[success] Total time: 35 s, completed Sep 18, 2015 3:29:48 PM
[success] Total time: 35 s, completed Sep 18, 2015 3:30:32 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:31:16 PM
[success] Total time: 34 s, completed Sep 18, 2015 3:32:00 PM

まとめると

以上の測定結果をまとめると

  • ホストマシン: 24〜27秒
  • VirtualBox: 58〜64秒
  • VMware: 33〜36秒

という結果になりました。

結論

結論としては、

  • VMwareはVirtualBoxの約2倍早くコンパイルできる

ということが言えるのではないでしょうか。

元記事が書かれたのは1年前だったので5倍の差があったものの、最近リリースされたVirtualBox 5ではパフォーマンスがかなり改善されているのかもしれませんね。

VirtualBoxは2倍遅いとしても、VMware環境を作るのにFusion 8 Proが24,690円、VagrantのVMwareアダプタが79ドル(約9,500円)と、3.4万円ほどかかってしまうことを考えたら、VirtualBoxも選択肢に十分入ってくるかと思いました。


  1. VMware Fusionの最新版は8ですが、VagrantのアダプタとVMwareのアップグレードで2万円くらいかかりそうだったので手持ちのバージョンで試しました。 

24
22
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
22