須崎さんによるBitVisor Summit 5まとめ

http://www.bitvisor.org/summit5/ 2016-11-30 法政大学市ヶ谷
bitvisor
0
suzaki @KuniSuzaki
BitvisorSummitが始まる。bitvisor.org/summit5/ 場所はComSysと同じ法政大学BT棟 26F スカイホールでとても眺めがよい。
suzaki @KuniSuzaki
BitvisorSummit一つ目。品川先生からは東大に導入されたvThrii(BitVisor)の説明。現状の問題としてはnested対応していないので、VMwareなどの仮想化が使えないこと。
suzaki @KuniSuzaki
BitvisorSummit二つ目。榮樂さんから今年度の変更点。Gビットイーサのためにvirtio-netの変更が必要だった。PCIへの割り込みにINTx (PC互換)あるいはMSI/MSX-Xがあるが、NICによって違う。I219-LM (Skylake世代)INTは使えない。
suzaki @KuniSuzaki
BitvisorでのNested Pagingにおいて2MiBページによる性能改善。 EPT violation/ NPF VMexitの回数削減。
suzaki @KuniSuzaki
バグ修正。mm_lockレースコンディションの問題があった。UEFIスタックアライメントの問題があり。16バイトアライメントを合わせる。
suzaki @KuniSuzaki
x2APIC対応。L社では積極的に利用。Bitvisorでこの対応。
suzaki @KuniSuzaki
二つのシステムコールBitvisor三つ目。立命館大学のAlkanetを改良して、発行されたシステムコールがマルウェアのコードからか、オリジナルのコードかをBTS (Branch Trace Store)により特定する。
suzaki @KuniSuzaki
BTS を制御するにはAPIC内のLVT(Local Vector Table)を変更する必要がある。実装としてはBitvsior内の関数を用いたMMIOフックか、Intel VTのVirtualize APIC accessを用いてフックがあり、双方を実装して性能を比較。
suzaki @KuniSuzaki
Virtualize APIC access のためにTPR (Task Priority Register)Shadowを作成した。これにより割り込みを減らし、性能向上したはず。現状では完全な起動ができていない。
suzaki @KuniSuzaki
Bitvisor五つ目。OSを2つ動作させることのできる,BitVisorベースのハイパーバイザであるTinyVisor( ja.osdn.net/projects/tinyv… BitVisor summit2で発表されたもの)で体験したエラーの解説。開発が続いており11/3に1最新版
suzaki @KuniSuzaki
TinyVisorではNetBSDのAML: ACPI Machine Languageを使い、二つ目のMのGuest BIOSにはSeaBIOSを使う。
suzaki @KuniSuzaki
TinyVisorはNehalem シリーズでは動かない。unrestricted guest(注:VMでリアルモードをサポートする機能)をサポートしないため。
suzaki @KuniSuzaki
BitvisorSummit五つ目。Windowsのシステムコールログを取るAlkanetはIEEE1394ベースで送っていたが、対応ボードがなくなるのでNICで送るようにする。BitVisor内蔵のlwIPを活用して実装。NICをゲストOSから隠ぺいするなどチューニングを行った
suzaki @KuniSuzaki
BitvisorSummit六つ目。BitVisor と KVM の性能比較の落とし穴。KVM Clockが遅く、性能評価した時に想定外に悪くなる。メモリがスワップアウトするのでSwapoffにする。KVMはホストOSが64bitだとゲスト32bitにしても早くなる。
suzaki @KuniSuzaki
SpeedStepはBIOSで切る。Idleをpollingにする。turbostatコマンドで確認できる。 KVMは割り込みをソフトウェア的に散らしてくれるので問題ないが、BitVisorだけ割り込みが集中するマザーボードがある。
suzaki @KuniSuzaki
性能評価でNoSQLを使う場合、非同期にディスクに書き出す永続化を行うので、永続化を切ること。
suzaki @KuniSuzaki
割り込みをコアごとの散らす話はReceive Side Scaling(RSS)でした。 Windowsではデフォルトで同様の機能SNP(Scalable Networking Pack)を切れという記事がありました。 itpro.nikkeibp.co.jp/article/COLUMN…
suzaki @KuniSuzaki
メモ:最近のLinuxでは起動時にPCIDを確認するのでInvalid PCIDで落ちる。 Linuxで起動時にパニくったときはearly printk を使う。
品川 高廣 @utshina2
INVPCID命令ですね。CR4の読み書きによるflushよりINVPCID命令の方が217ns速いのでLinux起動時にINVPCID命令を呼ぶようになったけど、BitVisorはINVPCID命令に対応してなかったので落ちたという話だそうです。 twitter.com/KuniSuzaki/sta…

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする