BitVisor Updates in 2016

Similar documents
BitVisor 2017年の主な変更点

BitVisor 2017年の主な変更点

今週の進捗

スライド 1

Microsoft PowerPoint - IO_Pass-through_XenSummitTokyo2008_jp.ppt

セキュアVMの アーキテクチャ概要

PowerPoint プレゼンテーション

bitvisor_summit.pptx

準パススルー型VMM開発の難しいところ

Microsoft PowerPoint - install_NGSsokushu_windows(ver2.1).pptx

TFTP serverの実装

71-78.indd

ご使用上の留意・注意事項

仮想化基礎演習テキスト Ⅰ 第 1.0 版 演習で学ぶ仮想化基礎 ( クライアント仮想化編 ) 九州ラーニングネット株式会社 特定非営利活動法人パソコン整備士協会

常駐接続(ISL AlwaysOn)Wake On LAN 設定ガイド

Microsoft Word - nvsi_090203_r1_sanboot_vaultdr.doc

PowerPoint プレゼンテーション

使用する前に

Microsoft PowerPoint - OS07.pptx

PowerPoint プレゼンテーション

スライド 1

(Microsoft PowerPoint - E6x5C SDXC Demo Seminar [\214\335\212\267\203\202\201[\203h])

ご使用上の留意・注意事項

Control Manager 6.0 Service Pack 3 System Requirements

10-vm1.ppt

PRIMERGY RX100 S5 未サポートOS動作検証確認情報

目次 1 はじめに 登録商標 商標 注意事項 免債事項 SR-IOV の機能概要 性能検証事例 測定環境 測定結果 各方式による共有 NIC 性能比較 ( ポートあ

DeploymentManager Ver5.1 仮想化ソフトウェア対応状況 管理対象コンピュータの各仮想化ソフトウェア環境上の対応状況について記載しています 2011/4/28

<4C696E A B835E A CC8A D20838A B835E B838982CC8EC08CB

PRIMERGY RX4770 M4 ご使用上の留意・注意事項

常駐接続(ISL AlwaysOn)Wake On LAN設定ガイド

Monthly Research / セキュアハードウェアの登場とその分析

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

. 目次 概要 リストア環境の設定... 3 ステップ 1-1 Recovery Environment メディアからの起動... 3 ステップ 1-2 タイムゾーンの選択... 4 ステップ 1-3 必要なドライバの読み込み... 5 ステップ 1-4 ネットワークドライブの割り当

X-MON 3.1.0

Microsoft Word - dg_sataahciip_refdesign_jp.doc

OptiPlex OptiPlex 4 OptiPlex vpro Energy STAR5.0 EPEAT GOLD 90 Energy Smart Energy Smart

Warp demo station manual

コスト効率の高い業界標準サーバーへのERPの導入

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

PowerTyper マイクロコードダウンロード手順

1. ネットワーク経由でダウンロードする場合の注意事項 ダウンロード作業における確認事項 PC 上にファイアウォールの設定がされている場合は 必ずファイアウォールを無効にしてください また ウイルス検知ソフトウェアが起動している場合は 一旦その機能を無効にしてください プリンターは必ず停止状態 (

System Center Virtual Machine Manager 2008 R2の留意事項一覧

1 概要

スライド 1

計算機概論

BIOSセットアップメニュー 一覧

1. 対象装置 (1) 日立仮想 Fibre Channel アダプタ 適用装置 : EP8000 7xx 2. 仮想 FC アダプタドライバ来歴 この仮想 FC アダプタドライバは 次の機能拡張とバグ修正を含みます バージョン内容 新規追加 AIX ロ

CLUSTERPRO MC RootDiskMonitor CLUSTERPRO MC StorageSaver for BootDisk 仮想環境 ( ゲスト OS) での設定手順 (Linux 版 Windows 版 ) 2017(Apr) NEC Corporation 仮想環境 ( ゲスト

Microsoft Word - PCI-X_PCIeバスのデータ転送-ver1.0.docx

ベストプラクティスガイド ShadowProtect 回復パーティションを含む UEFI マシンのリストア 2015 年 4 月 20 日 更新日 : 2017 年 10 月 25 日

1 概要

160311_icm2015-muramatsu-v2.pptx

Microsoft Word - ADLink DPAC doc

Dell OptiPlex PC OptiPlex CPU OptiPlex 4 vpro TCO Dell KACE vpro OS Energy Smart Energy Smart Energy STAR 5.2 2

Broadcom NetXtreme® Gigabit Ethernet Plus ネットワーク インタフェース カードの取り付け

BESR2010 検証済みドライバ一覧

The Current Status of BitVisor 1.5(仮)

BMR for NVBU NIC bnx2.ko SVR/CLNT 上での SCSI megaraid_sas.ko 自動認識デバイス Partition 構成 (RHEL6.0 uefi/lvm 構成の場合 ) Partition1 /boot/efi EFI 200MB Partition2 /

PRIMERGY TX1310 M3 未サポートOS動作検証確認情報


BIOSセットアップメニュー 一覧

第6期末セミナー2006-1rev1.ppt

Microsoft Word - qtsi_110235_vranger_tandberg_rdx.docx

CONTEC DIOプロバイダ ユーザーズガイド

BIOSセットアップメニュー 一覧

04-process_thread_2.ppt

2 ログイン ( パソコン版画面 ) Web サイトのログイン画面が表示されます 通知メールに記載されている ID と仮パスワードを入力して ログイン ボタンをクリックしてください ID パスワードを連続して 5 回間違うと 当 I D はロックアウト ( 一時的に使用不可 ) されるので ご注意く

目次 Windows 2003 への新規インストール... 3 Windows 2008 への新規インストール... 4 Windows 2012 への新規インストール... 6 Microsoft SQL のサポート... 8 IPv4/IPv6 のサポート... 8 制限事項... 9 Web

センサーデバイスへの仮想IP割り当て実験

Microsoft Word - ssVPN MacOS クライアントマニュアル_120版.doc

PF1000_intro5

BIOSセットアップメニュー 一覧

1 概要

PRIMERGY TX1310 M1 未サポートOS動作検証確認情報

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Red Hat Enterprise Linux 6 Portable SUSE Linux Enterprise Server 9 Portable SUSE Linux Enterprise Server 10 Portable SUSE Linux Enterprise Server 11 P

ご使用上の注意

CommCheckerManual_Ver.1.0_.doc

HP製コンピューターでのWindows® 7 XPモードの使用

Microsoft Word - Android_仮想デバイスマネージャーの使い方

実習 :VLSM を使用した IPv4 アドレスの設計と実装 トポロジ 学習目標 パート 1: ネットワーク要件の確認 パート 2:VLSM アドレス方式の設計 パート 3:IPv4 ネットワークのケーブル配線と設定 背景 / シナリオ 可変長サブネットマスク (VLSM) は IP アドレスの節約

Operating System 仮想記憶

マニュアル訂正連絡票

テスト


URoad-TEC101 Syslog Guide

スライド 1

DataKeeper for Windows リリースノート

スライド 1

BIOSセットアップメニュー 一覧

付録

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

remotewol-configuration-userguide

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

1 概要

PRIMERGY BX920 S1 未サポートOS動作検証確認情報

仮想マシンの高速ライブマイグレーション技術 Yabusame: Postcopy Live Migration for Qemu/KVM

Microsoft Word - クライアントのインストールと接続設定

RUF2-HSC8GWおよびRUF2-HSC-MGRとPRIMERGY TX150 S5/TX200 S3/ECONEL100/TX120/BX620 S4/RX600 S3/RX300 S3/RX200 S3との接続検証結果報告書

Transcription:

BitVisor 2016 年の主な変更点 榮樂英樹 株式会社イーゲル 2016-11-30 BitVisor Summit 5 1

BitVisor 2016 年の主な変更点 Intel GbE MSI + virtio-net MSI-X 対応 性能改善 Thread, Nested Paging バグ修正 mm_lock レースコンディション UEFI スタックアラインメント ATA コマンド READ LOG DMA EXT Virtio-net 割り込みステータス その他 imac SD カードリーダー対応 imac EFI variables アクセスエラー修正 Intel 最新 CPU 対応 2

INTEL GBE MSI + VIRTIO-NET MSI-X 対応 3

背景 : PCIe デバイスの割り込み INTx (PCI 互換 ) MSI MSI-X 4

背景 : PCIe デバイスの割り込み INTx (PCI 互換 ) PCI では 4 本の割り込み信号線を使用 PCIe では INTx に相当するメッセージを使用 PCI デバイス バス INTA INTB INTC INTD 割り込みコントローラー等 CPU メモリー等 5

背景 : PCIe デバイスの割り込み MSI および MSI-X メモリー書き込みによって割り込みを生成 PCI デバイス バス INTA INTB INTC INTD 割り込みコントローラー等 CPU メモリー等 6

背景 : PCIe デバイスの割り込み MSI および MSI-X MSI メモリー書き込みによって割り込みを生成 (Message Signaled Interrupt) アドレスおよび内容はconfiguration registerで指定 PCIデバイス 各デバイスは最大 32 種類のメッセージを使用可能 CPU メモリー等 INTA INTB INTC INTD 割り込みコントローラー等 MSI-X MSIの拡張で アドレスおよび内容をベースアドレバススレジスターで示されたメモリー領域で指定 各デバイスは最大 2048 種類のメッセージを使用可能で 内容は個別に設定可能 7

背景 : PCIe デバイスの割り込みの 組み合わせ PCIe の仕様上の組み合わせ INTx + MSI INTx + MSI-X INTx + MSI + MSI-X 例 Virtio-net: INTx + MSI-X Intel 82572EI: INTx + MSI Intel 82574L: INTx + MSI + MSI-X Intel I219-LM: INTx ( ) + MSI 8

背景 : BitVisor の virtio-net 実装 (Broadcom および Intel GbE 用 ) Guest Operating System BitVisor Virtio-net 割り込みはパススルー Dev1 Dev2 GbE dev ネットワークデバイスの ID やベースアドレスレジスターを偽装 ゲスト OS には virtio-net デバイスとして見せる 割り込みは INTx のみ対応として見せて 実際のネットワークデバイスの INTx をそのまま流用する PCIe で INTx のみ対応のデバイスはありえないが Windows, Linux および macos は特に問題なく動作する 9

Intel I219-LM (Skylake 世代 ) INTxによる割り込みが発生しない問題 BitVisor virtio-net Linux pci=nomsi F 社製 PC 発生しない 発生する D 社製 PC 発生しない 発生しない INTxは使えない MSI を使用すれば問題ない (I219-LM は MSI-X には未対応 ) MSI 対応が必要 10

BitVisor の virtio-net 実装と MSI ネットワークデバイスを MSI で動作させたときに ゲスト OS に見せる virtio-net デバイスの割り込みをどうするか? INTx: MSI から割り込み生成ができない MSI: Virtio-net の仕様に MSI のことが書かれていないためどのように実装すべきかわからない MSI-X: 送信 受信それぞれに割り込みを個別に割り当てることができるため MSI で生成された割り込みからの変換が必要 MSI-X が適切 Virtio-net INTx ネットワークデバイス INTx ( 今まで通り ) Virtio-net MSI-X ネットワークデバイス MSI 割り込み番号変換 11

BitVisor の virtio-net 実装の 割り込み (MSI-X 対応 ) Guest Operating System BitVisor Virtio-net INTx 割り込みはパススルー Dev1 Dev2 GbE dev Guest Operating System BitVisor Virtio-net MSI-X MSI の割り込みは番号変換 Dev1 Dev2 GbE dev MSI 12

実装 : MSI-X テーブル用メモリー空 間 割り込みをどのように発生させるか アドレスと書き込み内容を示すテーブルが ベースアドレスレジスターの指すメモリー空間内に必要 メモリー割り当ての単純化のため Intel GbE デバイスのレジスターが割り当てられているメモリー空間をそのまま MSI-X テーブル用としてゲスト OS に見せる ゲスト OS のアクセスは MMIO フックにより BitVisor で管理する 13

実装 : MSI 用割り込み番号 (VMM のみが使用 ) Intel GbE デバイスの MSI 用に割り込み番号を割り当てる 0x00-0x0F は APIC MSI の仕様により使用不可能 0x20-0xFF はゲスト OS が外部割り込みに割り当てる可能性があり VMM で識別できないと使用不可能 0x10-0x1F を使用 この範囲は CPU の例外や BIOS 呼び出し用のソフトウェア割り込みに使われており 割り込みハンドラーで外部割り込みかどうかの識別は困難なため通常使われない VMM は #VMEXIT の情報から例外 ソフトウェア割り込みと外部割り込みを区別することができる 14

実装 : 割り込み番号変換 外部割り込みパススルー処理で割り込み番号を取得したときに 0x10-0x1F の範囲であれば登録されているコールバック関数を呼び出し 割り込み番号の変換を行う Virtio-net ドライバーのコールバック関数内で MSI-X テーブルを参照し割り込み番号を取得する 本当は Local APIC を使用して IPI により割り込み生成をするべきだと考えたが うまくいかなかったため番号を変換して直接割り込みを生成している 15

現在の BitVisor の virtio-net 実装 Virtio-netデバイスで利用可能な割り込み Broadcom GbE (bnx): INTxのみ Intel GbE MSI 使用不可能 : INTxのみ Intel GbE MSI 使用可能 : INTx + MSI-X 制約事項 I219-LM 環境では pci=nomsi などによりゲスト OS が MSI-X を使用しないようにすると割り込みが発生しない MSI-X 使用時は config.vmm.no_intr_intercept=0 でなければならない 16

性能改善 17

性能改善 : Thread 1.4 までの spinlock 版では fairness の問題があった 特定の CPU が spinlock を高速に繰り返すと他の CPU が長時間待たされる schedule を高速に繰り返すと他の CPU が止まる 以前のロックフリー版ではごくまれに原因不明の panic が発生していた "thread: td_runnable_put failure %u %u" 1.4 までの spinlock を ticketlock に変えて問題を修正できたが 性能は大きく低下した 性能改善のためのコンパイル時 config として CONFIG_THREAD_1CPU を導入した 18

CONFIG_THREAD_1CPU CONFIG_THREAD_1CPU=0 [ 遅い ] ( デフォルト ) 各 CPU でできるだけスレッドを実行する CPU0 VM 1 2 3 VM 2 VM CPU1 VM 1 3 VM CONFIG_THREAD_1CPU=1 [ 速い ] VM 以外のスレッドをひとつの CPU で最後まで回す CPU0 VM 1 2 3 VM VM CPU1 VM VM 1 2 3 VM schedule() 呼び出し VM, 1, 2, 3: スレッド 19

性能改善 : Nested Paging 2MiBページによる性能改善 効果 EPT violation / NPF #VMEXITの回数削減 テーブルあふれ回数削減 2MiB ページ単位用の以下の処理を追加 仮想マシンの物理アドレスを実際の物理アドレスに変換 MMIOフック対象領域が含まれないことの確認 MTRRキャッシュ設定の複数領域にまたがっていないことの確認 上の処理のいずれかに失敗したら従来通り 4KiB ページを用いる 20

バグ修正 21

バグ修正 : mm_lock レースコン ディション ページ単位のメモリー確保 解放処理にレースコンディションが存在した ( 初期のバージョンから ) 内部では 2 のべき乗単位のページ数のサイズ別リストで管理 16KiB 8KiB 8KiB 8KiB 4KiB 4KiB 確保の際に PAGE_TYPE_FREE PAGE_TYPE_ALLOCATED の状態遷移をロック外で実行 解放の際に 隣接する同サイズの領域が解放済みであれば連結するという処理があり その処理と競合していた 隣接する同サイズの領域の解放が同時に行われない限り問題が表面化していなかった 22

バグ修正 : UEFI スタックアラインメ ント imac 27-inch Retina 5K 2015 において UEFI による文字表示 (ConOut->OutputString) 呼び出しの際 スタックポインターを 16 バイト境界に合わせておかないと でハングアップする問題が発生 調査の結果 現在の UEFI の仕様に 16 バイトアラインメントの指定があるようなので修正 23

バグ修正 : ATA コマンド READ LOG DMA EXT READ LOG EXT コマンドのパススルーのみ実装済みで READ LOG DMA EXT コマンドのパススルーが入っていなかったため追加した 24

バグ修正 : Virtio-net 割り込みス テータス 割り込みステータスが常に同じ値を返していた部分を修正した ネットワークデバイスとその他の PCIe デバイスが割り込み線を共有している場合の問題への対応 ネットワークデバイスが自身の割り込みだというステータスを返すことで 残りのデバイスドライバーの割り込み処理が行われない問題が Windows で発生した レベルトリガーの場合割り込みが発生し続けてハングアップしたような状態となる 25

その他 26

imac SD カードリーダー対応 ネットワークデバイスと SD カードリーダーがマルチファンクションデバイスとして実装されている 03:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM57766 Gigabit Ethernet PCIe [14e4:1686] (rev 01) 03:00.1 SD Host controller [0805]: Broadcom Corporation BCM57765/57785 SDXC/MMC Card Reader [14e4:16bc] (rev 01) (prog-if 01) Virtio-net を multifunction=1 で使用すると Windows で BSoD が発生 Virtio-net が PCIe capabilities を完全に隠していたのが原因 対応済み 27

imac EFI variables アクセスエ ラー修正 imac 27-inch Retina 5K 2015 において BitVisor 上で EFI variables へのアクセスがエラーになる問題が発生 SMI を使用する一部 BIOS 環境で発生していた問題と似ている メモリーマップで EfiMemoryMappedIO とされている領域を事前にマップしておくことで解決 Nested Paging 環境のみの対応 28

Intel 最新 CPU 対応 x2apic 対応 L 社製 PC において x2apic が積極的に使われるケースを確認 x2apic は MSR でのアクセスとなるため 対応していない旧バージョンではマルチコア開始を追跡できない MSR は VMM で扱うには MMIO より都合がいい 対応はしたが動作未確認 XSAVES/XRSTORS 命令対応 F 社製 PC において XSAVES/XRSTORS 命令が使用されるケースを確認 パススルーで問題ないので enable にするようにして対応 29

まとめ BitVisor 2016 年の主な変更点 Intel GbE MSI + virtio-net MSI-X 対応 I219-LM 対応 MSI - MSI-X 割り込み番号変換 性能改善 Thread, Nested Paging バグ修正 mm_lock レースコンディション UEFI スタックアラインメント ATA コマンド READ LOG DMA EXT Virtio-net 割り込みステータス その他 imac SD カードリーダー対応 imac EFI variables アクセスエラー修正 Intel 最新 CPU 対応 30

今後の予定 BitVisor 2.0 Unsafe nested virtualization (AMD-V) (VT-x ) AHCI piggyback 改良 PCI 改良 MMCONFIG 対応 Virtio-net 対応 Broadcom NetXtreme GbE driver 追加 USB 3.0 XHCI 対応 PCID 対応 for Ubuntu 16.10 31