VMware の Virtual SMP

ここ最近、開発環境を仮想環境として作っていて、VMware Serverを使っててハマった話。

VMware には Virtual SMP機能があって、OSが論理的/物理的にCPUを2つ以上認識できる場合 VMにVCPU数を2に設定できるのは有名な話。Virtual SMPはあくまで仮想CPUなので直接CPUを割り当ててるわけじゃないけど、体感できるくらいパフォーマンスがよくなるのでよく使ってる。

今使ってるハードはメモリ12GB、CPUはデュアルコア/2CPUなそこそこのスペックなので、仮想環境を10個くらい構築してた。そしたら、I/Oはほとんど発生してないし、メモリも十分余裕があるのに、CPU使用率が100%のままになって pingタイムアウトするくらいむちゃくちゃ重くなって、なんじゃこりゃぁ…という状況になったのでいろいろ調べてみた。


最終的な答えは ココ 。(コレの Q5 と Q8 あたり)

↑によれば、

  • ハード的には デュアルコア/2CPUなので、実質4CPU。とすると VMware Server(≒GSX Server)で扱えるVMは16まで使える。
  • Virtual SMPを利用した場合、1つのVMで2個分(2VM)のカウントになる。

ということらしい。

つまり10台以上のVMを全部 Virtual SMPで構成すると、余裕で16を超えてVMware側の仕様を超えちゃってたという話。なので、全体のVCPU数を16以下におさまるように、いくつかのVMのVCPUを1にしたりしてみたら スッキリなおった。


今まで1台のマシン上に8個以上も VM載せたりしたことなかったからわかんなかったけど、こんな仕様があったんだなぁと。

Xen はどうなんだろとか思う。今度試してみようかな。