0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VMware製品上でBitVisorは動作するか?

Posted at

VMware製品上でBitVisorは動くのでしょうか。実はBitVisor 1.4の変更点に以下のものがあります:

  • vt: EFER のセーブ/ロード機能があれば使うようにした。これによって、VMware 製品の仮想マシン上で VMM が動作するようになった。

というわけで、動作するようになっています。最新版でも動作するのか気になるところですが、試してくださった方がいるようです。動いているみたいですね。

これだけでは面白くないので、「EFERのセーブ/ロード機能があれば使うようにした」という話について簡単に紹介しておきます。

EFERというのはもともとAMD K6で登場したというMSRで、SYSCALL命令、ロングモード (64ビット) やNX (実行禁止) ビットの有効化などに使用されるものです。Intel VT-xにおいては、仮想マシンのロングモードについてはVMCSのVM-Entry Controlsで設定しますが、SYSCALL命令等についてはEFERで設定する必要があります。

BitVisor 1.3までは、このEFERを反映するために、VM-exit MSR-store countおよびVM-exit MSR-store addressなどを使用していました。VM-entry用もあり、任意のMSRの内容を切り替えるために使用することができます。初期のVT-xではGuest IA32_EFERなどのフィールドは存在していなかったので、この方法しかありませんでした。ところが、VMware製品ではこんな使われ方は想定されていなかったようで、問題が発生しました。そこで、Guest IA32_EFERなどのフィールドが使用可能であれば使用する、という風にすることになりました。

その後

BitVisor Summit 3の発表「The Current Status of BitVisor 1.5(仮)」をお聞きになった方はご存知の通り、実はこの任意のMSRの内容を切り替える機能というのが、VM entry/exitにかかる時間をめちゃくちゃ長くしてしまうことが判明しました。

資料の32ページにあるように、ひとつのMSRに300サイクル程度もの時間がかかることが判明したため、現在は同機能はなるべく使わないようになっています。おそらく、Guest IA32_EFERなどのフィールドを使う分にはそこまでのオーバーヘッドは無いものと考えられるので、性能面でもこの修正は必要だったということになりそうです。

0
1
0

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?