少しでも軽くしたいので、Windows7ではなくWindowsXPを使うことにする。
マルチコア設定
VirtualBox にはマルチコアの設定があってマルチコアの仮想マシンを作れるが、しかし、ゲスト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 のマルチコア動作に問題があって、全然パフォーマンスを発揮できていないのではないか、とベンチマークをとってみた。
結果は、しかし、良好だ。マルチコアの方が全体にパフォーマンスがいい。
よく見てみると、演算、メモリ等は、2core の方がほぼ倍近いパフォーマンスがでているのに、描画系(Rectangle,Text,等)が、2core のほうがほぼ半分くらいになっている。これは興味深い現象だ。
また、ネットワークドライブのパフォーマンスも計測してみた。
これは、それほど差がないように見える。
結論
すっきりとした結論をだすことは出来なかった。2core設定は、演算、メモリアクセスは高速になるが、描画はむしろ遅くなる、ということか。
マルチコアだからといって、メモリアクセスが高速になる理由はないので、これは恐らく複数コアでのアクセスによって、トータルのスループットが向上したのではないかと想像する。
それにしても、VisualStudio の保存の問題は、なにが原因なのかよくわからなかった。
これだけは言える。
シングルコアでインストールしたゲストOS(WindowsXP)であれば、VisualStudio2008 は、十分実用的に利用できる。
VirtualBox に Snow Leopard を入れてみたので、その話はまたいずれしてみたいと思っている。