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