2011年08月03日

VirtualBox+WinXP+VisualStudioにマルチコア設定はNG

 MacにはBootCampがあってWindowsを利用できるのだが、「Windowsアプリの開発」以外は OSXを使いたい。そこで、本格的に VirtualBox を使うことに決めていろいろ試してみた。
 少しでも軽くしたいので、Windows7ではなくWindowsXPを使うことにする。

マルチコア設定

 VirtualBox にはマルチコアの設定があってマルチコアの仮想マシンを作れる

Coresetting

 が、しかし、ゲストOSインストール時にシングルコアの設定になっていると、あとでマルチコア設定にしても正しく認識されない。
 逆にマルチコアの設定でゲストOSをインストールすると、あとでシングルコアにしても正しく設定される。
 この理屈でいくと、どちらで使うにしてもマルチコア設定でインストールしておけば問題ない。
 ……と、言いたいところだが実は大きな問題がある。
 結論を先に言うと、
  • マルチコアでは VisualStudio は使いたくないくらい重い
  • マルチコアインストールしたゲストOSをシングルコア設定に変えても同じ
  • シングルコアインストールしたゲストOSでは、十分実用になる
 ということだ。
 今のところ、怪しい挙動は VisualStudio2008 でしか確認できていないけど、他にもあるのだろうと思います。

VisualStudio2008

 マルチコアに設定した環境で、VisualStudio2008をしばらく使っていた。Windowsじたいの動作とか、他のツール類の動作には特に問題も違和感もなく、これが仮想マシンなのかと思うくらいスムーズに動作する。数年前の印象とはずいぶん違う。これなら仕事に十分使える、という印象だ。
 ところが、VisualStudio だけは、お世辞にも使えるレベルではない。
 ビルドも実行も、十分なパフォーマンスを発揮しているのだが、ファイルの保存が異様に遅いのだ。
 数kバイトの小さなソースファイルを編集して、保存するのに 10〜15秒かかっている。
 ソースコード等、開発リソースはホストOSの共有フォルダを使ってネットワークドライブとしてマウントしている。
 そのペナルティを差し引いたとしても、驚くほどの遅さである。
 しかもそれだけではない。むしろこちらが大問題なのだけど、数分ごとに、VisualStudio が 10秒〜2分程度固まるのだ。恐らく、バックで何かファイルの読み書きをやっているのではないか、と想像している。
 これは尋常なストレスではない。ほかのたまに使うツールであればまだ我慢できたかもしれないが、VisualStudio である。これを使うために VirtualBox を利用するのである。それがこの状態では、はっきりいって使い物にならない。
 VisualStudio の設定で、何か緩和できないかといろいろやってみたが、いっこうに改善される様子はない。
 VirtualBox のプロセッサ設定でコアの数を1〜4ですべて試してみたが、何も変わらない。

シングルコアで試す

 ものは試し、と、シングルコア設定でゲストOSのインストールからやり直してみた。
 すると、VisualStudio は嘘のようにすいすい動作するようになった。
 さては、VirtualBox のマルチコア動作に問題があって、全然パフォーマンスを発揮できていないのではないか、とベンチマークをとってみた。
 結果は、しかし、良好だ。マルチコアの方が全体にパフォーマンスがいい。

Alltest

 よく見てみると、演算、メモリ等は、2core の方がほぼ倍近いパフォーマンスがでているのに、描画系(Rectangle,Text,等)が、2core のほうがほぼ半分くらいになっている。これは興味深い現象だ。
 また、ネットワークドライブのパフォーマンスも計測してみた。

Netdrv

 これは、それほど差がないように見える。

結論

 すっきりとした結論をだすことは出来なかった。
 2core設定は、演算、メモリアクセスは高速になるが、描画はむしろ遅くなる、ということか。
 マルチコアだからといって、メモリアクセスが高速になる理由はないので、これは恐らく複数コアでのアクセスによって、トータルのスループットが向上したのではないかと想像する。
 それにしても、VisualStudio の保存の問題は、なにが原因なのかよくわからなかった。

 これだけは言える。
 シングルコアでインストールしたゲストOS(WindowsXP)であれば、VisualStudio2008 は、十分実用的に利用できる。


VirtualBox に Snow Leopard を入れてみたので、その話はまたいずれしてみたいと思っている。


posted by tekniq at 08:48 | Comment(0) | TrackBack(0) | Mac