1.14k likes | 1.44k Views
セッション ID: T2-401. Effective Hyper-V R2 SP1 詳説 Dynamic Memory. マイクロソフト株式会社 コンサルティングサービス 統括 本部 佐々木邦暢 (ksasaki@microsoft.com). セッションの目的 Hyper-V R2 SP1 の新機能である 「 Dynamic Memory 」の設計思想と動作原理を解説します Dynamic Memory の実運用上の留意点を 解説します セッションのゴール ハイパーバイザーのメモリ管理技法について、製品に依存しない普遍的な知識を身につける
E N D
セッション ID: T2-401 EffectiveHyper-VR2SP1詳説 Dynamic Memory マイクロソフト株式会社 コンサルティングサービス統括本部 佐々木邦暢 (ksasaki@microsoft.com)
セッションの目的 Hyper-V R2 SP1 の新機能である「Dynamic Memory」の設計思想と動作原理を解説します Dynamic Memory の実運用上の留意点を解説します セッションのゴール ハイパーバイザーのメモリ管理技法について、製品に依存しない普遍的な知識を身につける Dynamic Memory の仕組みとその特徴を説明できるようになる セッションの目的とゴール
ご注意 本セッションでは、 現在開発中の製品を取り扱っています。 仕様および機能は変更される可能性があります。
アジェンダ • イントロダクション • いまさら聞けない「仮想メモリ」 • ハイパーバイザーのメモリ管理効率化技法 • Dynamic Memory 登場!
ハイパーバイザーの仕事とは 物理的なリソースを抽象化(=仮想化)して複数の仮想マシンに効率よく配分 CPU ディスク メモリ NIC
CPUの仮想化 もし、CPUが仮想化されていなかったら VM1 VM2 VM3 ペアレントパーティション ハイパーバイザー ソケット 0 ソケット 1 コア 0 コア 1 コア 0 コア 1 これでは物理パーティショニング
そこでプロセッサの仮想化 論理プロセッサ (LP) 上で複数の仮想プロセッサ (VP) が実行されるという仕組み
CPU の仮想化 VM 2(2VP) VM 3(4VP) VM 1(2VP) ペアレントパーティション LP 0 LP 1 LP 2 LP 3 VP0 VP0 VP1 VP1 VP0 VP2 VP1 VP3 Root VP 0 Root VP 1 Root VP 2 Root VP 3 ハイパーバイザー ソケット 0 ソケット 1 コア 0 コア 1 コア 0 コア 1
CPU の仮想化 OK
ディスクの仮想化 もし、ディスクが仮想化されていなかったら VM1 VM2 VM3 ペアレントパーティション ディスク 0 ディスク 1 ディスク 2 ディスク 3 VM の台数分、ディスクが必要
Virtual Hard Diskという仕組みを導入 • ホストOS上の.vhdファイル • 仮想マシンからはディスクドライブに見える • 動的拡張 VHD • 「実際に使った分だけ、ディスクを消費する」 • 容積効率の良い方式
ディスクの仮想化 .vhdファイルで仮想的なディスクドライブ VM1 VM2 VM3 ペアレントパーティション .vhd .vhd .vhd 一台のディスクを複数のVMで共有
ディスクの仮想化 OK
ネットワークの仮想化 ネットワークが仮想化されていなかったら VM1 VM2 VM3 ペアレントパーティション NIC0 NIC1 NIC2 NIC3 NIC が何枚あっても足りない
そこで仮想ネットワーク • 仮想ネットワーク (= 仮想スイッチ) • ホストに「仮想スイッチ」を作成 • VM は「仮想スイッチ」を介して通信 • 複数の VM が一枚の物理 NIC を共有し、同時にネットワークにアクセスできる
ネットワークの仮想化 仮想スイッチで NIC を多重化 VM1 VM2 VM3 ペアレントパーティション 仮想スイッチ 一枚のNICを複数のVMで共有
ネットワークの仮想化 OK
Hyper-V のメモリ管理 ホストが管理するメモリを固定的に割り当てるのみ VM 1 VM 2 VM 3 ペアレント パーティション ホストの メモリを 固定的に 割り当て
固定的な割り当ては無駄が出る 空いているメモリを集めれば もっとたくさんVMを実行できるのでは VM 4 VM 1 VM 2 VM 3 回収済み VM 2 の 空きメモリ 回収済み VM 3 の空きメモリ 回収済み VM 1 の空きメモリ 使用中 使用中 使用中
そこで Dynamic Memory 不足したら ひかえめに起動 メモリを追加 余れば回収 DM VM DM VM DM VM DM VM 700 MB 550 MB 512 MB 512 MB 追加 回収 空き 空き 空き 空き 使用中 使用中 使用中 使用中 回収したメモリを他の VM に追加して有効活用
DEMO Dynamic Memory 基本動作
これってオーバー コミット? • 他のハイパーバイザーだと、「オーバーコミット」という言葉がよく出てきますが • Hyper-V の Dynamic Memory は? • オーバーコミットなの?
Dynamic Memory の特徴 Hyper-V の Dynamic Memory ゲスト OS から「利用可能」に見えるメモリは常に実際の物理メモリに対応している ゲスト OS から見た「実装メモリ量」が動的に変化する ESX や KVM のオーバーコミット ゲスト OS から「利用可能」に見えるメモリは必ずしも実際の物理メモリの裏付けがない ゲスト OS から見た「実装メモリ量」は 常に一定
There’s more than one way… オーバーコミットにはいろいろなやり方がある ページ共有 バルーニング ホストページング(ハイパーバイザー スワップ) Hot-Addメモリ
なぜこんなに色々な方式が? CPUやディスク、NIC の仮想化は、 どのハイパーバイザーも基本的には同じ方式 メモリだけは、リソースの効率的な利用方式がイロイロあるのはなぜ?
急がば回れで「仮想メモリ」 各種オーバーコミット方式の特質と得失をより良く理解するには OS の仮想メモリ機構に関する基礎知識が有用 去年は Live Migration の前に クラスターのおさらいをしましたが 今年は Dynamic Memory の前に、仮想メモリを再確認
メモリはすでに仮想化済 メモリやディスクという記憶域リソースを仮想化し個々のプロセスに専用のアドレス空間を割り当てる プロセス A プロセス B プロセス C プロセス D 仮想メモリ 仮想メモリ 仮想メモリ 仮想メモリ メモリ マネージャー (MM) 物理メモリ ページ ファイル pagefile.sys
プロセスの仮想アドレス空間 ポイントは「自分専用のメモリ空間が持てる」こと x86: プロセス毎に4GB x 64: プロセス毎に 16TB! FFFF FFFF (32 ビット) FFFF FFFF FFFF FFFF (64 ビット) カーネル空間 (上位 2 GB) カーネル空間 (上位 8 TB) それはそれは広大な未使用空間 ユーザー空間 (下位 2 GB) ユーザー空間 (下位 8 TB) 0 0