1
仮想化な、まああてにすなひどすぎる乱立
組込みとVM実現技術の本質
たけおか@AXE2010/MAY/12
2009/AUG/28
2
AXEって誰だ?
3
(株)アックスの基本ソフトの採用実績UNIX,Linux系
•クラスタLinux雷神
•axLinux組込みLinux–家電、デジタルTV–ネットワーク機器–携帯機器–ロボット–航空防衛
•スケジューラを強化
•組込みBSD–ネットワーク機器
4
(株)アックスの基本ソフトの採用実績
RTOS• XTAL
– ザウルス
– オリンパスデジカメ
• 絹;Posix1003.13 RTOS
• AUTOSAR
• JasParへの参加
• 実時間Linux
5
アックスの国産CPUメーカとの協業
富士通富士通 FR/VFR/VルネサスエレクトロニクスルネサスエレクトロニクスSH-Mobile,SH2ASH-Mobile,SH2A
東芝東芝MePMeP
東芝東芝CELLCELL
セイコーエプソンセイコーエプソンC33/C17C33/C17
シャープシャープLH795xxLH795xx
サンヨーサンヨーLC690132LC690132
ルネサスルネサスエレクトロニクスエレクトロニクス
V850V850
6
アックスは組込み仮想化を4年間に
渡り開発している• Linux と POSIX RTOS
• Linux と AUTOSAR
どちらも、実時間性を実現
最悪時間を、決定的に保証
リアルタイム通信も実現
7
ABCD
• Intel ATOM用のブートローダ開発のサポート
– ブートローダ+OSの、トータルなサポートを提供します
• PC BIOS無しで、QNX, Linux, POSIX RTOS,AUTOSARなどが動作
• カスタマイズしたブートローダを供給します
• axLinux, 絹, AXE-AUTOSARなどと相性抜群
8
蛍• 組込みCPUで仮想機械を実現する
• 世界に先駆けた組込み用ハイパバイザ
• 実時間性をもつ仮想機械を実現したハイパバイザ
• 1つのCPU上に複数の独立した仮想機械を実現
• 各仮想機械では、同時に個別に全く異なるOSを起動
• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなどと、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立
した仮想機械で実行
• アックス独自のスケジューリング技術で、最悪値を保証した仮想機械のスケジューリングを行う– ディフィニット・スケジューラで、時間スロットを必ず一定期間ごとに割り当てる
• 高度化する車載機器、高機能通信機器、高機能FA制御機器、ネッ
ト・オーディオなどに最適
• サポートCPU
– IA32, x86, MIPS, ARM(開発中), V850系(将来)
9
蛍• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなど
と、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立
した仮想機械で実行
• 仮想機械の実績
– Linux + AUTOSAR
– Linux + 絹 (POSIX API RTOS)
– NetBSD + NetBSD
– MIPS, V850系, x86,ARM
10
組込み仮想化が必要とされる
背景
11
組込み仮想化の必要性 1
• 家電セット・メーカが仮想化を必要とする動機(1)製品力強化のための機能複合
(2)過去データフォーマットの救済と継承
(3)お客様ごとのアプリケーション変更
(4)白物含めたネットワーク整備
(5)監視プロセスによる信頼性向上
(6)ハードウェア進化に対応したスケーラビリティ担保
(7)ネットワーク経由・端末内で実装されるそれぞれの機能境界の自由な変更
– 仮想化により、過去のソフトウェアをある仮想機械で動かし、別な仮想機械で新しいOSとソフトウェアを動かす。
同時にひとつの同じハードウェア上で。
– ソフトウェア移行の一時のコストを下げられる
12
家電セット・メーカの動機
ハードウェア(実機械)
ハイパバイザ
仮想機械
古いLinux(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
新しいLinux(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
既存安定している
新しいが不安が残る
13
組込み仮想化の必要性 2
• オートモーティブ分野での動機
• 高信頼
– あるソフトウェアの問題で、すべてが停止しない
• 仮想機械間の絶縁により、悪い影響が他の機械に及ばない
– 多重化
• 一つの物理ハードウェアに、多くの仮想機械で多重化
• ソフトウェアのバグに強い– 数種類の異なった実装を動かせば安心(安全性が高まる)
– 高信頼を低コストで実現可能
14
オートモーティブ
ハードウェア(実機械)
ハイパバイザ
仮想機械
RTOS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
RTOS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
Linux(スーパバイザ)
情報系アプリケーション
(
ユーザ・タスク)
情報系アプリケーション
(
ユーザ・タスク)
仮想機械
RTOS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
15
組込み仮想化の必要性 3
• GPLなソフトウェアからの絶縁
– GPLライセンスのソフトウェアとプロプライエタリなソフト
ウェアを別々の仮想機械に入れて、絶縁する
• 単純で絶対に安全
– 徐々に、GPL側から、プロプライエタリなソフトウェアに
書き換えて移行が可能
16
GPLとの絶縁
ハードウェア(実機械)
ハイパバイザ
仮想機械
Linux(スーパバイザ)
GP
L
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
商用OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
17
仮想化技術乱立中
18
有名な仮想化ソフトウェア
• Xen (Citrix)
• KVM
• VirtualBox (Sun)
• VMWare (VMWare (EMC))
• HyperV (Microsoft)
• Virtual PC (Microsoft)
• Parallels (Parallels)
19
組込みに適用できる要件(最低限)
• マルチプラットフォーム– ホストOS、ゲストOS、CPU
– Windowsが動く必要なんか無い(?)
• ソースコードが供給される– オープンソースであれば、いじり易い(現状)
– 信頼性、品質の向上を独自におこなえる
• エンタープライズ・サーバと事情は近い– OS: Linux, UNIX(AIX, Solaris, HP-UX), 独自OS
– CPU: PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)
20
組込みに適用できる
• LinuxとμiTRONが同時に動くのか???
– 可能です
• LinuxとAUTOSARも同時に動く
• Linuxと絹(Posix 1003.13 RTOS)も同時に動く
21
仮想化とは?
22
VM 対 VM !? 誤解無きよう
• OSのVMは、仮想マシン・インタープリタではない– 次の2つのVMはまったく別物
• 「仮想化技術(VM)」 はSystem Virtual Machine• Java仮想マシン(JavaVM)はProcess Virtual Machine
– なんでも「仮想マシン」とも「仮想機械」ともいう悪い風潮• 英語でも両者とも「Virtual Machine」
– UCSD-P Systemが悪いのです(多分)• 仮想マシン・インタープリタは「Pseudo Machine」とでもしてくれれば良かったのですが…
23
仮想機械技術の分類
• 仮想機械技術の分類• Virtual Machines: Versatile Platforms for Systems and Processes英語版Wikipedia, Ravi Nair
(著) ISBN-10: 1558609105による。
• 英語版Wikipediaでも同様の分類 http://en.wikipedia.org/wiki/Virtual_machine
– System Virtual Machine
• type 1: ハードウェア上でじかにハイパバイザ(仮想マシン・モニタ)が動作する
• type 2: OSが存在し、そのもとでハイパバイザが動作。例えばWindows用のVMWareなど
– Process Virtual Machine
• アプリケーションとして動作するソフトウェアのインタープリタのこと。JavaVMなど。組込みで特に問題は無い
• 組込みでは、SystemVMとくにtype1が求められて
いる
24
仮想マシン・インタープリタではない
ハードウェア(実機械)
ハイパバイザ
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
ハードウェア(実機械)
仮想マシン・インタープリタ
仮想機械
仮想マシン・インタープリタ(アプリケーションの一種)
ユーザ・タスク
バイトコード
(
ただのデータ列)
バイトコード
(
ただのデータ列)
バイトコード
(
ただのデータ列)
25
VMの年表もどき• 1966
– System/360
– CP-40(ハイパバイザ), CMS(ゲストOS)
– System/360 model40 上で 14個の仮想機械
• 1972
– System/370-VS (仮想記憶システム)
– VM/370 (ハイパバイザなど)
• 1982
– 68010発表: 仮想機械と仮想記憶をサポートしたアーキテクチャ
• 2003
– Xen
– ケンブリッジ大学Computer Laboratory
26
VMとは(1)
ハードウェア(実機械)
ハイパバイザ
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
27
VMとは(2)
• 機械語命令は,そのまま実計算機で実行される
• しかし、機械が複数ある(ように見える)
• 完全なメモリの分離– それだけなら、マルチタスクOSでも可能
– それ以外にも…
28
VMとは(3)• マルチタスクとどう違うのか?
• OSが仮想機械ごとに動く– マルチタスクはOSは一つ
– VMでは、仮想機械ごとにOSが必要(またはOSレス?)
• IOが独立– マルチタスクOSは、IOはシステム全体で共用
– VMでは、仮想化された独立IOが与えられる
• 仮想機械で実行されていることに気づかない– アプリケーションもOSも
• 仮想機械ごとに完全に独立、不干渉– 安全。バグの影響が伝播しない
– セキュリティ上も
29
マルチタスクとどう違うのか?
ハードウェア(実機械)
ハイパバイザ
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
OS(スーパバイザ)
アプリケーション
(ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
ハードウェア(実機械)
マルチタスク仮想機械
30
VMの簡単な構造• ハイパバイザ(仮想機械モニタ)が居る
– 実計算機の資源の管理を行う
• 仮想機械– 仮想機械を「ゲスト機械(マシン)」と呼ぶことはない
• 豆知識:「ゲスト・マシン」というのは、「ユニバーサル・ホスト」と
いう概念の計算機アーキテクチャで実現されるハードウェア計算機のことをいう言葉
• 仮想機械内で動作するOSを「ゲストOS」と呼んだり
• 「ホストOS」は、実計算機の実資源を駆動する
– ハイパバイザとの関係は後述
31
VMとは(4)ハイパバイザの存在に気づかない(1)
• 仮想機械で実行されていることに気づかない– アプリケーションもOSも
– 仮想化管理ソフトウェアが存在するのに
– ハードウェア的にも…
• 仮想機械管理ソフトウェア– ハイパバイザ Hypervisor
• OSはスーパバイザ Supervisor
– IBM System370では「CP」
32
ハイパバイザ用のレジスタが実機械にあったとしても、仮想機械は気がつかない
• ハイパバイザ用レジスタは、OS(特権レベル動作)にもアプリケーション(ユーザ権限動作)
にも見えない
– 空間が違って、アクセスできない
– 特殊なレジスタ・アクセス命令になっていて命令を発行できない
• ハイパバイザ特権命令とか
• あまつさえ、通常のステータス・レジスタさえ、ユーザ権限からはアクセスできなくする– IBM/360,370, 68010
33
VMとは(6)ハイパバイザの存在に気づかない(3)
• ハイパバイザ用のレジスタが実機械にあったとしても、仮想機械は気がつかない
– 実機械の定義が重要
– ハイパバイザは、実機械のハイパバイザ・レジスタを見る、実は。
• 実機械って仮想機械と別物になってるじゃん!?
34
VMとは(7)ハイパバイザの存在に気づかない(4)
• 歴史的には、ハイパバイザ用の特殊な機能は無しに、仮想化を行っていた
• 実機械と仮想機械は、完全に同じレジスタセット(ハードウェア機能)を持っていた
• IBM S/360, S/370では
– ハイパバイザだけが、巧妙にスーパバイザ・モードで走行し、
– 仮想機械のスーパバイザは、だまされて走行していた
– CPUステータス・レジスタを読み書きしようとすると、特
権例外が発生し、スーパバイザに制御が移る
• その後、ハイパバイザがよきに計らって、制御をOS
などに戻す
35
ハイパバイザ(仮想機械モニタ)
のお仕事
36
VMとは
• OSが仮想機械ごとに動く
– VMでは、仮想機械ごとにOSが必要(またはOSレス?)
• IOが独立
– マルチタスクOSは、IOはシステム全体で共用
– VMでは、仮想化された独立IOが与えられる
• 仮想機械で実行されていることに気づかない– アプリケーションもOSも
37
ハイパバイザのお仕事
• 資源管理
• VM間通信
• IOシミュレート
38
資源管理• 資源とは?
– 計算機一般の資源と同じ、ではあるが…
• 資源– メモリ
– CPU時間
– IO• HDD
• プリンタ
• 端末
• ネットワーク
• その他
– システム・レジスタ• スーパバイザが管理すべき特殊レジスタ(アクセスに特権が必要)
39
資源管理メモリ(1)• 実計算機の実メモリを割り当てる
• 仮想空間も重要な資源– ページテーブル (仮想記憶用のアドレス変換テーブル)
– ページテーブルは有限• 機械ごとにページテーブルを持つことも可能だが…
• ページテーブルはかなり大きい– ページテーブルを仮想空間に置く事は可能だが、OS,ハイパバイザが
かなり複雑になる
– システムに一つの大きなページテーブルを持つ
• シャドー・ページテーブル
豆知識:マイクロ・カーネル Machも、仮想空間を資源とし
て管理してました
40
資源管理メモリ(2)• 仮想空間も重要な資源
– ハイパバイザが隠したページテーブルを持つ
• シャドー・ページテーブル
– 仮想機械のゲストOSが、MMUのページテーブルに値
をセットするとき、トラップが発生してハイパバイザに制御が移る
• ハイパバイザは、実機械のメモリ番地を、MMUのページテーブルにセットする。そ
の後、正常復帰。
• MMUのページテーブルを読み出すときも同様にハイパバイザが介入し、実機械
のアドレスではなく、仮想機械内のアドレスが読み出せたように振舞う
• 通常、MMUアクセスは、特権命令や特権IOになっている
• 近代的なTLBしか無い機械では、TLBにセットする値を調整するだけ。より簡単。
– TLBミスによりハイパバイザを起動すると、オーバヘッドが少なくできたり
41
メモリ管理模式図
• ハイパバイザが、だまして、実ハードウェア上のアドレスを指させる
• ゲストOSのMMUハードウェアのページテーブルや、TLB
へのアクセス時
– 値のセット時
– 値の参照時
に、ハイパバイザが介入する
仮想機械を生成するときに,
割り当ててもらった実メモリ。
ハードウェアのMMU(最近のRISCではTLBのみ)
仮想機械はここを指しているつもり
仮想機械
実機械の実メモリマップ仮想機械の実メモリマップ
ここに実メモリがマップされて欲しい
仮想機械の仮想空間シャドーページテーブルハイパバイザが管理する、ページテーブル(各VMの仮想
記憶アドレスを実機械の実アドレスに変換するテーブル)
ゲストOSが管理す
る、ページテーブル(仮想記憶のア
ドレス変換テーブル)
ゲストOS
1) ゲストOSがMMU(TLB)に、アド
レスをセットしようとする
ハイパバイザ
2)シャドーページ・テーブル
から実機械アドレスを取り出しMMU(TLB)にセット
42
資源管理メモリ(3)• 仮想機械同士が干渉しないようにする
• 仮想機械間で情報が漏れないようにする
– 仮想機械は完全に独立
– 他の仮想機械のメモリを読み書きできてはいけない
• ページテーブル管理で実現
– 無関係な機械のメモリ・ページは絶対に、仮想機械の論理空間にマップさせない
43
資源管理メモリ(4)• 仮想計算機の肝はページテーブル管理
– 仮想機械のアイソレーションは、メモリを読み書きさせない
– 無関係な機械のメモリ・ページは絶対に、仮想機械の論理空間にマップさせない
– 仮想記憶のための「アドレス変換機構」を使用して、ページ単位でアクセスを制御
– 仮想記憶用のページ・テーブルや、TLB(アドレス変換バッファ)へセットする値を、ハイパバイザが制御する
44
資源管理 CPU時間• CPU時間が適切に割り当たるようにする
– 無限封鎖がない
– 公平がいいとは限らない• そもそも「公平」とは???
• 組み込みは実時間性が必要 (いつもか?)
• 実時間性– 割り込みルーチンは、仮想機械内で動くの?
• 実機械レベル=ハイパバイザ内で動くの???
• ハイパバイザで消費する時間は誰に付けるのか?
45
資源管理 IO• IO
– HDD
– プリンタ
– 端末
– ネットワーク
– タイマ割り込み
– その他• パラレルIOポート (GPIOポート)
• シリアルIOポート
• その他が、組込みで重要
• そもそも大型機(System370)のIOとは…
46
資源管理 IO• そもそも大型機(System370など)のIOとは
– IOチャンネルというものが普通
• 「チャンネル・プロセッサ」というものが居る– 高速DMAでIO処理を行う
– メインのプロセッサは、チャンネル・プロセッサを起動して、あとは終了割り込みを待つ
• アプリケーションは、(出力の場合)
1)DMAされる領域にデータを置き
2)チャンネル・プロセッサの起動を呼び出す
3)チャンネル・プロセッサが動作終了すると、コールバック・ルー
チンが呼び出される
※入力も同様。
IOチャンネルから、終了割り込みが来たら、指定した領域に
データが入っている
47
資源管理 IO• IOチャンネルというものが普通
– (制御ブロックに終了結果を書くのが普通。だが略)
出力したいデータ(データの長さ情報なども)
CPU
チャンネル・プロセッサ1)データを置く
2)起動をかける
3)データを読み出し※ここで仮想機械とIOチャンネルのDMAアドレ
スに食い違いが出る。ハイパバイザは、DMAアドレスが仮想機械のも
のと合うように、仮想機械に知られないように、DMAアドレスを補正する。いわゆるIOMMUがあれば、ハイパバイザの負
担は軽減される。システムの実行も速くなる。
3.5)出力
4)終了割り込み
48
資源管理 IO• IOチャンネルというものが普通
• なんでもIOチャンネルなので、仮想化が容易
– IOポートを直接叩いたりしていない(重要)
– 割り込みはシミュレートし易い
– HDDのセクタ読み出しも、IOチャンネル
• でも、だんだん高度なシミュレーションを
– プリンタもIOチャンネル
• スプーリングなどは、当然ソフトウェアだが
– ネットワークもIOチャンネル
• ネットワーク・プロセッサもどんどん賢くなっているが– プロトコル処理がどんどんネットワーク・プロセッサに…
49
資源管理 IO• IOチャンネルの仮想化対応
– DMAと終了割り込みが基本であるから
• IOポートを直接叩いたりしていない(重要)
– IOチャンネルにセットするDMAアドレスを
仮想機械内の空間のアドレス->実アドレス
と変換すればよい
– 割り込みはハイパバイザが受け、ソフトウェア・割り込みで出しなおすなど
• 直接、仮想機械に割り込むことも、ハードウェア支援があれば難しくない
50
資源管理 IO• HDD、ファイルは仮想化の中心のひとつ
– だんだん高度なシミュレーションを
– ファイルを本当にハンドリングするのは誰か?
• 特別なゲストOS
• ネットワーク
– そもそも速くないので、オーバヘッドが目立たない
– 仮想機械間の通信は、仮想的なネットワークI/Fにする
ことがよくある
51
資源管理 IO• 組込みの世界にありがちな…
• IOポート
– それって仮想化できるの?
– 割り込み番号は?
• 極端な話、
まったく同じLinuxを、同時に複数の仮想機械で動かすとき、直接IOポートを叩いているデバイス・ドライバは、どうなるのか?
52
資源管理 IO• IOポートを、仮想化するとした場合
– IOポートの番地は通常固定だが…
• ソフトウェアに気づかれずに、IOポートを見せるのは??
• アドレス変換が必須– 領域単位ででもアドレス変換をするハードウェアは必要
– 割り込み• 遅めであれば、ソフトウェア(ハイパバイザ)介在でなんとかで
きる場合も
• 高速割り込みなら、実ハードウェアと仮想機械の割り込み番号の食い違いは?
• 割り込みルーティングという技術を使って解決– 割り込み番号を仮想機械ごとに付け替えられるようにすべき
53
資源管理 IO• IOポートのアドレス変換
– 理想的にはこうしたい
– IOポートは、バイト(ワード)単位でアドレスがついているから、変換するのが大変
– アクセス禁止も同様に大変
– 大きなIOのブロック単位(4kバイトごととかにするするか…(するとMMUと同じになる))
– いわゆるIOMMUではない
仮想機械1
実ハードウェア
IO空間の0x10番地
仮想機械2
IO空間の0x10番地
実IO空間の0x110番地
IOアドレス
変換器
実IO空間の0x210番地
54
資源管理システム・レジスタ• スーパバイザしかアクセスできない、特権の必要なシステムの情報
の入ったレジスタのアクセスが発行された場合、
• すなわち、仮想機械上のゲストOSが、システム・レジスタにアクセス
したとき、
• トラップが発生して、ハイパバイザに制御が移る。
• ハイパバイザは、都合のいいように処理し、ゲストOSに制御を戻す
• 一般プロセスが、システム・レジスタにアクセスした場合も同様のシーケンスを行うが、最終的には、ゲストOSにより一般プロセスの例外
がハンドリングされる
55
ハイパバイザは対話できない• 仮想機械でハイパバイザ管理アプリケーションを起動して管理
• ハイパバイザ単独では、ほぼ何もできない
– ハイパバイザは資源管理しかしない
• システム管理者であっても、ハイパバイザと直接やりとりする方法はない
※KVMは、ハイパバイザとホストOSが一体なので、例外的
ハードウェア(実機械)
ハイパバイザ
仮想機械
OS(スーパバイザ)
ハイパバイザ管理
アプリケーション
アプリケーション
(
ユーザ・タスク)
仮想機械
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
コンソール
56
様々な仮想化方式
57
Xen• ホストOSは仮想機械(Dom0)の一つ(のOS)が担当
– ゲストOSからの実IO要求をハイパバイザが受け
– ハイパバイザが、Dom0のOSに実際の要求を依頼
ハードウェア(実機械)
ハイパバイザ
仮想機械0Dom0
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械1Dom1
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械2Dom2
OS(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
IO要求
58
Xen• http://www.xen.org/
• オープンソース
• ホストOS
– Linux, NetBSD
• ゲストOS
– Windows, Linux, Solaris, *BSD
• CPU
– 86, x86_64, IA64, PowerPC
59
KVM• ホストOS兼ハイパバイザのLinuxが全部やる
– ゲストOSからの要求をホストOS Linuxが受けなんでも処理する。Linuxべったり
• 仮想機械のIO処理にQEMUを使ったのが特徴的。
• QEMUは仮想機械の空間で動く
• 仮想機械は、ホストLinuxのプロセスの一つ(プロセスの空間一つをもらって、仮想機械となり動く
ハードウェア(実機械)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
仮想機械1
Linux(スーパバイザ)
アプリケーション
(
ユーザ・タスク)
アプリケーション
(
ユーザ・タスク)
ハイパバイザ兼ホストOS Linux
IO要求QEMU
60
KVM• http://www.linux-kvm.org/page/Main_Page
• オープンソース
• Linuxカーネルを拡張し、ハイパバイザ機能を付加
• ホストOS
– Linux
• ゲストOS
– Linux,Windows, Solaris,FreeBSD, OpenBSD, DOS
• ハイパバイザが複雑で、エラーやセキュリティ・ホールがあったら、ダメなのでは???
61
蛍• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなど
と、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立
した仮想機械で実行
• 仮想機械の実績
– Linux + AUTOSAR
– Linux + 絹 (POSIX API RTOS)
– NetBSD + NetBSD
– MIPS, V850系, x86,ARM
62
蛍• 組込みCPUで仮想機械を実現する
• 世界に先駆けた組込み用ハイパバイザ
• 実時間性をもつ仮想機械を実現したハイパバイザ
• 1つのCPU上に複数の独立した仮想機械を実現
• 各仮想機械では、同時に個別に全く異なるOSを起動
• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなどと、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立
した仮想機械で実行
• アックス独自のスケジューリング技術で、最悪値を保証した仮想機械のスケジューリングを行う– ディフィニット・スケジューラで、時間スロットを必ず一定期間ごとに割り当てる
• 高度化する車載機器、高機能通信機器、高機能FA制御機器、ネッ
ト・オーディオなどに最適
• サポートCPU
– IA32, x86, MIPS, ARM(開発中), V850系(将来)
63
仮想化用ハードウェア
64
ハードウェア・サポートのある有名なCPUアーキテクチャ
• VT-x
• AMD-V
• 68010
65
Intel VT-x
• Extended Page Tables (EPT)
– ページテーブルに、属性を増やす
• Intel's Virtualization Technology for DirectedI/O (VT-d)
– いわゆるIOMMU
• DMAするデバイスから出力されるアドレスを、アドレス
変換する
• IOチャンネルの仮想化が、非常に単純に!
• 64bitのゲストOSが動けるように配慮
66
68010• 68010は仮想機械をサポート
– 仮想記憶(VS)もサポート。SUN2は仮想記憶のあるBSDが動作。
• “MOVE from SR” (CPUのシステム・ステータス・レジスタ読み出し)
を特権命令とした
– 68000は、ユーザモードでも読み出せた
• SR読み出しでもトラップして、Hypervisorを起動した
• IBMのCP (IBMのHypervisor)は、ゲストOSもユーザ・モードで動い
ていた
• SR読み出しで、OSがなにかをしようとしたら、Hypervisorで手当てし
た– ユーザ・アプリケーションがSRを見ることは、通常は無い
• メモリ空間のプロテクションは、外付けのアドレス変換ハードウェア(MMU) 68451への設定で行える
67
デスクトップ/
エンタープライズ仮想化の
方向
68
デスクトップOSの仮想化
• 典型的使用シーン– Windows7になってもWindowsXPが使える
– Windowsメインだが、組込み開発にLinuxも必要
– Windowsメインだが、同じx86でμiTRON開発ができれば素敵(夢)
– IntelMacユーザだが、Windowsも使う
69
デスクトップOSの仮想化
• 求める性能– Windowsが欲しい
– IO性能がすごく良い必要はない
– ワープロ、Excel、ブラウザが普通に動けばいい
– デバッガが普通に動けばいい
– 各仮想機械(各ゲストOS)から、ファイルが便利にアクセ
スできればいい
• 結論: VMWareでも使えばよし
– Windowsを欲しい人とは、話すことがあまりないよね
70
エンタープライズOSの仮想化
• 典型的使用シーン– 大型機ネイティブOS、各社UNIXとLinuxが動く
• SolarisとLinux, AIXとLinux, HP-UXとLinux,MVSとLinuxとか
– Linuxの動く仮想機械をカスタマごとに起動する
• ハードウェアのパワーに対して、各カスタマの処理トランザクションが小さい
– ひとつの案件を複数の仮想機械で実現
• ある仮想機械のバックアップを、別の仮想機械で行う
• LinuxのフォールトでゲストOSが停止しても、同じ実ハードウェ
ア上の、別仮想機械で即座にバックアップする
• ある仮想機械が、セキュリティを破られて(停止させて)も、即
座に別な仮想機械でバックアップする
71
エンタープライズのOS,CPU
• エンタープライズ・サーバには各社の事情がある
• OS
– Linux, UNIX(AIX, Solaris, HP-UX), 独自OS
• CPU
– PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)
• Windows動きません
• 組込みと近い状況にある– PCは家電と同じ民生品なので、PC&家電が特殊と考え
るべき。本当のプロは。
72
エンタープライズOSの仮想化
• 求める性能– CPUパワーより、トランザクション性能
• Web系だと、ネットワーク性能で抑えられる– CPUパワーが余りがちなので、仮想機械をたくさん作れる
– データベース・アクセスは速い方がいい
– 通常の仮想機械間通信はほぼ無い
– 仮想機械のマイグレーションはできるべき
• 結論: ホストOSは、各社ネイティブかLinuxだね
– Xen, VitualBox, KVMっていい感じ
73
組込み分野について
74
組込み分野の仮想化
• 想像できる典型的使用シーン– 情報系をLinuxかWindowsで、実時間系を
RTOS(μiTRON)で動かしたい
– 複数の仮想機械で、複数のRTOSを動作させる
• 一つのRTOS(仮想機械)がフォールトしても、他の仮想機械は
安全に動き続ける– 旧来のRTOSアプリケーションは、一つのメモリ・アクセス・エラーでシ
ステムが落ちる可能性がある
75
組込みに適用できる
• LinuxとμiTRONが同時に動くのか???
– 動いている
76
組込みに適用できる要件(最低限)
• マルチプラットフォーム– ホストOS、ゲストOS、CPU
– Windowsが動く必要なんか無い(?)
• ソースコードが供給される– オープンソースであれば、いじり易い(現状)
– 信頼性、品質の向上を独自におこなえる
• エンタープライズ・サーバと事情は近い– OS: Linux, UNIX(AIX, Solaris, HP-UX), 独自OS
– CPU: PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)
77
組込みに適用できる
• Xen (Citrix) http://www.xen.org/
– ホストOS, ゲストOSとも複数種類(Linux, NetBSD)
• KVM http://www.linux-kvm.org/page/Main_Page
– オープンソース
– ホストOS:Linuxべったり。ゲストOS:Linuxべったり
• VirtualBox (Sun) http://www.virtualbox.org/
– オープンソース
– CPU:Sparc, X86, etc...
– ホストOS:Solaris10,Windows,Linux,MacOS X
– ゲストOS:事実上あらゆるx86ベースのOSをサポートWindows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7), DOS/Windows 3.x, Linux(2.4 and 2.6), Solaris and OpenSolaris, and OpenBSD.
78
本当の組込みの要件
• 実時間性
• コケてもコケない
79
本当の組込みの要件
• 実時間性– CPUパワーの配分
• 適正な方式とは
• 実時間性を高めすぎて、他の仮想機械が動かなくなる?!
• スケジューリングの本質的な問題である
• Linux,Windowsが時間を取りすぎて、RTOSが動か
ないのは、ナンセンス
– 公平なスケジューリングなんか糞食らえ!
80
本当の組込みの要件
• 実時間性– Linux,Windowsが時間を取りすぎて、RTOSが動かない
のは、ナンセンス
• 公平なスケジューリングなんか糞食らえ!
とは言え…
– LinuxやWindowsのデバイス・ドライバは仮想機械内で動いているので、それのサービスはさせないと…
• 全部、抽象IOにしてしまうか?
• 大型機, PCは、実時間性要請が低くていいなぁ(本当に)
81
本当の組込みの要件
• 実時間性
• 結局、情報系ゲストOSのユーザが、
デバイス・ドライバをどこで動かしたいかに、大きく依存
• 情報系のデバイス・ドライバはコンソールと、低速なファイルIOデバイスだけにして頂きたい…
82
本当の組込みの要件
• コケてもコケない– ハイリライアビリティ(高信頼性)
– ロバストネス(堅牢性)
– ディペンダビリティ(高可用性)
– ある仮想機械の影響は、絶対に他の仮想機械に影響してはいけない
• マイグレーション
– 仮想機械をまるごと引越し
• 他の実機械に
• 仮想機械がフォールトしたら、少し前の仮想機械イメージで再開
83
本当の組込みの要件
• コケてもコケない対策
• マイグレーション
– 仮想機械をまるごと引越し
• 他の実機械に
• 仮想機械がフォールトしたら、少し前の仮想機械イメージで再開
– 適当なタイミングで、スナップショットを取る
• コミット・ポイント
• PCクラスタでは、かなり有効– HPC計算機は、ときどき落ちる
84
本当の組込みの要件
• コケてもコケない
• マイグレーション
– 仮想機械アーキテクチャは、マイグレーションをやりやすい
– 性質がいい。健全
– ディペンダブルな(高可用性)組込みでは、仮想機械に
よるマイグレーションをするべきでしょう。
85
組込み仮想化のこれから
86
組込みのこれから• 実時間用のスケジューリング指定APIの標準化
– 実時間対応のパラメータとそれを設定するハイパバイザ・コール
• 割り込み処理方法の統一化(?)– 性能の低いCPUで、割り込み応答をする場合、どこでやるべきか?
• 特殊なゲストOS?
• ハイパバイザ?
• 割り込みルーチン⇔ゲストOS ⇔アプリケーション のインターフェースはどうするか?
– 特に、割り込み処理をハイパバイザの層でやった場合
• 今後、APIやフレームワークを決めて、プログラマが困らないようにしたい
87
JASA 仮想化WGへのお誘い• 非営利の社団法人組込み技術協会(JASA)
OSS活用委員会仮想化技術WG
• 大目標– プログラマは、一通りの決まりを覚えれば、どの基本ソフトウェアでも仕事ができる
– 基本ソフトウェア作成者、半導体企業も助かる
• 具体的目標(議論により変わるかも)– 組込み全般に共通の問題の洗い出し
– 標準のフレームワーク,APIなどを決める• 実時間用のスケジューリング指定APIの標準化
• 割り込み処理方法の統一化(?)– 性能の低いCPUで、割り込み応答をする場合、どこでやるべきか?
– 性能指標を考える
88
JASA仮想化技術WG 成果物案• 最大3年ぐらいで、JASA標準を作りたい
• ここで決めた仕組みをプログラマが一度覚えれば、ずっと仕事ができる
• プログラマが増えると、発注側も、基本ソフトウェア・メーカも、半導体メーカも助かる
– 割込み方式仕様書
– VM間通信仕様書
– ハードウェアへの要請を書く
– 教育的/啓蒙 文書• 効能がき
– デバッグ・ファシリティ
– 性能評価• 性能指標
• 何を測るか
89
参考文献など
• VM (OSシリーズ11)岡崎世雄/全先実著, 1981/AUG,共立出版,
ISBN4-320-02405-2
• Xenhttp://www.xen.org/
• KVMhttp://www.linux-kvm.org/page/Main_Page
• Kernel-based Virtual Machine (KVM) for Itanium Architecturehttp://www.ice.gelato.org/apr07/pres_pdf/gelato_ICE07apr_k
vm_yu_intel.pdf