Upgrade to Pro — share decks privately, control downloads, hide ads and more …

論文紹介:KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor

garasubo
August 03, 2015
480

論文紹介:KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor

システム系論文輪読会で発表したやつ

garasubo

August 03, 2015
Tweet

Transcript

  1. 論文概要  KVMをVE付きのARMで動かすときの実装 についての議論  full virtualなARMハイパーバイザはこれが初  ARMとx86とのアーキテクチャが異なるため、 設計が変わる

     オープンソースコミュニティとの関わり 方についても  著者:Christoffer Dall and Jason Nieh.  ASPLOS 2014で発表 4
  2. KVMとは  Linux上で動作するハイパーバイザ  Kernel-based Virtual Machine  オープンソース 

    Type Ⅱの設計  x86やAMDなどには対応 5 T. Shinagawa et al. “BitVisor: A Thin Hypervisor for Enforcing I/O Device Security”より
  3. 論文の貢献  KVM/ARMのアーキテクチャ  x86とは異なる設計をする必要がある  Split designを採用  Linux上で容易に導入できる設計

     Bare metalだとhardwareサポートが大変  実際にLinuxカーネルに組み込まれている  実験としてx86のKVMと比較  将来のハードウェアについての提言 6
  4. ARMのMMUについて  Short-descriptorとLong-descriptorの2つの形式 のページテーブル  Longだと40bitの物理アドレスが使える  Non-SecureでのHyp mode以外では2段階のア ドレス変換(LPAE)

     仮想アドレス(VA)→中間物理アドレス(IPA)→ 実物理アドレス(PA)  2段階目では絶対に  Long-descriptorを使う 9
  5. ARMとx86の違い x86 ARM CPUモード ハイパーバイザ用に全く同じ モードが提供 例外発生により仮想マシンと ハイパーバイザを行き来でき る 例外発生すると特殊なモードに

    移行 仮想マシンとハイパーバイザに 同じモードを提供しているわけ ではない ハイパーバイザ モードへの切り 替え すべての状態がハードウェア 的に保存される 必要な状態のみソフトウェアで 保存できる タイマー・割り 込みの仮想化 最近導入された仮想APICサ ポートを使えばできる virtual timerとvirtual GICをサ ポート 10
  6. 実装詳細  CPUの仮想化  sensitive命令をlowvisorで受け、コンテクストスイッチ  メモリの仮想化  Stage-2の変換を行う 

    Stage-2のテーブルはhighvisorからも管理できる  I/Oの仮想化  MMIOのみなのでページテーブルで対処  QEMUとVirtioを使ったユーザースペースでの仮想化  割り込みの仮想化  ゲストでの割り込みはHypモードで受ける  VGICを使いゲストへの割り込み通知  ゲストにはGICは直接触らせないで仮想的なものを触らせる  タイマーの仮想化  Virtual timerを使うことで読み込みにはHypモードに入らなくてよい  Virtual timerからの割り込みはHypモードで受ける 13
  7. 実験結果  Cortex A-15の2コアのボードで実験  Core i7のボードで動くKVMと比較  実際のパフォーマンスより仮想化時とネイティ ブのときのパフォーマンスの差に注目

     ベンチマーク  小さいゲストOS  lmbench  シングル・マルチコアのアプリケーション  エネルギー効率についても調べる 15
  8. 実験結果考察  VGIC/vtimerを利用したほうが良い結果 となる  差が顕著なのはvtimerが使えないせい  マルチコアではIPIによるオーバーヘッ ド 

    x86はEOIでハイパーバイザをはさみ更に遅 い  アプリケーションではARMのほうがい い結果のものと悪いものと両方 17
  9. 関連研究  従来のARM上のHypervisor  Paravirtualなものがほとんど  あまり広く使われていない  Xen on

    ARM  KVMより設定が大変  Microkernel型  TCBを小さくできる  設計が全く違う 21
  10. まとめ  KVMをARMに移植した  Split-modeデザインは有効だった  実行コスト・エネルギーのオーバーヘッドは10%にお さまった  x86版KVMとも遜色ないオーバヘッドに抑えられた

     オープンソースコミュニティへの接し方の提言  ハードウェアデザインへの提言  ちなみにRaspberry Pi 2がCortex-A7らしいので このKVMを試せる? 22