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

http://www.bitvisor.org/summit5/ 2016-11-30 法政大学市ヶ谷
0
suzaki @KuniSuzaki

BitvisorSummitが始まる。bitvisor.org/summit5/ 場所はComSysと同じ法政大学BT棟 26F スカイホールでとても眺めがよい。

2016-11-30 13:03:21
suzaki @KuniSuzaki

BitvisorSummit一つ目。品川先生からは東大に導入されたvThrii(BitVisor)の説明。現状の問題としてはnested対応していないので、VMwareなどの仮想化が使えないこと。

2016-11-30 13:26:42
suzaki @KuniSuzaki

BitvisorSummit二つ目。榮樂さんから今年度の変更点。Gビットイーサのためにvirtio-netの変更が必要だった。PCIへの割り込みにINTx (PC互換)あるいはMSI/MSX-Xがあるが、NICによって違う。I219-LM (Skylake世代)INTは使えない。

2016-11-30 13:54:01
suzaki @KuniSuzaki

BitvisorでのNested Pagingにおいて2MiBページによる性能改善。 EPT violation/ NPF VMexitの回数削減。

2016-11-30 13:54:24
suzaki @KuniSuzaki

バグ修正。mm_lockレースコンディションの問題があった。UEFIスタックアライメントの問題があり。16バイトアライメントを合わせる。

2016-11-30 13:54:37
suzaki @KuniSuzaki

x2APIC対応。L社では積極的に利用。Bitvisorでこの対応。

2016-11-30 13:54:49
suzaki @KuniSuzaki

二つのシステムコールBitvisor三つ目。立命館大学のAlkanetを改良して、発行されたシステムコールがマルウェアのコードからか、オリジナルのコードかをBTS (Branch Trace Store)により特定する。

2016-11-30 14:20:16
suzaki @KuniSuzaki

BTS を制御するにはAPIC内のLVT(Local Vector Table)を変更する必要がある。実装としてはBitvsior内の関数を用いたMMIOフックか、Intel VTのVirtualize APIC accessを用いてフックがあり、双方を実装して性能を比較。

2016-11-30 14:21:23
suzaki @KuniSuzaki

Virtualize APIC access のためにTPR (Task Priority Register)Shadowを作成した。これにより割り込みを減らし、性能向上したはず。現状では完全な起動ができていない。

2016-11-30 14:21:35
suzaki @KuniSuzaki

Bitvisor五つ目。OSを2つ動作させることのできる,BitVisorベースのハイパーバイザであるTinyVisor( ja.osdn.net/projects/tinyv… BitVisor summit2で発表されたもの)で体験したエラーの解説。開発が続いており11/3に1最新版

2016-11-30 15:55:28
suzaki @KuniSuzaki

TinyVisorではNetBSDのAML: ACPI Machine Languageを使い、二つ目のMのGuest BIOSにはSeaBIOSを使う。

2016-11-30 15:56:29
suzaki @KuniSuzaki

TinyVisorはNehalem シリーズでは動かない。unrestricted guest(注:VMでリアルモードをサポートする機能)をサポートしないため。

2016-11-30 15:57:18
suzaki @KuniSuzaki

BitvisorSummit五つ目。Windowsのシステムコールログを取るAlkanetはIEEE1394ベースで送っていたが、対応ボードがなくなるのでNICで送るようにする。BitVisor内蔵のlwIPを活用して実装。NICをゲストOSから隠ぺいするなどチューニングを行った

2016-11-30 16:52:10
suzaki @KuniSuzaki

BitvisorSummit六つ目。BitVisor と KVM の性能比較の落とし穴。KVM Clockが遅く、性能評価した時に想定外に悪くなる。メモリがスワップアウトするのでSwapoffにする。KVMはホストOSが64bitだとゲスト32bitにしても早くなる。

2016-11-30 17:05:33
suzaki @KuniSuzaki

SpeedStepはBIOSで切る。Idleをpollingにする。turbostatコマンドで確認できる。 KVMは割り込みをソフトウェア的に散らしてくれるので問題ないが、BitVisorだけ割り込みが集中するマザーボードがある。

2016-11-30 17:08:55
suzaki @KuniSuzaki

性能評価でNoSQLを使う場合、非同期にディスクに書き出す永続化を行うので、永続化を切ること。

2016-11-30 17:10:53
suzaki @KuniSuzaki

割り込みをコアごとの散らす話はReceive Side Scaling(RSS)でした。 Windowsではデフォルトで同様の機能SNP(Scalable Networking Pack)を切れという記事がありました。 itpro.nikkeibp.co.jp/article/COLUMN…

2016-11-30 17:31:53
suzaki @KuniSuzaki

メモ:最近のLinuxでは起動時にPCIDを確認するのでInvalid PCIDで落ちる。 Linuxで起動時にパニくったときはearly printk を使う。

2016-11-30 17:48:05
品川@UK @utshina2

INVPCID命令ですね。CR4の読み書きによるflushよりINVPCID命令の方が217ns速いのでLinux起動時にINVPCID命令を呼ぶようになったけど、BitVisorはINVPCID命令に対応してなかったので落ちたという話だそうです。 twitter.com/KuniSuzaki/sta…

2016-12-01 16:50:08