teched2010_t2-401_effectivehyper-v

114
マママママママママママ ママママママママママママママママ マママママ (twitter: @ksasakims) Effective Hyper-V R2 SP1 ママ Dynamic Memory セセセセセ ID: T2-401

Upload: kuninobu-sasaki

Post on 30-Jun-2015

1.210 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: TechEd2010_T2-401_EffectiveHyper-V

マイクロソフト株式会社コンサルティングサービス統括本部佐々木邦暢 (twitter: @ksasakims)

Effective Hyper-V R2 SP1詳説 Dynamic Memory

セッション ID: T2-401

Page 2: TechEd2010_T2-401_EffectiveHyper-V

2

セッションの目的とゴールセッションの目的

Hyper-V R2 SP1 の新機能である「 Dynamic Memory 」の設計思想と動作原理を解説しますDynamic Memory の実運用上の留意点を解説します

セッションのゴールハイパーバイザーのメモリ管理技法について、製品に依存しない普遍的な知識を身につけるDynamic Memory の仕組みとその特徴を説明できるようになる

Page 3: TechEd2010_T2-401_EffectiveHyper-V

3

ご注意

本セッションでは、現在開発中の製品を取り扱っています。

仕様および機能は変更される可能性があります。

Page 4: TechEd2010_T2-401_EffectiveHyper-V

4

アジェンダ

イントロダクション

いまさら聞けない「仮想メモリ」

ハイパーバイザーのメモリ管理効率化技法

Dynamic Memory 登場!

Page 5: TechEd2010_T2-401_EffectiveHyper-V

5

本日のテーマ

Page 6: TechEd2010_T2-401_EffectiveHyper-V

6

Hyper-V R2 SP1 の新機能

Page 7: TechEd2010_T2-401_EffectiveHyper-V

7

DynamicMemory

Page 8: TechEd2010_T2-401_EffectiveHyper-V

8

動的記憶

Page 9: TechEd2010_T2-401_EffectiveHyper-V

9

なぜ必要?

Page 10: TechEd2010_T2-401_EffectiveHyper-V

10

どんな仕組み?

Page 11: TechEd2010_T2-401_EffectiveHyper-V

11

どう使う?

Page 12: TechEd2010_T2-401_EffectiveHyper-V

12

詳しく解説

Page 13: TechEd2010_T2-401_EffectiveHyper-V

13

最後のセッション

Page 14: TechEd2010_T2-401_EffectiveHyper-V

14

#T2_401開始なう

Page 15: TechEd2010_T2-401_EffectiveHyper-V

ハイパーバイザーの仕事とは

Page 16: TechEd2010_T2-401_EffectiveHyper-V

16

そもそも

Page 17: TechEd2010_T2-401_EffectiveHyper-V

17

ハイパーバイザーの仕事とは

物理的なリソースを抽象化 (= 仮想化 ) して複数の仮想マシンに効率よく配分

CPU ディスク メモリ NIC

Page 18: TechEd2010_T2-401_EffectiveHyper-V

18

Hyper-V の仕事を振り返ってみると

Page 19: TechEd2010_T2-401_EffectiveHyper-V

19

CPU の仮想化

VM 3VM 1 VM 2

ハイパーバイザー

ソケット 0 ソケット 1

コア 1コア 1コア 0 コア 0

ペアレントパーティション

これでは物理パーティショニング

もし、 CPU が仮想化されていなかったら

Page 20: TechEd2010_T2-401_EffectiveHyper-V

20

そこでプロセッサの仮想化

論理プロセッサ (LP) 上で複数の仮想プロセッサ (VP) が

実行されるという仕組み

Page 21: TechEd2010_T2-401_EffectiveHyper-V

21

LP 3LP 1LP 0 LP 2

CPU の仮想化

ソケット 0 ソケット 1

コア 1コア 1コア 0 コア 0

VM 1(2 VP)

VM 3(4 VP)

VM 2(2 VP)

ペアレントパーティション

VP 1 VP 3

Root VP 3

VP 1 VP 1

Root VP 1Root VP 0

VP 0 VP 0

Root VP 2

VP 0 VP 2

ハイパーバイザー

Page 22: TechEd2010_T2-401_EffectiveHyper-V

22

CPU の仮想化

OK

Page 23: TechEd2010_T2-401_EffectiveHyper-V

23

ディスク の仮想化

VM 3VM 1 VM 2ペアレントパーティション

もし、ディスク が仮想化されていなかったら

ディスク 3ディスク 1ディスク 0 ディスク 2

VM の台数分、ディスクが必要

Page 24: TechEd2010_T2-401_EffectiveHyper-V

24

Virtual Hard Diskという仕組みを導入

ホスト OS 上の .vhd ファイル仮想マシンからはディスクドライブに見える

動的拡張 VHD「実際に使った分だけ、ディスクを消費する」容積効率の良い方式

Page 25: TechEd2010_T2-401_EffectiveHyper-V

25

ディスクの仮想化

VM 3VM 1 VM 2ペアレントパーティション

.vhd ファイルで仮想的なディスクドライブ

.vhd

.vhd

.vhd

一台のディスクを複数の VM で共有

Page 26: TechEd2010_T2-401_EffectiveHyper-V

26

ディスクの仮想化

OK

Page 27: TechEd2010_T2-401_EffectiveHyper-V

27

ネットワークの仮想化

VM 3VM 1 VM 2ペアレントパーティション

ネットワークが仮想化されていなかったら

NIC 3NIC 1NIC 0 NIC 2

NIC が何枚あっても足りない

Page 28: TechEd2010_T2-401_EffectiveHyper-V

28

そこで仮想ネットワーク

仮想ネットワーク (= 仮想スイッチ )ホストに「仮想スイッチ」を作成VM は「仮想スイッチ」を介して通信複数の VM が一枚の物理 NIC を共有し、同時にネットワークにアクセスできる

Page 29: TechEd2010_T2-401_EffectiveHyper-V

29

ネットワークの仮想化

VM 3VM 1 VM 2ペアレントパーティション

仮想スイッチで NIC を多重化

仮想スイッチ

一枚の NIC を複数の VM で共有

Page 30: TechEd2010_T2-401_EffectiveHyper-V

30

ネットワークの仮想化

OK

Page 31: TechEd2010_T2-401_EffectiveHyper-V

31

メモリは?

Page 32: TechEd2010_T2-401_EffectiveHyper-V

32

ペアレントパーティション

VM 3VM 2VM 1

Hyper-V のメモリ管理

メモリを

固定的に

割り当て

ホストの

ホストが管理するメモリを固定的に割り当てるのみ

Page 33: TechEd2010_T2-401_EffectiveHyper-V

33

わりと工夫がない

Page 34: TechEd2010_T2-401_EffectiveHyper-V

34

VM 3VM 2VM 1

固定的な割り当ては無駄が出る空いているメモリを集めれば

もっとたくさん VM を実行できるのでは

使用中 使用中

回収済み 回収済み

使用中

回収済み

VM 4

VM 3 の空きメモリ

VM 2 の空きメモリVM 1 の

空きメモリ

Page 35: TechEd2010_T2-401_EffectiveHyper-V

35

メモリの効率的な

管理が急務

Page 36: TechEd2010_T2-401_EffectiveHyper-V

36

余れば回収

DM VM

使用中

550 MB

空き

そこで Dynamic Memory

回収したメモリを他の VM に追加して有効活用

不足したら

DM VM

空き

512 MB

使用中

ひかえめに起動

DM VM

空き

512 MB

使用中

回収

メモリを追加

DM VM

使用中

700 MB

空き

追加

Page 37: TechEd2010_T2-401_EffectiveHyper-V

Dynamic Memory 基本動作

DEMO

Page 38: TechEd2010_T2-401_EffectiveHyper-V

38

これって オーバー コミット?

他のハイパーバイザーだと、「オーバーコミット」という言葉がよく出てきますがHyper-V の Dynamic Memory は?

オーバーコミットなの?

Page 39: TechEd2010_T2-401_EffectiveHyper-V

39

おおむねYES

Page 40: TechEd2010_T2-401_EffectiveHyper-V

40

でも少し違うところもある

Page 41: TechEd2010_T2-401_EffectiveHyper-V

41

Dynamic Memory の特徴Hyper-V の Dynamic Memory

ゲスト OS から見た「実装メモリ量」が

動的に変化する

ゲスト OS から見た「実装メモリ量」は

常に一定

ゲスト OS から「利用可能」に見えるメモリは常に実際の

物理メモリに対応している

ゲスト OS から「利用可能」に見える

メモリは必ずしも実際の物理メモリの裏付けがない

ESX や KVM のオーバーコミット

Page 42: TechEd2010_T2-401_EffectiveHyper-V

42

この違い どこから?

Page 43: TechEd2010_T2-401_EffectiveHyper-V

43

There’s more than one way…

オーバーコミットにはいろいろなやり方がある

ページ共有 バルーニング

ホスト ページング( ハイパーバイザー スワッ

プ )Hot-Add メモリ

Page 44: TechEd2010_T2-401_EffectiveHyper-V

44

なぜこんなに 色々な方式が?

CPU やディスク、 NIC の仮想化は、どのハイパーバイザーも基本的には同じ方

メモリだけは、リソースの効率的な利用方式がイロイロあるのはなぜ?

Page 45: TechEd2010_T2-401_EffectiveHyper-V

45

それを理解するには

Page 46: TechEd2010_T2-401_EffectiveHyper-V

46

急がば回れで「仮想メモリ」

今年は Dynamic Memory の前に、仮想メモリを再確認

各種オーバーコミット方式の特質と得失をより良く理解するには OS の

仮想メモリ機構に関する基礎知識が有用

去年は Live Migration の前にクラスターのおさらいをしましたが

Page 47: TechEd2010_T2-401_EffectiveHyper-V

いまさら聞けない「仮想メモリ」

Page 48: TechEd2010_T2-401_EffectiveHyper-V

48

仮想メモリ

プロセス B

メモリはすでに仮想化済

物理メモリ ページ ファイル

仮想メモリ

プロセス A

仮想メモリ

プロセス D

仮想メモリ

プロセス C

メモリやディスクという記憶域リソースを仮想化し個々のプロセスに専用のアドレス空間を割り当てる

メモリ マネージャー (MM)

pagefile.sys

Page 49: TechEd2010_T2-401_EffectiveHyper-V

49

プロセスの仮想アドレス空間

ユーザー空間(下位 8 TB)

ユーザー空間(下位 2 GB)

カーネル空間( 上位 2 GB)

x86: プロセス毎に 4 GB

0

FFFF FFFF(32 ビット )

0

ポイントは「自分専用のメモリ空間が持てる」こと

x 64: プロセス毎に 16 TB!

それはそれは広大な未使用空間

カーネル空間( 上位 8 TB)

FFFF FFFF FFFF FFFF(64 ビット )

Page 50: TechEd2010_T2-401_EffectiveHyper-V

50

例えば、エクスプローラー

ほぼ 8 TB がフリー!

Page 51: TechEd2010_T2-401_EffectiveHyper-V

51

でもそんなにメモリ

積んでない

Page 52: TechEd2010_T2-401_EffectiveHyper-V

52

物理アドレス

空間

仮想アドレス空間

プロセス A

仮想ページと物理フレーム

フレームフレームフレームフレームフレーム

メモリの割当・解放の単位 従来は 4 KB が主流

物理メモリの管理単位

ページ

1 バイト毎に割当

仮想アドレス

フレーム ( ページ フレーム )

x86: 2 MB / 4 MB x64: 2 MB

ラージ ページ (large page)

ページページ

ページページ

ページページページページページページ

Page 53: TechEd2010_T2-401_EffectiveHyper-V

53

仮想アドレス空間

デマンド ページング

物理アドレス

空間

空き

空きA

B

A

B

プロセス A

空き空き空き空き空き

仮想アドレス空間

空き空き

プロセス B

空き空き空き空き空き空き

要求に応じて必要な分だけを割り当てる

空き

空きコミット

コミット

空きコミット

コミット

Page 54: TechEd2010_T2-401_EffectiveHyper-V

54

仮想アドレス空間

ページの共有

物理アドレス

空間

ページページ

ページページ フレーム

フレームフレームフレーム

プロセス A

フレームページページページページページページ

仮想アドレス空間

ページページ

ページページ

プロセス B

ページページページページページページ

shared.dll shared.dll

shared.dll

同じフレームを複数のプロセス間で共有することでメモリを有効利用

Page 55: TechEd2010_T2-401_EffectiveHyper-V

55

仮想アドレス空間

ページ アウトとページ イン

物理アドレス

空間

空き割当要求

コミットコミット A

B

A

B

プロセス A

A空きコミット

空き空き空き空き

仮想アドレス空間

空き空き

プロセス B

空き

空き空き空き空き

空きがなければディスクに退避

ページ ファイル

ページイン ページアウト

空いて ない!

空いて ない!

コミット

コミット

割当要求

Page 56: TechEd2010_T2-401_EffectiveHyper-V

56

仮想アドレス空間

スラッシング

物理アドレス

空間

割当要求割当要求

コミットコミット フレーム

フレームフレームフレーム

プロセス A

フレーム空きコミット割当要求

空き割当要求

空き

仮想アドレス空間

割当要求コミット

コミット

プロセス B

割当要求

割当要求

空き

ページングにかかりっきり!

ページ ファイル

空いて ない!

空いて ない!

空いて ない!

空いて ない!

空いて ない!

空いて ない!

空いて ない!

空き

空き

空き

空き

Page 57: TechEd2010_T2-401_EffectiveHyper-V

57

ゲスト OS

仮想環境ではもう一段

物理マシン

仮想マシン

ゲスト物理アドレス (GPA)

システム物理アドレス (SPA)

ハイパーバイザー シャドウ ページ テーブル (SPT)

ページ テーブル

プロセスゲスト仮想アドレス (GVA)

プロセスゲスト仮想アドレス (GVA)

シャドウ ページ テーブルは二段アドレス変換を統合し、GVA を直接 SPA に変換する

SPT を更新し続けることは軽い処理ではなく、仮想化のオーバーヘッドの主要部分

SLAT 機能を持つプロセッサでは、この処理をハードウェアで行える

二段アドレス変換 : GVA → GPA → SPA

Page 58: TechEd2010_T2-401_EffectiveHyper-V

58

仮想記憶のおさらい終了

Page 59: TechEd2010_T2-401_EffectiveHyper-V

ハイパーバイザーのメモリ管理効率化技法

Page 60: TechEd2010_T2-401_EffectiveHyper-V

60

オーバーコミットの技法 (再掲 )

いくつかの技術の組み合わせで実現されています

ページ共有 バルーニング

ホスト ページング

( ハイパーバイザー スワップ )

Hot-Add メモリ

Page 61: TechEd2010_T2-401_EffectiveHyper-V

61

ページ共有

ページを定期的にスキャンしてハッシュ値を計算

ハッシュ値が一致した場合、ページ内容をビット単位で改めて比較して、同一性を判定

仮想マシン間で内容が同じページを共有

Page 62: TechEd2010_T2-401_EffectiveHyper-V

62

バルーニング

「バルーン ドライバー」が確保したメモリを他の VM に「横流し」することで有効活用

VM 1

使用中

空き

確保

確保

VM 2

使用中

空き増強増強

VM 1 から回収したメモリ

回収

回収

Page 63: TechEd2010_T2-401_EffectiveHyper-V

63

ゲスト OS

ホスト ページング

物理マシン

仮想マシン ゲスト物理メモリ

ハイパーバイザー ここでもページング ( ホスト ページング )

デマンド ページング方式による仮想記憶をハイパーバイザー レベルで実装したもの

ゲスト仮想アドレス (GVA)

通常のページング二段階の

ページングページ ファイル

実際の物理メモリ ページ ファイル

Page 64: TechEd2010_T2-401_EffectiveHyper-V

64

あえて星取り表を作ってみます

Hyper-V

VMware ESX

Xen KVM

ページ共有

バルーニング

ホスト ページング

Hot-Add

Page 65: TechEd2010_T2-401_EffectiveHyper-V

65

Hyper-V は が少ないじゃないか

Page 66: TechEd2010_T2-401_EffectiveHyper-V

66

Hyper-V のオーバーコミット

ページ共有もホスト ページングもしません

ページ共有 バルーニング

ホスト ページング

( ハイパーバイザー スワップ )

Hot-Add メモリ

Page 67: TechEd2010_T2-401_EffectiveHyper-V

67

ページ共有の概念図

VM のメモリ ホストの物理メモリ

ページページ

ページページ フレーム

フレームフレームフレーム

VM 1

フレームページページページページページページ

VM のメモリ

ページページ

ページページ

VM 2

ページページページページページページ

共通部分 共通部分

ページ共有!

全 VM のメモリを歩き回って「同じページ」を探す

Page 68: TechEd2010_T2-401_EffectiveHyper-V

68

同じ内容のページでも

VM のメモリ ホストの物理メモリ

ページページ

ページページ フレーム

フレームフレームフレーム

VM 1

フレームページページページページページページ

VM のメモリ

ページページ

ページページ

VM 2

ページページページページページページ

VM2 と同じ内容 共通部分

VM 1 のメモリ

VM1 と同じ内容

フレームフレームフレーム

フレーム

VM 2 のメモリ

即座に共有されるわけではない

共通部分が「発見」されるまでは共有できない

Page 69: TechEd2010_T2-401_EffectiveHyper-V

69

一旦ページが共有されても

例えば、片方の VM が再起動したら?

あるいは、片方だけメモリの内容が変わったら?

どうなるでしょう?

Page 70: TechEd2010_T2-401_EffectiveHyper-V

70

ページ共有の解除

VM のメモリ ホストの物理メモリ

ページページ

ページページ フレーム

フレームフレームフレーム

VM 1

フレームページページページページページページ

VM のメモリ

ページページ

ページページ

VM 2

ページページページページページページ

共通だった部分 共通部分

VM 1 のメモリ

内容変わった!

フレームフレームフレーム

フレーム

VM 2 のメモリ

共有解除

コピーが必要

Page 71: TechEd2010_T2-401_EffectiveHyper-V

71

ページ共有について

ラージ ページは共有しづらい!

2 MB のページ

4 KB のページ

2,097,152 / 4,096 = 512

4

1 ページの大きさが 512 倍

Page 72: TechEd2010_T2-401_EffectiveHyper-V

72

ページ共有について

“hardware-assisted memory virtualization systems, ESX will automatically back guest physical pages with large host physical pages “

「 SLAT 機構を持つハードウェア上では、 ESX は自動的にゲスト物理ページをホストのラージ ページに格納します」

In such systems, ESX will not share those large pages because:1) the probability of finding two large pages having identical contents is low, and 2) the overhead of doing a bit-by-bit comparison for a 2 MB page is much larger than for a 4 KB page.

ESX はこれらラージ ページを共有しないでしょう。なぜなら、二つのラージページの内容がぴったり一致する可能性は低いし、 2 MB ページの全ビットを比較するオーバーヘッドが大きいから

VMware さんのドキュメントより

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

Page 73: TechEd2010_T2-401_EffectiveHyper-V

73

ページ共有について

Windows Vista, Windows 7 はラージ ページを利用しますWindows Server 2008 / 2008 R2 もラージ ページを利用しま

すHyper-V R2 自身も、ラージページを使用します

Windows とラージ ページ

ラージ ページが一般化すると現在行われているようなページ共有は有用性が低下するということです

Page 74: TechEd2010_T2-401_EffectiveHyper-V

74

ホスト ページングについて

KVM の生みの親 Avi Kivity 氏のブログより

Swapping is used as a last resort in order to guarantee that services to not fail.

「スワッピングはサービス停止を防ぐための最後の手段だ」

VMware さんのドキュメントより

“hypervisor swapping is used as a last resort to reclaim memory from the virtual machine”

「スワッピングは仮想マシンからメモリを回収するための最後の手段だ」

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

http://avikivity.blogspot.com/2008/04/memory-overcommit-with-kvm.html

Page 75: TechEd2010_T2-401_EffectiveHyper-V

75

last resort最後の手段

Page 76: TechEd2010_T2-401_EffectiveHyper-V

76

なぜ、最後の手段なのか

KY なページング

「ダブル ページング」

Page 77: TechEd2010_T2-401_EffectiveHyper-V

77

KY なページング

ゲスト OS に依存しないゆえハイパーバイザーは、仮想マシンの物理メモリが、ゲスト OS 上で持っている「意味」まで察することはできません

容赦なくページアウト「ロックされたページ」や、「非ページ プール」のような、「ページ アウトされては困るページ」もハイパーバイザーからは「ただのページ」

これは、ゲスト OS の性能に深刻な影響を与えます

Page 78: TechEd2010_T2-401_EffectiveHyper-V

78

ゲスト OS

ダブル ページング

物理マシン

仮想マシン ゲスト物理メモリ

ハイパーバイザー

ゲスト仮想アドレス (GVA)

ページ ファイル

実際の物理メモリ ページ ファイル

ハイパーバイザーとゲストが同じページに対して「噛み合わないページング」をしてしまうこと

ページ A

ページ A

Page 79: TechEd2010_T2-401_EffectiveHyper-V

79

ダブル ページング

実は古くから知られていた問題

Year of Publication: 1974

“The double paging anomaly”

著者の Goldberg 氏は仮想化界の大御所

Page 80: TechEd2010_T2-401_EffectiveHyper-V

80

Hyper-V ではロックしてます

仮想マシン用のメモリは、ペアレント OS 内の winhv.sysというデバイス ドライバーが確保

ページ アウトされないようにがっちりとロックしています

Page 81: TechEd2010_T2-401_EffectiveHyper-V

81

何度か引用したこの文書

とても実用的で良い文書だと思います

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

Page 82: TechEd2010_T2-401_EffectiveHyper-V

82

例えばオーバーコミットに関して

Host memory size should be larger than guest memory usage.

ホストのメモリ サイズは、ゲストのメモリ使用量以上であるべきだ

For example, it is unwise to run a virtual machine with a 2 GB working set size in a host with only 1 GB host memory.

ホストに 1 GB しかメモリがないのに、 2 GB のメモリを消費する仮想マシンを動かすというのは愚かなことだ

オーバーコミットできるとはいっても「無い袖を振ってはいけない」

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

Page 83: TechEd2010_T2-401_EffectiveHyper-V

83

仮想マシンのメモリサイズ設定

Set an appropriate virtual machine memory size. The virtual machine memory size should be slightly larger than the average guest memory usage.

「仮想マシンのメモリ サイズを適切に設定しましょう。平均的な使用量よりちょっとだけ多めのメモリを与えるべきです」

http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

オーバー コミットできるからといって、ゲストに適当に多めのメモリを与えて良いわけではな

Page 84: TechEd2010_T2-401_EffectiveHyper-V

84

同感です

Page 85: TechEd2010_T2-401_EffectiveHyper-V

85

つまり

ページ共有は、ラージ ページの一般化という状況の変化に伴って有用性が失われつつあります

ホスト ページングは、性能に悪影響があるため、「あくまで最後の手段」です

「仮想マシンの集約率を上げる」主たる方法ではありません使わずにすめばそれに越したことはありません

「無い袖は振らない」範囲で、適切な量のメモリを賢く仮想マシンに分配する仕組みが必要です

Page 86: TechEd2010_T2-401_EffectiveHyper-V

86

それがDynamic Memory

なのです

Page 87: TechEd2010_T2-401_EffectiveHyper-V

Dynamic Memory登場!

Page 88: TechEd2010_T2-401_EffectiveHyper-V

88

まずは基本情報

ペアレント側の要件Windows Server 2008 R2 SP1 が必要です無償の Hyper-V Server 2008 R2 SP1 でも OK !

サポートされるゲスト OSWindows Server 2003, 2008 & 2008 R2対応エディション : Web, Standard, Enterprise, Datacenter32 / 64 ビット双方に対応

Windows Vista と Windows 7Enterprise と Ultimate同じく、 32 / 64 ビット双方に対応

Page 89: TechEd2010_T2-401_EffectiveHyper-V

89

Dynamic Memory (DM) 概念図

Dynamic Memory は、ホストとゲストが緊密に連携して、メモリの効率的な割り当てを実現する

ホスト側モジュールは、 SP1 を適用することでインストールされる

ゲスト側は SP1 の統合サービスをインストールすることで有効になる

ペアレントパーティション

vmms.exe

VM 1

ページファイル

システム物理メモリ

DM VSC

ゲスト物理メモリ

VMBus

VMBus

vmwp.exevmwp.exe

メモリバランサー

DM VSP

DM VSP

VM 2

ページファイル

DM VSC

ゲスト物理メモリ

VMBus

Windowsメモリ マネージャー

GMO メモリマネージャー

GMO メモリマネージャー

Windowsメモリ マネージャー

Page 90: TechEd2010_T2-401_EffectiveHyper-V

90

ペアレントパーティション

vmms.exe

VM 1

ページファイル

Windowsメモリ マネージャー

システム物理メモリ

DM VSC

ゲスト物理メモリ

VMBus

VMBus

vmwp.exevmwp.exe

メモリバランサー

GMO メモリマネージャー

DM VSP

GMO メモリマネージャー

DM VSP

VM 2

ページファイル

Windowsメモリ マネージャー

DM VSC

ゲスト物理メモリ

VMBus

DM 構成要素 - VSP と VSC

DM VSC ゲスト OS のカーネル モードで動作 メモリの使用状況をペアレントへ通知 Hot-Add とバルーニングを実行

DM VSP ペアレント OS の ユーザー モード プ

ロセスである vmwp.exe 内で動作 VSC から受け取ったメモリ使用状況を

バランサーへ伝える

Page 91: TechEd2010_T2-401_EffectiveHyper-V

91

ペアレントパーティション

vmms.exe

VM 1

ページファイル

Windowsメモリ マネージャー

システム物理メモリ

DM VSC

ゲスト物理メモリ

VMBus

VMBus

vmwp.exevmwp.exe

メモリバランサー

GMO メモリマネージャー

DM VSP

GMO メモリマネージャー

DM VSP

VM 2

ページファイル

Windowsメモリ マネージャー

DM VSC

ゲスト物理メモリ

VMBus

DM 構成要素 - メモリ バランサー

メモリ バランサー VM のメモリ使用状況を収集 いずれかの VM がメモリを必要として

いたら、 VSP と連携し、他の VM からバルーニングでメモリを回収

十分なメモリが回収できたら、それをメモリが足りていないVM へ Hot-Add する

Page 92: TechEd2010_T2-401_EffectiveHyper-V

92

ペアレントパーティション

vmms.exe

VM 1

ページファイル

Windowsメモリ マネージャー

システム物理メモリ

DM VSC

ゲスト物理メモリ

VMBus

VMBus

DM 構成要素 - GMO MM

vmwp.exevmwp.exe

メモリバランサー

GMO メモリマネージャー

DM VSP

GMO メモリマネージャー

DM VSP

VM 2

ページファイル

Windowsメモリ マネージャー

DM VSC

ゲスト物理メモリ

VMBus

GMO メモリ マネージャー VM のメモリ マップを管理 どの部分がバルーニングされているか

を常に把握

Page 93: TechEd2010_T2-401_EffectiveHyper-V

93

Dynamic Memory のポリシーホスト ページングしな

い無い袖は振らない

キーとなるテクノロジ二つ

Hot-Add メモリVM へ動的にメモリを追

バルーニングVM から余剰メモリを回

Page 94: TechEd2010_T2-401_EffectiveHyper-V

94

Hot-Add メモリ元々は大規模・高信頼システム向けの機能

まさか仮想マシン環境で活用されようとは!

Hot-Addメモリ

Hot-Replaceメモリ

Hot-ReplaceCPU

Hot-AddCPU

メモリ・ CPU の動的な追加および交換

※ 写真はイメージです

Page 95: TechEd2010_T2-401_EffectiveHyper-V

95

なぜ Hot-Add メモリ?Hyper-V はホスト ページングをしないからです

仮想マシンを起動した瞬間から物理メモリを

本当に 2 GB 割り当てる

ゲスト OS には 2 GBあるように見せつつ、

実際には少しずつ割り当てている

ホスト ページングをする場合

ホスト ページングをしない場合

仮想マシンに 2 GB メモリ

定義

仮想マシンに 2 GB メモリ

定義

Page 96: TechEd2010_T2-401_EffectiveHyper-V

96

小さく産んで大きく育てる

ホスト ページングしたほうが良いのか?

いやしかし、そのデメリットは前述の通り

512 MB

1024 MB

1536 MB

ならば、最小限のメモリで起動して必要に応じて増やしていこう

メモリ 追加 !

メモリ 追加 !

Page 97: TechEd2010_T2-401_EffectiveHyper-V

97

メモリの追加は

Hot-Add

Page 98: TechEd2010_T2-401_EffectiveHyper-V

98

増える一方では困ります

Page 99: TechEd2010_T2-401_EffectiveHyper-V

99

VM 1

バルーニングでメモリを回収

ゲスト物理メモリ

回収

Windowsメモリ マネージャー

DM VSC

使用中

使用中使用中

回収

使用中

ペアレントパーティション

vmms.exe

システム物理メモリ

vmwp.exe

メモリバランサー

GMO メモリマネージャー

DM VSP

DM VSC が物理メモリを「確保」

ページ アウトされないようにロックする

「確保」されたゲスト物理メモリに対応するシステム物理メモリは、ペアレントに「回収」されたことになる

「回収」されたメモリは他の仮想マシンで利用できる

バルーニング

Page 100: TechEd2010_T2-401_EffectiveHyper-V

100

Dynamic Memory の設定

バッファー ( 割合 )

仮想マシン 起動時の初期メモリ量

Hot-Add の上限

優先度

Page 101: TechEd2010_T2-401_EffectiveHyper-V

101

スクリプトでの設定

WMI のクラスにプロパティが追加されていますroot\virtualization

Msvm_VirtualSystemSettingData クラス

プロパティ名 GUI での対応する項目 取り得る値

DynamicMemoryEnabled

「動的」のラジオボタン True, False

VirtualQuantity スタートアップ RAM

Reservation 無し(Startup RAM と同じになる )

8 - 65536

Limit 最大 RAM 8 – 65536

Weight 優先度 1 – 1000

TargetMemoryBuffer バッファー 5 - 95

Page 102: TechEd2010_T2-401_EffectiveHyper-V

102

DM VM DM VMDM VM

スクリプトでだけ可能な設定

起動時メモリとは別に、最低予約メモリを設定可能

起動時(VirtualQuantity)

予約(Reservation)

最大(Limit)

512 MB

1024 MB

256 MB

Page 103: TechEd2010_T2-401_EffectiveHyper-V

103

メモリの監視は要注意

一定割合に

DM VM

空き

使用中

なるように

DM VM

使用中

空き

空きが

DM VM

空き

使用中

増減する!

DM VM

使用中

空き

ゲストの空きメモリを監視しても状況を正しく判断できません

Page 104: TechEd2010_T2-401_EffectiveHyper-V

104

パフォーマンス カウンター

ペアレント パーティションのメモリ バランサーの情報 Available Memory Average Pressure Added Memory Removed Memory

仮想マシン毎のメモリ割当状況の情報 Guest Visible Physical Memory Physical Memory Added Memory Removed Memory

Hyper-V Dynamic Memory Balancer

Hyper-V Dynamic Memory VM

Page 105: TechEd2010_T2-401_EffectiveHyper-V

105

パフォーマンス カウンターの例

Hypre-V Dynamic Memory VM\Physical Memoryバルーニングによる「中抜き」を考慮した実質的な

実装メモリ量を表示

Page 106: TechEd2010_T2-401_EffectiveHyper-V

106

親の分、残しておいて!

小さな空きメモリのかけらも無駄なくゲストに割り当ててしまうので

ペアレント ( ホスト ) OS 用のメモリが残らない

MemoryReserve の設定をしてください

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization

値 : MemoryReserve型 : DWORDデータ : ゲストに渡さないメモリ量 (MB)

Page 107: TechEd2010_T2-401_EffectiveHyper-V

107

最後に

Dynamic Memory は Hyper-V R2 SP1 の重要な追加機能です

Live Migration のような「派手な面白さ」はありませんが、「 Hyper-V 生活」のすべての瞬間おいて効果を発揮し続ける、実用的な機能です

(毎日 Live Migration をするとは限りませんがDynamic Memory は「常に」役立ちます )

是非、実際にお試しください

“Windows 7 および Windows Server 2008 R2 Service Pack 1 (KB976932)”http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=c3202ce6-4056-4059-8a1b-3a9b77cdfdda&displayLang=ja

Page 108: TechEd2010_T2-401_EffectiveHyper-V

108

補足 : Dynamic Memory による VDI 環境での集約率向上

Dynamic Memory によって、仮想マシンに割り当てるメモリを動的に増減することが可能になります。 ( ゲスト OS の稼働中に Hyper-V が自動的に調節します )

これにより、各仮想マシンに割り当てるメモリ量を「その時点で必要な最低限のサイズ」に常に調整することができます。

「仮想マシン内で使われずに余っているメモリ」を削減できます 。( どの程度の空きを残すかは調整可能です )

これによって、メモリ割り当ての無駄がなくなり、結果として集約率が向上します

VM-1

使用中

空きメモリ

VM-2

使用中

空きメモリ

VM-3

使用中

空きメモリ

VM-1

使用中

VM-2

使用中

VM-3

使用中

VM-4

使用中

VM-5

使用中最低限の空き

最低限の空き

最低限の空き最低限の空き

Dynamic Memroy 無効 Dynamic Memory 有効

Dynamic Memory の効果

最低限の空き

ホスト・ゲストのバージョン

Dynamic Memory はホスト / ゲストが連携してメモリを最適化する機能です双方が対応している必要があります

ホスト Windows Server 2008 R2 SP1

ゲストWindows Vista 以降 ( クライアント OS) Windows Server 2003 SP2 以降 ( サーバー OS)

CPU6 コア Xeon 2 基

(24 スレッド )

メモリ 96GB

ゲストOS

Windows 7

弊社検証結果より

Dynamic Memory無効 (2008 R2)

Dynamic Memory有効 (2008 R2 SP1)

85 VM 120 VM

40%向上

Page 109: TechEd2010_T2-401_EffectiveHyper-V

109

T2-301:ついに登場! RemoteFX で実現する            強化された MS VDI のアーキテクチャ

関連セッション

T2-402: あなたの Hyper-V 環境を最大限使い切る方法             ~ Hyper-V 設定にまつわる Tips ~

T3-301: Data Protection Manager 2010 を活用した                 Hyper-V のバックアップ

T3-305: System Center Operations Manager 2007 R2              アーキテクチャと実践的な活用手法

T3-306: System Center Service Manager 2010 による       ITIL の実践 ~ CMDB とサービス デスクを中心に~

T3-307: System Center Virtual Machine Manager 2008 R2 の                        徹底活用方法

Page 110: TechEd2010_T2-401_EffectiveHyper-V

110

リファレンス (1/1)

RAM, Virtual Memory, Pagefile and all that stuffhttp://support.microsoft.com/kb/2267427/en-us

Understanding Memory Resource Management in VMware ESX 4.1http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf

Satori: Enlightened page sharinghttp://www.usenix.org/events/usenix 09/tech/full_papers/milos/milos_html/

Memory overcommit with kvmhttp://avikivity.blogspot.com/2008/04/memory-overcommit-with-kvm.html

KVM でオーバーコミットhttp://www.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/sect-Virtualization-Tips_and_tricks-Overcommitting_with_KVM.html

Page 111: TechEd2010_T2-401_EffectiveHyper-V

111

リファレンス (2/2)

Pushing the Limits of Windows: Virtual Memoryhttp://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

Pushing the Limits of Windows: Physical Memoryhttp://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx

Windows のメモリ管理の進歩http://www.microsoft.com/japan/whdc/system/sysinternals/memmgt.mspx

Resizing Memory With Balloons and Hotplughttp://www.kernel.org/doc/ols/2006/ols 2006v2-pages-313-320.pdf

The double paging anomalyhttp://portal.acm.org/citation.cfm?id=1500215

Page 112: TechEd2010_T2-401_EffectiveHyper-V

112

Dynamic Memory 関連ブログ

Dynamic Memory Coming To Hyper-Vhttp://blogs.technet.com/b/virtualization/archive/2010/03/18/dynamic-memory-coming-to-hyper-v.aspx

Dynamic Memory Coming to Hyper-V Part 2http://blogs.technet.com/b/virtualization/archive/2010/03/25/dynamic-memory-coming-to-hyper-v-part-2.aspx

Dynamic Memory Coming to Hyper-V Part 3http://blogs.technet.com/b/virtualization/archive/2010/04/07/dynamic-memory-coming-to-hyper-v-part-3.aspx

Dynamic Memory Coming to Hyper-V Part 4http://blogs.technet.com/b/virtualization/archive/2010/04/21/dynamic-memory-coming-to-hyper-v-part-4.aspx

Dynamic Memory Coming to Hyper-V Part 5http://blogs.technet.com/b/virtualization/archive/2010/05/20/dynamic-memory-coming-to-hyper-v-part-5.aspx

Page 113: TechEd2010_T2-401_EffectiveHyper-V

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

T2-401アンケートにご協力ください。

Page 114: TechEd2010_T2-401_EffectiveHyper-V

© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED

OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.