Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
論文紹介:KVM/ARM: The Design and Implementation of ...
Search
garasubo
August 03, 2015
680
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
論文紹介:KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor
システム系論文輪読会で発表したやつ
garasubo
August 03, 2015
More Decks by garasubo
See All by garasubo
Cancel Safetyとスレッドリーク
garasubo
1
730
RustでISUCONに勝つには
garasubo
1
800
Rustでの自作OSをやってきて
garasubo
0
1.2k
Armの仮想化支援機構を用いてハイパーバイザーを自作する
garasubo
3
7.8k
RustからX Window Systemを触る
garasubo
0
690
Rustで始める自作組込みOS
garasubo
1
3.6k
クラウド向けOS(?)Unikernelとは何か
garasubo
0
1.8k
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Code Reviewing Like a Champion
maltzj
528
40k
Faster Mobile Websites
deanohume
310
31k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
Test your architecture with Archunit
thirion
1
2.3k
Transcript
システム論文輪読会 2015/03/04 @garasubo 1
KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor
Christoffer Dall and Jason Nieh. 2
自己紹介 Twitter: @garasubo 大学院生 研究分野: 組込みOS、ハイパーバイザ 3
論文概要 KVMをVE付きのARMで動かすときの実装 についての議論 full virtualなARMハイパーバイザはこれが初 ARMとx86とのアーキテクチャが異なるため、 設計が変わる
オープンソースコミュニティとの関わり 方についても 著者:Christoffer Dall and Jason Nieh. ASPLOS 2014で発表 4
KVMとは Linux上で動作するハイパーバイザ Kernel-based Virtual Machine オープンソース
Type Ⅱの設計 x86やAMDなどには対応 5 T. Shinagawa et al. “BitVisor: A Thin Hypervisor for Enforcing I/O Device Security”より
論文の貢献 KVM/ARMのアーキテクチャ x86とは異なる設計をする必要がある Split designを採用 Linux上で容易に導入できる設計
Bare metalだとhardwareサポートが大変 実際にLinuxカーネルに組み込まれている 実験としてx86のKVMと比較 将来のハードウェアについての提言 6
ARMの仮想化対応について Virtualization Extensionとして一部の ARMv7とARMv8アーキテクチャに実装 Sensitive命令へのTrapがハードウェア的に 実現可能 7 バイナリ変換やOSへの直接的変更なしでの
仮想化が実現可能に
ARMのCPUモードについて Secure worldには直接行けない Hyper trap Guest OS 8 P. Varanasi
et al. “Hardware-supported Virtualization on ARM”より
ARMのMMUについて Short-descriptorとLong-descriptorの2つの形式 のページテーブル Longだと40bitの物理アドレスが使える Non-SecureでのHyp mode以外では2段階のア ドレス変換(LPAE)
仮想アドレス(VA)→中間物理アドレス(IPA)→ 実物理アドレス(PA) 2段階目では絶対に Long-descriptorを使う 9
ARMとx86の違い x86 ARM CPUモード ハイパーバイザ用に全く同じ モードが提供 例外発生により仮想マシンと ハイパーバイザを行き来でき る 例外発生すると特殊なモードに
移行 仮想マシンとハイパーバイザに 同じモードを提供しているわけ ではない ハイパーバイザ モードへの切り 替え すべての状態がハードウェア 的に保存される 必要な状態のみソフトウェアで 保存できる タイマー・割り 込みの仮想化 最近導入された仮想APICサ ポートを使えばできる virtual timerとvirtual GICをサ ポート 10
Split-mode Virtualization できればHypモードですべて行いたいが、 ホストLinuxがKernelモードで動作 x86ならばhypervisor用モードでホストLinux を動かせる HypモードKernelモードをまたがる設計 11
Split-mode Virtualization • Lowvisor • contextやinterruptなどの管理 • Highvisor • Linuxの機能を使う高度な機能
12
実装詳細 CPUの仮想化 sensitive命令をlowvisorで受け、コンテクストスイッチ メモリの仮想化 Stage-2の変換を行う
Stage-2のテーブルはhighvisorからも管理できる I/Oの仮想化 MMIOのみなのでページテーブルで対処 QEMUとVirtioを使ったユーザースペースでの仮想化 割り込みの仮想化 ゲストでの割り込みはHypモードで受ける VGICを使いゲストへの割り込み通知 ゲストにはGICは直接触らせないで仮想的なものを触らせる タイマーの仮想化 Virtual timerを使うことで読み込みにはHypモードに入らなくてよい Virtual timerからの割り込みはHypモードで受ける 13
Linuxカーネルに組み込まれる際 の知見 コードのメンテナンス性は大事 開発者に信頼されるようになれ 小さなコードから始めよう 友達をつくりコミュニティに参加しよう
指揮系統を知るべき 根気強くなれ 14
実験結果 Cortex A-15の2コアのボードで実験 Core i7のボードで動くKVMと比較 実際のパフォーマンスより仮想化時とネイティ ブのときのパフォーマンスの差に注目
ベンチマーク 小さいゲストOS lmbench シングル・マルチコアのアプリケーション エネルギー効率についても調べる 15
実験結果 16
実験結果考察 VGIC/vtimerを利用したほうが良い結果 となる 差が顕著なのはvtimerが使えないせい マルチコアではIPIによるオーバーヘッ ド
x86はEOIでハイパーバイザをはさみ更に遅 い アプリケーションではARMのほうがい い結果のものと悪いものと両方 17
エネルギー効率 基本的にARMのほうが上 18
コードの複雑さ x86のほうがコード量が多い理由 互換性の確保 x86の複雑な命令 pagingモードの多さ 割り込みタイマー対応
19
ハードウェアデザインについ て メモリーのモデルを同じにするべき ARMだとkernelとhypモードのモデルが異なる VGICへのアクセスパフォーマンスは重要 VGICへのアクセスを高速化するかアクセス回数が
少なくなるような設計に Inter-Processor Interrupt(IPI)によるtrapを なくす IPIを送る際のtrapがどうしても生じる 20
関連研究 従来のARM上のHypervisor Paravirtualなものがほとんど あまり広く使われていない Xen on
ARM KVMより設定が大変 Microkernel型 TCBを小さくできる 設計が全く違う 21
まとめ KVMをARMに移植した Split-modeデザインは有効だった 実行コスト・エネルギーのオーバーヘッドは10%にお さまった x86版KVMとも遜色ないオーバヘッドに抑えられた
オープンソースコミュニティへの接し方の提言 ハードウェアデザインへの提言 ちなみにRaspberry Pi 2がCortex-A7らしいので このKVMを試せる? 22