• 検索結果がありません。

Xen 3.0 のすべて 内部実装詳解 VA Linux Systems Japan K.K. 山幡為佐久 Linux Kernel Conference

N/A
N/A
Protected

Academic year: 2021

シェア "Xen 3.0 のすべて 内部実装詳解 VA Linux Systems Japan K.K. 山幡為佐久 Linux Kernel Conference"

Copied!
53
0
0

読み込み中.... (全文を見る)

全文

(1)

Xen 3.0のすべて

内部実装詳解

VA Linux Systems Japan K.K.

山幡 為佐久

<

[email protected]

>

 Linux Kernel Conference 2005.11.11

(2)

目次

イントロダクション

Xen概要

ドメイン管理

時間管理と

CPUスケジューラ

割り込み

/例外処理の仮想化

I/O デバイス仮想化

MMU仮想化

完全仮想化

今後の展望

(3)
(4)

仮想化とは

マシン上で複数の

Virtual Machineを動作させ

る技術。

VM上でOSを動作させる

古くは

1960年代IBMメインフレームの頃に遡

VM OS VM OS VM OS HW アプリ アプリ アプリ

(5)

仮想化手法の分類

完全仮想化

(full virtualization)

マシンを完全にエミュレートする

オーバーヘッド大

OSがそのまま動作

● 実際はx86アーキテクチャ上完全な仮想化は難しくバ イナリパッチをあてるなどする –

) bochs, qemu, vmware, virtualpc

準仮想化

(para virtualization)

仮想化された環境を提供

ゲスト

OSに修正が必要

● ゲストOSのソースコードが必要 ● アプリケーションは修正不要 –

) Xen, User Mode Linux(UML)

(6)

Xen3.0新機能

SMP対応

ゲスト

OS SMP化

64bit対応(x86_64)

完全仮想化

VT­x(Virtualization Technology for IA32)

管理ツール、デバイスドライバ用フレームワ

ーク

XenBus

XenStore

(7)

Xen概要

(8)

ドメイン

XenではVMをドメインと呼ぶ

特権あり、特権なし

Domain0

特権あり

起動時に必ず起動

管理ツールが動作

実デバイスの制御

DomainU

ユーザが必要に応じて作成

/破壊

Xen仮想デバイスを使用

(9)

HW Xen Domain0

Xen Linux Xen LinuxDomainU

DomainU

Xen NetBSD Xen Plan9DomainU ... 管理 ツール Xen環境向けに 修正された ゲストOSが動作する

準仮想化

(para­virtualization)

アプリ アプリ アプリ アプリケーションは 修正不要

(10)

準仮想化

(para­virtualization)(cont.)

デバイスドライバモデル

HW Xen Linux デバイス ドライバ バックエンド ドライバ Domain0 フロント エンド ドライバ DomainU フロント エンド ドライバ DomainU

(11)

特権レベル

level1 level2 level3 OS level0 アプリ level1 level2 level3 Xen level0 アプリ ゲストOS 通常OSは特権レベル0で動作 Xenが特権レベル0で動作 OSは特権レベル1で動作 ゲストOSからXenを保護は セグメント機能を使用 Xen化 hypercall

(12)

マシンアドレス

ゲスト

OSはXenが管理する仮想アドレス空間

上で動作する。

XenはゲストOSが物理アドレス上で動作して

いる幻想を与える

ゲスト

OSが実際に扱うのは疑似物理アドレス

Xenが管理している本当の物理アドレスをマ

シンアドレスと呼び区別する。

Xen ゲストOS machine address (pseudo) physical address OS HW physical address HW アプリ virtual address アプリ virtual address

(13)

空間レイアウト

Xenは仮想アドレスの高位64MBを使用する

(32bitの場合)

ゲスト

OSは上位64MBを使用しないように修正

される

マシンアドレス

­>物理アドレス変換テーブル

を持ち

Xenはread­writeでアクセスでき,ゲスト

OSはread­onlyでアクセスできるようマップ

する

machine­to­physical translation table

高位

16MB – 4MB =12MBをストレートマップ

高位

4MBはI/O用に予約

(14)

0x00000000 IOR EMA P_V IR T_EN D =0xf ff ff ff f H Y PER V ISO R _STA R T R O_ M PT_VIR T_ST A R T FR AM E T AB L E _VIR T _STA R T R D WR _MPT_V IR T_ STA R T LI N EA R _PT_V IRT_TA B LE SH _LI N EA R _PT_V IR T_STA RT PER D O MA IN _V IRT_STA R T MA P_C A C H E_V IR T_STA R T DIR E C TMA P_ V IR T_ STAR T IO R EMA P_V IR T_STA R T Xenが使用 ゲストOSが使用 スト レ ート マ ップ 領域 X en のtext , d at aがおかれる m ap  d om ain pag e c ach e pe rdo m ai n m app ing shadow  li near  paget abl e guest  li near  paget abl e rdw r m achi ne­ to­ physi cal  tr ansl at ion t abl e fr am e i nf o t able ro m achi ne­ to­ physi ca l t ransl at ion t abl e 64MB I/ O  re m appi ng a rea

(15)

GDT/LDTの仮想化

(セグメンテーションの仮想化)

perdomain領域にvcpu毎GDT,LDT領域を確保

GDTの後部をxenが使用

ゲスト

OSはhypercallを使用して書き換える

PER D O MA IN _V IR T_STA R T PER D O MA IN _V IR T_EN D GDT LDT G D T_V IR T_STA R T( ed) LD T _V IR T _STA R T( ed) Xenが使用 ... ...

(16)

high low スタック struct cpu_info struct vcpu struct domain vcpu[] shared_info_t vcpu_data[] shared_info このページはゲストOSがアクセス可能なアドレスにmapする ドメインに対応 ハッシュテーブルに繋がれる 各ドメインの仮想CPUに対応

ドメイン管理

(17)
(18)

Xenのタイマ処理と

ソフトウェア割り込みと時間管理

Xenのタイマ割り込み処理は

AC_TIMER_SOFTIRQソフトウェア割り込み

をあげるのみ

タイマソフトウェア割り込みで実際の処理

ゲスト

OSは実タイマ割り込みを全て受け取

れるわけではない

ゲスト

OSでのタイマティックのカウントが難し

ゲスト

OSがアクセスできるshared_info_tに時

刻情報を含める。

ゲスト

OSはshared_info_tを読み取って時刻を知る

(19)

タイマ割り込み タイマ割り込み ハンドラ AC_TIMER_SOFTIRQハンドラ SCHEDULE_SOFTIRQハンドラ t_timer 時刻更新 VIRQ_TIMER 通知 ゲストOS schedule_data[].s_timer ソフトウェア割り込みをあげる timer タイマ xen domain shared_info_t システム時刻 wall clock 更新タイムスタンプ 時刻更新 ソフトウェア割り込み をあげる スケジューリング

(20)

CPUスケジューラ

SEDFとBVTの二つのスケジューラが提供さ

れている。

Xen起動時に選択可能

SEDFがデフォルト

スケジューリングする単位は

vcpu構造体

SEDF: Simple Early Deadline First scheduler

BVT: Borrowed Virtual Timer scheduler

どちらも良く知られたリアルタイムスケジュ

ーリングを実装したもの

ゲスト

OSがCPUを手放すのはゲストOSのidle時

のみと考えられる

(21)

SEDFスケジューラ

それぞれの

vcpuに一定期間(period)とその期

間内に使用可能な

cpu時間(slice)が与えられ

る。

vcpuへの重み付け(weight)に比例してsliceを決

デッドラインが一番短いものに

cpuが与えら

れる

period slice period period内にsliceだけ実行できる デッドライン deadl_abs

(22)

SEDFスケジューラ(cont.)

extraキュー

idle時に実行するvcpuを優先度順に繋ぐ

penalty: 使用しなかったCPU時間

CPU時間を使いきらずにCPUを手放した時の残

り時間

utilization: extraweight(ユーザが設定)で決定

extraweightが低いものを優先する

period slice period penalty cpuを手放す 使用可能だったが使わなかった時間

(23)

struct schedule_data[] struct sedf_cpu_info sched_priv runnableq waitq extraq[EXTRA_PEN_Q] extraq[EXTRA_UTIL_Q] 実行可能キュー 待ちキュー penaltyキュー utilizationキュー 実行可能キューにvcpuが無ければextraqにあるものを実行する idle

(24)
(25)

callback

XenからゲストOS

への呼び出し

ゲスト

OS上のス

タックへ待避レジ

スタを積み、実行

ポインタを事前に

登録されたアドレ

スにしてゲスト

OS

へ制御を移す

ゲスト

OSが処理す

べき割り込み/例

外処理と

event 

channel(後述)配送に

使用

Xen level0 ゲストOS hypercall callback level1

(26)

割り込み

/例外の仮想化

必要があれば

XenはゲストOSに割り込み/例

外を通知する

実割り込み

/仮想割り込み

event channelを通じてゲストOSに通知

例外処理

ゲスト

OSが登録したハンドラをcallbackする

システムコール

Xenが介入せずにゲストOSが直接呼び出される

ように

IDTを設定する。

(27)

hw xen ゲストOS IRQ 割り込み pirq_to_evtchn[]で irq=>event変換 Virtual IRQ virq_to_evtchn[]で virtual irq=>event変換 例外 例外ハンドラ vcpu_guest_context   trap_ctxt[].vector で例外番号を変換 event channel コールバック event channelコールバック 例外処理 コールバック

割り込み

/例外の仮想化(cont.)

(28)
(29)

event channel

Xen­domain/domain­domain間のevent通知機構

ゲスト

OSはポート番号でeventを区別

event発生源からポート番号の対応付けによ

り状態が分かれる

shared_info_t構造体pending/maskメンバ

イベントの

pending/mask状況

pending: xenからゲストOSへeventがあることを知

らせる

mask: ゲストOSがイベントの配送をmaskするこ

とを

xenに知らせる

(30)

shared_info_t pending[] mask[] domain xen 1. event発生     pendingにビットを立てる     maskを見てmaskされていなければ     callbackする 2. mask解除時pendingを見て     pendingされているeventが あるとevent配送依頼hypercall     (pendingもクリアする) 3.callbackしてeventを配送する ポート番号でイベントを区別 hypercall 4.イベント配送

event channel

(31)

grant table

非特権ドメインが別のドメインのページにア

クセスすることを許す機構

特権

domainはどのドメインのページにもアクセ

スできる

アクセスさせるだけでなく、ページを渡すこ

ともできる

(ページ所有権の移動)

主にデバイスドライバ間でデータをやり取り

する為に使用

(32)

page Xen ゲストOS ゲストOS active_grant_entry_t[] grant_mapping_t[] grant_entry_t[] domain shared active maptrack page ページをマップ domain間でデータ を共有 マップしている 情報を追跡 実際に他domainから マップされているエントリ domainが許可 している エントリ domainが 直接書き換える domain

(33)

Device Channel (I/O ring)

Device Channel(I/O ring)

ゲスト

OSのフロントエンドドライバ/バックエン

ドドライバでのデータをやり取りする機構

domain間でページを共有

● フロントエンド/バックエンド ドライバ間のインター フェース ● xenからは共有したページの使用方法には関知しない –

ドライバはリング上で情報をやり取りする

memory reservation

ドメインが

xenにページを返したり、ページを確

保したりする

balloon driverが使用

ドメインの使用メモリ量を調整

(34)
(35)

MMU仮想化

保護の為にゲスト

OSのMMUの設定が妥当な

ものか調べる必要がある

Xenは多様なMMU仮想化をサポート

direct mode, writable page table mode, shadow mode

XenはページをゲストOSの使用目的別にタイ

プに分けて追跡する

page table(PML4, PDP, PD, PT), gdt, ldt, writable(通

常のページ

), その他

タイプは排他的

writable以外はドメインは原則としてread only

でしかアクセスできない

(36)

direct mode

ドメイン内のページテーブルを直接使用

ページテーブルは

read onlyでマップしゲスト

OSは直接書き換えられない

hypercallを利用して変更する

ゲスト

OSは(pseudo)物理アドレスとマシンア

ドレスの変換をする

ページテーブルにはマシンアドレスが入る

(37)

domain xen

(38)

writable page table mode

direct modeを拡張したもの

ゲスト

OSは(pseudo)物理アドレスとマシンア

ドレスを意識する

ゲスト

OSがページテーブル(PTのみ)へ書き

込むことを許可する

(39)

domain xen CR3 1.write 0.page tableはread onlyでマップされている 2.ページフォルトが起きXenに制御が移る read only

(40)

domain xen CR3 3. page tableをread writeでマップしなおす 4. page tableを指しているPDエントリを無効化 5. ゲストOSに処理を戻し、writeが行われる read write

(41)

domain xen CR3 6.page tableがマップしている(とゲストOSが思っている) アドレスにアクセス 7. ページフォルトが起きXenに制御が移る 8. 書き換えられたページテーブルを調べ、 妥当な値であることをチェックする 9. ページテーブルをread onlyに戻し、 無効化したエントリを元に戻す 10.ゲストOSに制御を戻す read only

(42)

shadow mode

ページテーブルは

Xenのもの(shadow page 

table)を使用する

ゲスト

OSは(virtual) page tableを直接書き変える

XenはゲストOSが設定したエントリを必要に

応じ

shadow page tableを設定する

マップしている

pageをnon­present or read­only

にマップすることにより

access bit, dirty bitを

立てる

(43)

shadow mode (cont.)

domain xen CR3 shadow shadow page table 1.ゲストOSは(ゲスト用)ページテーブルを 直接書き換え 0.実はxenが本当の アドレス変換を管理 2.必要に応じXenは guest page tableから shadow page tableを更新 3.access/dirty bitは便宜xenが反映する (guest) page table

(44)

shadow mode(cont.)

shadow modeにもいろいろモードがある

refcounts: ページを参照カウンタで追跡

write all: 全てのゲストページテーブルへの

writeを許す(pteの許可属性に関わらず)

log dirty: ダーティーページを記録

live migrationに使用

translate: xenが(pseudo)物理アドレス­>マシン

アドレスの変換を行う

external: 完全仮想化で使用

(45)

shadow mode(cont.)

promote

writable(通常ページ) ­> page tableへの変換

ゲスト

OSがあるページを新たに(ゲスト)ページ

テーブルにする時に全てのシャドウページテー

ブルを調べて

read­writeでマップしているものが

あれば

read­onlyにマップしなおす

demote

promoteの逆

ゲストページテーブルの追跡に使用した資源を

解放する

(46)

read only domain xen CR3 shadow 0. (ゲスト)ページテーブルはread­onlyでマップされる 1. write 2. ページフォルトし制御がXenに移る 3. (ゲスト)ページテーブルをread/writeでマップしなおす 4. 制御をゲストOSへ戻し、     writeされる 着目している ページテーブル

(47)

read­write domain xen CR3 shadow 5.ゲストOSはTLBをフラッシュする   (hypercall or 特権命令を使用) 6. hypercallあるいは特権違反で 制御がXenに移る 8. 制御をゲストOSへ戻す 7. 書き込み可能にしていた   (ゲスト)ページテーブルを調べ     shadowページテーブルを更新する

(48)
(49)

level1 level2 level3 OS level0 アプリ level1 level2 level3 Xen level0 アプリ ゲストOS VMX non­root operation VMX root operation VM enter VM exit

VT­x(Virtualization Technology for IA32)

1.特権命令,I/O命令などをintercept 2.Xenが命令をemulate 3.emulate後ゲストOSに 処理を戻す

(50)

Xen domain0 io emulator 3. event  channel I/O要求が あったこと を通知 ゲストOS 0. I/Oを発行     (pio or mmio) 1.VM exit shared_io_page io emulationに 使用するページ 共有される 2. 命令を解析して     io_reqst_tに変換 4. 処理が完了したら 完了フラグを立て eventを送信して 完了通知

I/O emulation

(51)

今後の展望

一層の安定化

デバッグ支援ツール

性能測定ツール

テストツール

他アーキテクチャへの対応

IA64

PPC

完全仮想化

Pacifica対応

デバイスエミュレーション

xenfs: ファイルシステムの仮想化

(52)

今後の展望

(cont.)

リソースコントロール

NUMA

ホットプラグ

仮想デバイス

使いやすい仮想デバイス

(53)

ご静聴ありがとうございました

オープンソースマガジン

Xen実装解説連載予定

参照

関連したドキュメント

デスクトップまたはスタートボタンの“プログラム”に 標準宅地鑑定評価システム 2023 のショートカ

本資料は Linux サーバー OS 向けプログラム「 ESET Server Security for Linux V8.1 」の機能を紹介した資料です。.. ・ESET File Security

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

F rom the point of view of analysis of turbulent kineti energy models the result.. presented in this paper an be onsidered as a natural ontinuation of

○事 業 名 海と日本プロジェクト Sea級グルメスタジアム in 石川 ○実施日程・場所 令和元年 7月26日(金) 能登高校(石川県能登町) ○主 催

ESMPRO/ServerAgent for GuestOS Ver1.3(Windows/Linux) 1 ライセンス Windows / Linux のゲスト OS 上で動作するゲスト OS 監視 Agent ソフトウェア製品. UL1657-302

 吹付け石綿 (レベル1) 、断熱材等 (レベル2) が使用されて

である水産動植物の種類の特定によってなされる︒但し︑第五種共同漁業を内容とする共同漁業権については水産動