Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
論文紹介:KVM/ARM: The Design and Implementation of ...
Search
garasubo
August 03, 2015
690
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
780
RustでISUCONに勝つには
garasubo
1
830
Rustでの自作OSをやってきて
garasubo
0
1.3k
Armの仮想化支援機構を用いてハイパーバイザーを自作する
garasubo
3
8.1k
RustからX Window Systemを触る
garasubo
0
700
Rustで始める自作組込みOS
garasubo
1
3.6k
クラウド向けOS(?)Unikernelとは何か
garasubo
0
1.8k
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
Chasing Engaging Ingredients in Design
codingconduct
0
300
GitHub's CSS Performance
jonrohan
1033
470k
Paper Plane
katiecoart
PRO
2
53k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
BBQ
matthewcrist
89
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Ethics towards AI in product and experience design
skipperchong
2
370
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
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