[BitVisor-devel:4] Re: [Bitvisor-devel:2] BitVisor 1.1 released

Hideki EIRAKU hdk @ igel.co.jp
2010年 6月 8日 (火) 11:09:30 JST


筑波大学 品川様

お世話になっております。
イーゲル 榮樂です。

From: Takahiro Shinagawa <shina @ cs.tsukuba.ac.jp>
Subject: [BitVisor-devel:3] Re: [Bitvisor-devel:2] BitVisor 1.1 released
Date: Mon, 07 Jun 2010 19:15:50 +0900
Message-ID: <4C0CC6D6.6050406 @ cs.tsukuba.ac.jp>

>  ところで 1.0.1 との違いで,「新しい VT-x プロセッサでサポートされてい
> る XSETBV 命令」とありますが,ざっと見た感じだと XSETBV 命令は VT-x とは
> 直接的には関係ないというか,VT-x がなくても XSETBV がサポートされている
> というのは(理論的には)あり得るような気もしますが,「対応した」というの
> はどういう意味なんでしょう?ゲストOSがこの命令を発行しても
> (xsetbv_pass.cで)スルーするようにしたということでしょうか?

はい、VT-x では、従来の制御レジスタへアクセスする命令と同じように、
XSETBV 命令が実行されると必ず VM Exit する仕様になっています。Linux な
どには、XSETBV 命令が使える場合は使うような実装が入っていますので、パス
スルーにするか、CPUID の結果を偽装して XSETBV 命令が使えないように見せ
るか、いずれかの対応が必要ですが、今回はパススルーにして対応しました。

>  あと,drivers の下の "vpn" はそろそろ "nic" にした方がいいような気がし
> ます(VPN 以外の用途でも使いたいですし).逆にトップレベルの "vpn"
> は,"storage" との対比で言うと "network" の方が適切かもしれませんね.
> ネットワークフックの一機能として VPN があるという位置づけに変えていきた
> いと思っています.core/vpn* も出来れば移動したい所ですが,依存関係が面倒
> なんでしょうね.

drivers/vpn は名前を変更するだけですので、簡単に変更できます。

トップレベルの vpn は、保護ドメインとの対応関係もありますので、ネットワー
クフックをすべて同じ保護ドメインに入れるよりは、VPN モジュールを
network/vpn に移すほうが適切かも知れません。

core/vpn* は、ゲスト OS に仮想 NIC ドライバをインストールして BitVisor
の VPN モジュールを使用するためのものです。ハイパバイザコールの処理があ
るため、core 以下への配置になっています。

>  ちなみに AMD の NPT は相変わらず disable にされているようですが,これ
> は一応動くんでしたでしょうか?出来れば Intel EPT にも対応してくれると,
> (体感ではあまり変わらなくても)ベンチマーク的には結構効くような気がします.

NPT は、現在、テストしていません。以前試した時には、ゲスト OS の動作が
非常に不安定になり、しかもパフォーマンスは大幅に低下したため、使わない
ようにしました。EPT は、まったく試していません。

シャドウページテーブルを使わないようにしてしまう実装を、少し試したこと
があります。BitVisor の領域を保護できなくなるほか、MMIO のフックができ
なくなるため、EHCI、AHCI、NIC のドライバなどは使えなくなってしまいます
が、体感速度は大幅に向上しました。

>  あと,Intel のマニュアルを眺めていたら,VMX-preemption timer とか以前
> には無かった(ですよね?)機能が増えていたりするようなので(constants.h
> には既に定義されているようですが),以前話していた外部割り込みフックを止
> める方法とかと組み合わせて対応しても面白いかもしれません.このあたりも含
> めて,今後やるべきことややりたいことをまとめてみてもいいかもしれませんね.

はい。constants.h には、XSETBV 命令対応の際に追加しました。現在の VT-x
には、BitVisor の初期バージョン開発の頃にはなかった重要な機能も実装され
ています。INS/OUTS 命令の実行に必要な情報も、初期のプロセッサでは取得で
きなかったため、BitVisor では必ず機械語の読み取りを行っています。

-- 
Hideki EIRAKU <hdk @ igel.co.jp>



BitVisor-devel メーリングリストの案内