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
740
RustでISUCONに勝つには
garasubo
1
800
Rustでの自作OSをやってきて
garasubo
0
1.3k
Armの仮想化支援機構を用いてハイパーバイザーを自作する
garasubo
3
7.9k
RustからX Window Systemを触る
garasubo
0
690
Rustで始める自作組込みOS
garasubo
1
3.6k
クラウド向けOS(?)Unikernelとは何か
garasubo
0
1.8k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Agile that works and the tools we love
rasmusluckow
331
22k
Embracing the Ebb and Flow
colly
88
5.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
The Curious Case for Waylosing
cassininazir
1
420
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
620
Rails Girls Zürich Keynote
gr2m
96
14k
Ethics towards AI in product and experience design
skipperchong
2
320
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
630
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