セッション ID: T2-401 Effective Hyper-V R2 SP1 マイクロソフト株式会社 コンサルティングサービス統括本部 佐々木邦暢 (twitter: @ksasakims)
セッションの目的とゴール    セッションの目的     Hyper-V R2 SP1 の新機能である     「Dynamic Memory」の設計思想と動作原理を解     説します     Dynamic Memory の実運用上の留意点...
ご注意          本セッションでは、      現在開発中の製品を取り扱っています。    仕様および機能は変更される可能性があります。3
アジェンダ    イントロダクション    いまさら聞けない「仮想メモリ」    ハイパーバイザーのメモリ管理効率化技法    Dynamic Memory 登場!4
本日のテーマ5
Hyper-V R2 SP1       の新機能6
Dynamic    Memory7
動的記憶8
なぜ必要?9
どんな仕組み?10
どう使う?11
詳しく解説12
最後の     セッション13
#T2_401     開始なう14
ハイパーバイザーの仕事とは
そもそも16
ハイパーバイザーの    仕事とは     物理的なリソースを抽象化(= 仮想化)して       複数の仮想マシンに効率よく配分     CPU   ディスク   メモリ   NIC17
Hyper-V の仕事を     振り返ってみると18
CPU の仮想化       もし、CPU が仮想化されていなかったら ペアレント               VM 1   VM 2            VM 3パーティション                      ハイパーバイザー  ...
そこで     プロセッサの仮想化       論理プロセッサ (LP) 上で      複数の仮想プロセッサ (VP) が       実行されるという仕組み20
CPU の仮想化 ペアレント                   VM 1                 VM 2                 VM 3パーティション                  (2 VP)            ...
CPU の仮想化22
ディスク の仮想化      もし、ディスク が仮想化されていなかったら ペアレント          VM 1     VM 2     VM 3パーティション     ディスク 0    ディスク 1   ディスク 2   ディスク 3  ...
Virtual Hard Disk     という仕組みを導入     ホスト OS 上の .vhd ファイル      仮想マシンからはディスクドライブに見える     動的拡張 VHD      「実際に使った分だけ、ディスクを消費する」 ...
ディスクの仮想化     .vhd ファイルで仮想的なディスクドライブ ペアレント       VM 1   VM 2   VM 3パーティション     .vhd     .vhd     .vhd     一台のディスクを複数の VM で共...
ディスクの仮想化26
ネットワークの仮想化       ネットワークが仮想化されていなかったら ペアレント           VM 1   VM 2    VM 3パーティション     NIC 0      NIC 1   NIC 2   NIC 3      ...
そこで      仮想ネットワーク     仮想ネットワーク (= 仮想スイッチ)      ホストに「仮想スイッチ」を作成      VM は「仮想スイッチ」を介して通信      複数の VM が一枚の物理 NIC を共有し、      同...
ネットワークの仮想化          仮想スイッチで NIC を多重化 ペアレント       VM 1            VM 2   VM 3パーティション                    仮想スイッチ     一枚の NIC ...
ネットワークの       仮想化30
メモリは?31
Hyper-V のメモリ管理 ホストが管理するメモリを固定的に割り当てるのみ  ペアレント       VM 1     VM 2   VM 3 パーティション       ホストの                メモリを           ...
わりと     工夫がない33
固定的な割り当ては無駄が出る           空いているメモリを集めれば         もっとたくさん VM を実行できるのでは       VM 1      VM 2      VM 3    VM 4                ...
メモリの     効率的な     管理が急務35
そこで Dynamic Memoryひかえめに起動          不足したら     メモリを追加    余れば回収     DM VM        DM VM     DM VM    DM VM                    ...
Dynamic Memory 基本動作
これって     オーバー コミット?     他のハイパーバイザーだと、     「オーバーコミット」     という言葉がよく出てきますが     Hyper-V の Dynamic Memory は?      オーバーコミットなの?38
おおむね      YES39
でも尐し違う     ところもある40
Dynamic Memory の特徴Hyper-V の Dynamic Memory                               ゲスト OS から                             「利用可能」に見える ...
この違い     どこから?42
There’s more than one way…     オーバーコミットにはいろいろなやり方がある        ページ共有          バルーニング     ホスト ページング         Hot-Add メモリ     (ハ...
なぜこんなに      色々な方式が?       CPU やディスク、NIC の仮想化は、     どのハイパーバイザーも基本的には同じ方式     メモリだけは、リソースの効率的な     利用方式がイロイロあるのはなぜ?44
それを     理解するには45
急がば回れで「仮想メモリ」        各種オーバーコミット方式の     特質と得失をより良く理解するには OS の     仮想メモリ機構に関する基礎知識が有用                去年は Live Migration の前に ...
いまさら聞けない「仮想メモリ」
メモリはすでに仮想化済         メモリやディスクという記憶域リソースを仮想化し         個々のプロセスに専用のアドレス空間を割り当てる     プロセス A     プロセス B   プロセス C     プロセス D     ...
プロセスの仮想アドレス空間 ポイントは「自分専用のメモリ空間が持てる」こと     x86: プロセス毎に 4 GB        x 64: プロセス毎に 16 TB!     FFFF FFFF                      F...
例えば、エクスプローラー              ほぼ 8 TB が               フリー!50
でも     そんなにメモリ      積んでない51
仮想ページと物理フレーム プロセス A     仮想アドレス仮想アドレス      1 バイト毎に割当  空間                                 物理アドレス ページ       ページ             ...
デマンド ページング プロセス A                     プロセス B仮想アドレス          物理アドレス      仮想アドレス  空間              空間          空間 コミット       ...
ページの共有 プロセス A                          プロセス B仮想アドレス            物理アドレス         仮想アドレス  空間                空間             空間 ...
ページ アウトとページ イン プロセス A            空きがなければディスクに退避          プロセス B仮想アドレス             物理アドレス           仮想アドレス  空間             ...
スラッシング プロセス A            ページングにかかりっきり!           プロセス B仮想アドレス             物理アドレス           仮想アドレス  空間                 空間  ...
仮想環境ではもう一段          二段アドレス変換: GVA → GPA → SPA                                   シャドウ ページ テーブルは      プロセス          プロセス    ...
仮想記憶の     おさらい終了58
ハイパーバイザーのメモリ管理効率化技法
オーバーコミットの技法 (再掲)     いくつかの技術の組み合わせで実現されています        ページ共有          バルーニング     ホスト ページン         グ             Hot-Add メモリ   ...
ページ共有      仮想マシン間で内容が同じページを共有     ページを定期的にスキャンしてハッシュ値を計算     ハッシュ値が一致した場合、ページ内容を     ビット単位で改めて比較して、同一性を判定61
バルーニング     VM 1                  VM 2     空き        VM 1 から     空き               回収した                メモリ        増強     確保 ...
ホスト ページング         デマンド ページング方式による仮想記憶を          ハイパーバイザー レベルで実装したもの             ゲスト仮想アドレス (GVA)ゲスト OS               通常のページ...
あえて星取り表を作ってみます                       VMware             Hyper-V            Xen   KVM                        ESX ページ共有 バルーニ...
Hyper-V は       が尐ない     じゃないか65
Hyper-V のオーバーコミット      ページ共有もホスト ページングもしません        ページ共有          バルーニング     ホスト ページン         グ             Hot-Add メモリ   ...
ページ共有の概念図      VM 1                     VM 2 VMのメモリ          ホストの         VMのメモリ                 物理メモリ     ページ          フレ...
同じ内容のページでも               即座に共有されるわけではない      VM 1                            VM 2 VMのメモリ             ホストの             VMのメ...
一旦ページが共有されても        例えば、片方のVMが再起動したら?     あるいは、片方だけメモリの内容が変わったら?           どうなるでしょう?69
ページ共有の解除     VM 1                       VM 2 VMのメモリ       ホストの             VMのメモリ              物理メモリ     ページ       フレーム   ...
ページ共有について      ラージ ページは共有しづらい!                 4                     4 KB のページ                     2,097,152 / 4,096 = 512...
ページ共有について     VMware さんのドキュメントより “hardware-assisted memory virtualization systems, ESX will automatically back guest  phy...
ページ共有について     Windows とラージ ページ  Windows Vista, Windows 7 はラージ ページを利用します  Windows Server 2008 / 2008 R2 もラージ ページを利用します  ...
ホスト ページングについて    KVM の生みの親 Avi Kivity 氏のブログより                                http://avikivity.blogspot.com/2008/04/memory-...
last resort     最後の手段75
なぜ、最後の手段なのか       KY なページング      「ダブル ページング」76
KY なページング     ゲスト OS に依存しないゆえ      ハイパーバイザーは、仮想マシンの      物理メモリが、ゲスト OS 上で持っている      「意味」まで察することはできません     容赦なくページアウト      ...
ダブル ページング     ハイパーバイザーとゲストが同じページに対して     「噛み合わないページング」をしてしまうこと            ゲスト仮想アドレス (GVA)ゲスト OS             ページ           ...
ダブル ページング          実は古くから知られていた問題 “The double paging anomaly”    著者の Goldberg 氏は       仮想化界の大御所            Year of Publica...
Hyper-V ではロックしてます 仮想マシン用のメモリは、  ペアレント OS 内の winhv.sys  というデバイス ドライバーが確保 ページ アウトされないように  がっちりとロックしています80
何度か引用したこの文書      http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf     とても実用的で良い文書だと思います81
例えばオーバーコミットに関して Host memory size should be larger than guest memory usage. ホストのメモリ サイズは、ゲストのメモリ使用量以上であるべきだ              ...
仮想マシンのメモリサイズ設定 Set an appropriate virtual machine memory size. The virtual  machine memory size should be slightly larger...
同感です84
つまり     ページ共有は、ラージ ページの一般化という状況の     変化に伴って有用性が失われつつあります     ホスト ページングは、性能に悪影響があるため、     「あくまで最後の手段」です      「仮想マシンの集約率を上げる...
それが     Dynamic Memory        なのです86
Dynamic Memory登場!
まずは基本情報     ペアレント側の要件      Windows Server 2008 R2 SP1 が必要です      無償の Hyper-V Server 2008 R2 SP1 でも OK!     サポートされるゲスト OS  ...
Dynamic Memory (DM) 概念図        ペアレント                         VM 1           VM 2       パーティション                       DM VS...
DM 構成要素 - VSP と VSC        ペアレント                         VM 1           VM 2       パーティション                       DM VSC   ...
DM 構成要素 - メモリ バランサー        ペアレント                         VM 1           VM 2       パーティション                       DM VSC   ...
DM 構成要素 - GMO MM        ペアレント                         VM 1          VM 2       パーティション                       DM VSC       ...
Dynamic Memory のポリシー                   ホスト ページングしな     無い袖は振らない           い          キーとなるテクノロジ二つ     Hot-Add メモリ    バルーニン...
Hot-Add メモリ      元々は大規模・高信頼システム向けの機能     メモリ・CPU の動的な追加および交換       Hot-Add   Hot-Replace        メモリ         メモリ       Hot-...
なぜ Hot-Add メモリ?     Hyper-V はホスト ページングをしないからですホスト ページングをしない場合                      仮想マシンを起動した           仮想マシンに     瞬間から物理メ...
小さく産んで大きく育てる              ホスト ページングしたほうが良いのか?                 いやしかし、そのデメリットは前述の通り     ならば、最小限のメモリで起動して       必要に応じて増やしていこう...
メモリの      追加は     Hot-Add97
増える一方では      困ります98
バルーニングでメモリを回収      ペアレント     パーティション                                  バルーニング       vmms.exe      VM 1       DM VSC が物理メモリ...
Dynamic Memory の設定仮想マシン 起動時の  初期メモリ量      Hot-Add の上限 バッファー (割合)         優先度100
スクリプトでの設定      WMI のクラスにプロパティが追加されています      rootvirtualization         Msvm_VirtualSystemSettingData クラスプロパティ名            ...
スクリプトでだけ可能な設定     起動時              最大           予約(VirtualQuantity)   (Limit)   (Reservation)      DM VM         DM VM    ...
メモリの監視は要注意           ゲストの空きメモリを監視しても            状況を正しく判断できません 空きが        一定割合に    なるように    増減する!  DM VM      DM VM    DM V...
パフォーマンス カウンターHyper-V Dynamic Memory Balancer       ペアレント パーティションのメモリ バランサーの情報         Available Memory         Average ...
パフォーマンス カウンターの例       Hypre-V Dynamic Memory VMPhysical Memory      バルーニングによる「中抜き」を考慮した実質的な                  実装メモリ量を表示105
親の分、残しておいて!              小さな空きメモリのかけらも           無駄なくゲストに割り当ててしまうので         ペアレント (ホスト) OS 用のメモリが残らない       MemoryReserve ...
最後に      Dynamic Memory は Hyper-V R2 SP1 の重要な追加機能です          Live Migration のような「派手な面白さ」はありませんが、                   「Hyper-...
 Dynamic Memory によって、仮想マシンに割り当てるメモリを動的に増減する                               ことが可能になります。(ゲスト OS の稼働中に Hyper-V が自動的に調節します)   ...
関連セッション      T2-301:ついに登場!RemoteFX で実現する                       強化された MS VDI のアーキテクチャ      T2-402: あなたの Hyper-V 環境を最大限使い切る方...
リファレンス (1/1) RAM, Virtual Memory, Pagefile and all that stuff http://support.microsoft.com/kb/2267427/en-us Understanding ...
リファレンス (2/2) Pushing the Limits of Windows: Virtual Memory http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3...
Dynamic Memory 関連ブログ Dynamic Memory Coming To Hyper-V http://blogs.technet.com/b/virtualization/archive/2010/03/18/dynamic...
ご清聴ありがとうございました。   T2-401アンケートにご協力ください。
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered tra...
Upcoming SlideShare
Loading in …5
×

TechEd2010_T2-401_EffectiveHyper-V

1,635 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,635
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

TechEd2010_T2-401_EffectiveHyper-V

  1. 1. セッション ID: T2-401 Effective Hyper-V R2 SP1 マイクロソフト株式会社 コンサルティングサービス統括本部 佐々木邦暢 (twitter: @ksasakims)
  2. 2. セッションの目的とゴール セッションの目的 Hyper-V R2 SP1 の新機能である 「Dynamic Memory」の設計思想と動作原理を解 説します Dynamic Memory の実運用上の留意点を 解説します セッションのゴール ハイパーバイザーのメモリ管理技法について、 製品に依存しない普遍的な知識を身につける Dynamic Memory の仕組みとその特徴を 説明できるようになる2
  3. 3. ご注意 本セッションでは、 現在開発中の製品を取り扱っています。 仕様および機能は変更される可能性があります。3
  4. 4. アジェンダ イントロダクション いまさら聞けない「仮想メモリ」 ハイパーバイザーのメモリ管理効率化技法 Dynamic Memory 登場!4
  5. 5. 本日のテーマ5
  6. 6. Hyper-V R2 SP1 の新機能6
  7. 7. Dynamic Memory7
  8. 8. 動的記憶8
  9. 9. なぜ必要?9
  10. 10. どんな仕組み?10
  11. 11. どう使う?11
  12. 12. 詳しく解説12
  13. 13. 最後の セッション13
  14. 14. #T2_401 開始なう14
  15. 15. ハイパーバイザーの仕事とは
  16. 16. そもそも16
  17. 17. ハイパーバイザーの 仕事とは 物理的なリソースを抽象化(= 仮想化)して 複数の仮想マシンに効率よく配分 CPU ディスク メモリ NIC17
  18. 18. Hyper-V の仕事を 振り返ってみると18
  19. 19. CPU の仮想化 もし、CPU が仮想化されていなかったら ペアレント VM 1 VM 2 VM 3パーティション ハイパーバイザー コア 0 コア 1 コア 0 コア 1 ソケット 0 ソケット 1 これでは物理パーティショニング19
  20. 20. そこで プロセッサの仮想化 論理プロセッサ (LP) 上で 複数の仮想プロセッサ (VP) が 実行されるという仕組み20
  21. 21. CPU の仮想化 ペアレント VM 1 VM 2 VM 3パーティション (2 VP) (2 VP) (4 VP) VP 0 VP 0 VP 1 VP 1 VP 0 VP 2 VP 1 VP 3 Root VP 0 Root VP 1 Root VP 2 Root VP 3 LP 0 LP 1 LP 2 LP 3 ハイパーバイザー コア 0 コア 1 コア 0 コア 1 ソケット 0 ソケット 121
  22. 22. CPU の仮想化22
  23. 23. ディスク の仮想化 もし、ディスク が仮想化されていなかったら ペアレント VM 1 VM 2 VM 3パーティション ディスク 0 ディスク 1 ディスク 2 ディスク 3 VM の台数分、ディスクが必要23
  24. 24. Virtual Hard Disk という仕組みを導入 ホスト OS 上の .vhd ファイル 仮想マシンからはディスクドライブに見える 動的拡張 VHD 「実際に使った分だけ、ディスクを消費する」 容積効率の良い方式24
  25. 25. ディスクの仮想化 .vhd ファイルで仮想的なディスクドライブ ペアレント VM 1 VM 2 VM 3パーティション .vhd .vhd .vhd 一台のディスクを複数の VM で共有25
  26. 26. ディスクの仮想化26
  27. 27. ネットワークの仮想化 ネットワークが仮想化されていなかったら ペアレント VM 1 VM 2 VM 3パーティション NIC 0 NIC 1 NIC 2 NIC 3 NIC が何枚あっても足りない27
  28. 28. そこで 仮想ネットワーク 仮想ネットワーク (= 仮想スイッチ) ホストに「仮想スイッチ」を作成 VM は「仮想スイッチ」を介して通信 複数の VM が一枚の物理 NIC を共有し、 同時にネットワークにアクセスできる28
  29. 29. ネットワークの仮想化 仮想スイッチで NIC を多重化 ペアレント VM 1 VM 2 VM 3パーティション 仮想スイッチ 一枚の NIC を複数の VM で共有29
  30. 30. ネットワークの 仮想化30
  31. 31. メモリは?31
  32. 32. Hyper-V のメモリ管理 ホストが管理するメモリを固定的に割り当てるのみ ペアレント VM 1 VM 2 VM 3 パーティション ホストの メモリを 固定的に 割り当て32
  33. 33. わりと 工夫がない33
  34. 34. 固定的な割り当ては無駄が出る 空いているメモリを集めれば もっとたくさん VM を実行できるのでは VM 1 VM 2 VM 3 VM 4 VM 2 の VM 3 の VM 1 の 回収済み 回収済み 回収済み 空きメモリ 空きメモリ 空きメモリ 使用中 使用中 使用中34
  35. 35. メモリの 効率的な 管理が急務35
  36. 36. そこで Dynamic Memoryひかえめに起動 不足したら メモリを追加 余れば回収 DM VM DM VM DM VM DM VM 700 MB 550 MB 512 MB 512 MB 追加 回収 空き 空き 空き 空き 使用中 使用中 使用中 使用中 回収したメモリを他の VM に追加して有効活用36
  37. 37. Dynamic Memory 基本動作
  38. 38. これって オーバー コミット? 他のハイパーバイザーだと、 「オーバーコミット」 という言葉がよく出てきますが Hyper-V の Dynamic Memory は? オーバーコミットなの?38
  39. 39. おおむね YES39
  40. 40. でも尐し違う ところもある40
  41. 41. Dynamic Memory の特徴Hyper-V の Dynamic Memory ゲスト OS から 「利用可能」に見える ゲスト OS から見た メモリは常に実際の 「実装メモリ量」が 物理メモリに 動的に変化する 対応しているESX や KVM のオーバーコミット ゲスト OS から 「利用可能」に見える ゲスト OS から見た メモリは必ずしも 「実装メモリ量」は 実際の物理メモリの 常に一定 裏付けがない41
  42. 42. この違い どこから?42
  43. 43. There’s more than one way… オーバーコミットにはいろいろなやり方がある ページ共有 バルーニング ホスト ページング Hot-Add メモリ (ハイパーバイザー スワップ)43
  44. 44. なぜこんなに 色々な方式が? CPU やディスク、NIC の仮想化は、 どのハイパーバイザーも基本的には同じ方式 メモリだけは、リソースの効率的な 利用方式がイロイロあるのはなぜ?44
  45. 45. それを 理解するには45
  46. 46. 急がば回れで「仮想メモリ」 各種オーバーコミット方式の 特質と得失をより良く理解するには OS の 仮想メモリ機構に関する基礎知識が有用 去年は Live Migration の前に クラスターのおさらいをしましたが 今年は Dynamic Memory の 前に、仮想メモリを再確認46
  47. 47. いまさら聞けない「仮想メモリ」
  48. 48. メモリはすでに仮想化済 メモリやディスクという記憶域リソースを仮想化し 個々のプロセスに専用のアドレス空間を割り当てる プロセス A プロセス B プロセス C プロセス D 仮想メモリ 仮想メモリ 仮想メモリ 仮想メモリ メモリ マネージャー (MM) pagefile.sys 物理メモリ ページ ファイル48
  49. 49. プロセスの仮想アドレス空間 ポイントは「自分専用のメモリ空間が持てる」こと x86: プロセス毎に 4 GB x 64: プロセス毎に 16 TB! FFFF FFFF FFFF FFFF FFFF FFFF (32 ビット) カーネル空間 (64 ビット) カーネル空間 (上位 8 TB) (上位 2 GB) それはそれは 広大な 未使用空間 ユーザー空間 (下位 2 GB) ユーザー空間 (下位 8 TB) 0 049
  50. 50. 例えば、エクスプローラー ほぼ 8 TB が フリー!50
  51. 51. でも そんなにメモリ 積んでない51
  52. 52. 仮想ページと物理フレーム プロセス A 仮想アドレス仮想アドレス  1 バイト毎に割当 空間 物理アドレス ページ ページ 空間 ページ  メモリの割当・解放の単位 フレーム ページ  従来は 4 KB が主流 フレーム ページ フレーム ページ ラージ ページ (large page) フレーム ページ  x86: 2 MB / 4 MB フレーム ページ  x64: 2 MB フレーム (ページ フレー ページ ム) ページ  物理メモリの管理単位 ページ52
  53. 53. デマンド ページング プロセス A プロセス B仮想アドレス 物理アドレス 仮想アドレス 空間 空間 空間 コミット A コミット 空き B 空き コミット 空き 空き 空き A コミット 空き B 空き 空き 空き 空き 空き 空き 空き 空き 要求に応じて 空き 必要な分だけを割り当てる 空き 空き 空き53
  54. 54. ページの共有 プロセス A プロセス B仮想アドレス 物理アドレス 仮想アドレス 空間 空間 空間 ページ フレーム ページ ページ フレーム ページ ページ shared.dll フレーム ページ ページ フレーム ページ shared.dll ページ フレーム ページ shared.dll ページ ページ ページ ページ ページ 同じフレームを複数のプロセス間で ページ 共有することでメモリを有効利用 ページ ページ ページ ページ54
  55. 55. ページ アウトとページ イン プロセス A 空きがなければディスクに退避 プロセス B仮想アドレス 物理アドレス 仮想アドレス 空間 空間 空間 コミット A コミット コミット B 空き 空き A 空き 空いて 割当要求 B コミット ない! 空き 空いて 空き A ない! コミット 割当要求 ページイン ページアウト 空き 空き 空き ページ ファイル 空き 空き 空き 空き 空き55
  56. 56. スラッシング プロセス A ページングにかかりっきり! プロセス B仮想アドレス 物理アドレス 仮想アドレス 空間 空間 空間 コミット フレーム コミット 空いて コミット ない! フレーム 空き 空いて 割当要求 フレーム ない! 割当要求 空いて 割当要求 フレーム コミット ない! 空き 空いて 割当要求 フレーム ない! コミット 空き 空いて 割当要求 ない! 割当要求 空いて 空き 空いて ページ ファイル ない! 空き ない! 割当要求 空き 空き 空き56
  57. 57. 仮想環境ではもう一段 二段アドレス変換: GVA → GPA → SPA シャドウ ページ テーブルは プロセス プロセス 二段アドレス変換を統合し、 ゲスト仮想 ゲスト仮想 GVA を直接 SPA に変換する アドレス (GVA) アドレス (GVA) SPT を更新し続けることは ページ 軽い処理ではなく、仮想化のゲスト OS テーブル オーバーヘッドの主要部分仮想 ゲスト物理 SLAT 機能を持つプロセッサでは、マシン アドレス (GPA) この処理をハードウェアで行えるハイパーバイザー シャドウ ページ テーブル (SPT)物理マシン システム物理アドレス (SPA)57
  58. 58. 仮想記憶の おさらい終了58
  59. 59. ハイパーバイザーのメモリ管理効率化技法
  60. 60. オーバーコミットの技法 (再掲) いくつかの技術の組み合わせで実現されています ページ共有 バルーニング ホスト ページン グ Hot-Add メモリ (ハイパーバイザー スワップ)60
  61. 61. ページ共有 仮想マシン間で内容が同じページを共有 ページを定期的にスキャンしてハッシュ値を計算 ハッシュ値が一致した場合、ページ内容を ビット単位で改めて比較して、同一性を判定61
  62. 62. バルーニング VM 1 VM 2 空き VM 1 から 空き 回収した メモリ 増強 確保 増強 回収 使用中 回収 使用中 確保 「バルーン ドライバー」が確保したメモリを 他の VM に「横流し」することで有効活用62
  63. 63. ホスト ページング デマンド ページング方式による仮想記憶を ハイパーバイザー レベルで実装したもの ゲスト仮想アドレス (GVA)ゲスト OS 通常のページング 二段階の仮想マシン ページング ゲスト物理メモリ ページ ファイルハイパーバイザー ここでもページング (ホスト ページング)物理マシン 実際の物理メモリ ページ ファイル63
  64. 64. あえて星取り表を作ってみます VMware Hyper-V Xen KVM ESX ページ共有 バルーニング ホスト ページング Hot-Add64
  65. 65. Hyper-V は が尐ない じゃないか65
  66. 66. Hyper-V のオーバーコミット ページ共有もホスト ページングもしません ページ共有 バルーニング ホスト ページン グ Hot-Add メモリ (ハイパーバイザー スワップ)66
  67. 67. ページ共有の概念図 VM 1 VM 2 VMのメモリ ホストの VMのメモリ 物理メモリ ページ フレーム ページ ページ フレーム ページ ページ ページ ページ フレーム 共有! ページ フレーム ページ 共通部分 ページ フレーム ページ 共通部分 ページ ページ ページ ページ ページ ページ ページ 全VMのメモリを歩き回って ページ ページ 「同じページ」を探す ページ67
  68. 68. 同じ内容のページでも 即座に共有されるわけではない VM 1 VM 2 VMのメモリ ホストの VMのメモリ 物理メモリ ページ フレーム ページ ページ フレーム ページ ページ VM 1の ページ フレーム メモリ ページ フレーム ページ VM2と VM1と ページ フレーム ページ 共通部分 同じ内容 同じ内容 ページ フレーム ページ ページ VM 2の ページ フレーム メモリ ページ フレーム ページ ページ フレーム ページ ページ ページ 共通部分が「発見」されるまでは共有できない68
  69. 69. 一旦ページが共有されても 例えば、片方のVMが再起動したら? あるいは、片方だけメモリの内容が変わったら? どうなるでしょう?69
  70. 70. ページ共有の解除 VM 1 VM 2 VMのメモリ ホストの VMのメモリ 物理メモリ ページ フレーム ページ ページ フレーム ページ コピーが ページ VM 1の ページ フレーム 必要 メモリ ページ フレーム ページ 共通だった 共有 内容 ページ 解除 フレーム ページ 共通部分 部分 変わった! ページ フレーム ページ ページ VM 2の ページ フレーム メモリ ページ フレーム ページ ページ フレーム ページ ページ ページ70
  71. 71. ページ共有について ラージ ページは共有しづらい! 4 4 KB のページ 2,097,152 / 4,096 = 512 2 MB のページ 1 ページの 大きさが 512 倍71
  72. 72. ページ共有について VMware さんのドキュメントより “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 ページの全ビットを比較するオーバーヘッドが大きいから http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf72
  73. 73. ページ共有について Windows とラージ ページ  Windows Vista, Windows 7 はラージ ページを利用します  Windows Server 2008 / 2008 R2 もラージ ページを利用します  Hyper-V R2 自身も、ラージページを使用します ラージ ページが一般化すると 現在行われているような ページ共有は有用性が 低下するということです73
  74. 74. ホスト ページングについて KVM の生みの親 Avi Kivity 氏のブログより http://avikivity.blogspot.com/2008/04/memory-overcommit-with-kvm.html Swapping is used as a last resort in order to guarantee that services to not fail. 「スワッピングはサービス停止を防ぐための最後の手段だ」 VMware さんのドキュメントより http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf “hypervisor swapping is used as a last resort to reclaim memory from the virtual machine” 「スワッピングは仮想マシンからメモリを回収するための最後の手段だ」 74
  75. 75. last resort 最後の手段75
  76. 76. なぜ、最後の手段なのか KY なページング 「ダブル ページング」76
  77. 77. KY なページング ゲスト OS に依存しないゆえ ハイパーバイザーは、仮想マシンの 物理メモリが、ゲスト OS 上で持っている 「意味」まで察することはできません 容赦なくページアウト 「ロックされたページ」や、「非ページ プール」の ような、「ページ アウトされては困るページ」も ハイパーバイザーからは「ただのページ」 これは、ゲスト OS の性能に深刻な影響を与えます77
  78. 78. ダブル ページング ハイパーバイザーとゲストが同じページに対して 「噛み合わないページング」をしてしまうこと ゲスト仮想アドレス (GVA)ゲスト OS ページ A仮想マシン ゲスト物理メモリ ページ ファイルハイパーバイザー ページ A物理マシン 実際の物理メモリ ページ ファイル78
  79. 79. ダブル ページング 実は古くから知られていた問題 “The double paging anomaly” 著者の Goldberg 氏は 仮想化界の大御所 Year of Publication: 197479
  80. 80. Hyper-V ではロックしてます 仮想マシン用のメモリは、 ペアレント OS 内の winhv.sys というデバイス ドライバーが確保 ページ アウトされないように がっちりとロックしています80
  81. 81. 何度か引用したこの文書 http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf とても実用的で良い文書だと思います81
  82. 82. 例えばオーバーコミットに関して Host memory size should be larger than guest memory usage. ホストのメモリ サイズは、ゲストのメモリ使用量以上であるべきだ http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf 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 オーバーコミットできるとはいっても 「無い袖を振ってはいけない」 82
  83. 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 オーバー コミットできるからといって、 ゲストに適当に多めのメモリを与えて良いわけではない 83
  84. 84. 同感です84
  85. 85. つまり ページ共有は、ラージ ページの一般化という状況の 変化に伴って有用性が失われつつあります ホスト ページングは、性能に悪影響があるため、 「あくまで最後の手段」です 「仮想マシンの集約率を上げる」主たる方法ではありません 使わずにすめばそれに越したことはありません 「無い袖は振らない」範囲で、適切な量のメモリを 賢く仮想マシンに分配する仕組みが必要です85
  86. 86. それが Dynamic Memory なのです86
  87. 87. Dynamic Memory登場!
  88. 88. まずは基本情報 ペアレント側の要件 Windows Server 2008 R2 SP1 が必要です 無償の Hyper-V Server 2008 R2 SP1 でも OK! サポートされるゲスト OS Windows Server 2003, 2008 & 2008 R2 対応エディション: Web, Standard, Enterprise, Datacenter 32 / 64 ビット双方に対応 Windows Vista と Windows 7 Enterprise と Ultimate 同じく、32 / 64 ビット双方に対応88
  89. 89. Dynamic Memory (DM) 概念図 ペアレント VM 1 VM 2 パーティション DM VSC DM VSC vmms.exe VMBus VMBus メモリ バランサー Windows Windows メモリ マネージャー メモリ マネージャー DM VSP DM VSP GMO メモリ GMO メモリ ゲスト ページ ゲスト ページ マネージャー マネージャー 物理メモリ ファイル 物理メモリ ファイル  Dynamic Memory は、ホストとゲストが vmwp.exe vmwp.exe 緊密に連携して、メモリの効率的な VMBus 割り当てを実現する  ホスト側モジュールは、SP1 を適用すること システム物理メモリ でインストールされる  ゲスト側は SP1 の統合サービスをインス トールすることで有効になる89
  90. 90. DM 構成要素 - VSP と VSC ペアレント VM 1 VM 2 パーティション DM VSC DM VSC vmms.exe VMBus VMBus メモリ バランサー Windows Windows メモリ マネージャー メモリ マネージャー DM VSP DM VSP GMO メモリ GMO メモリ ゲスト ページ ゲスト ページ マネージャー マネージャー 物理メモリ ファイル 物理メモリ ファイル  DM VSC vmwp.exe vmwp.exe  ゲスト OS のカーネル モードで動作  メモリの使用状況をペアレントへ通知 VMBus  Hot-Add とバルーニングを実行 システム物理メモリ  DM VSP  ペアレント OS の ユーザー モード プ ロセスである vmwp.exe 内で動作  VSC から受け取ったメモリ使用状況を90 バランサーへ伝える
  91. 91. DM 構成要素 - メモリ バランサー ペアレント VM 1 VM 2 パーティション DM VSC DM VSC vmms.exe VMBus VMBus メモリ バランサー Windows Windows メモリ マネージャー メモリ マネージャー DM VSP DM VSP GMO メモリ GMO メモリ ゲスト ページ ゲスト ページ マネージャー マネージャー 物理メモリ ファイル 物理メモリ ファイル  メモリ バランサー vmwp.exe vmwp.exe  VM のメモリ使用状況を収集 VMBus  いずれかの VM がメモリを必要として いたら、VSP と連携し、他の VM から システム物理メモリ バルーニングでメモリを回収  十分なメモリが回収できたら、 それをメモリが足りていない VM へ Hot-Add する91
  92. 92. DM 構成要素 - GMO MM ペアレント VM 1 VM 2 パーティション DM VSC DM VSC vmms.exe VMBus VMBus メモリ バランサー Windows Windows メモリ マネージャー メモリ マネージャー DM VSP DM VSP GMO メモリ GMO メモリ ゲスト ページ ゲスト ページ マネージャー マネージャー 物理メモリ ファイル 物理メモリ ファイル  GMO メモリ マネージャー vmwp.exe vmwp.exe  VM のメモリ マップを管理 VMBus  どの部分がバルーニングされているかを 常に把握 システム物理メモリ92
  93. 93. Dynamic Memory のポリシー ホスト ページングしな 無い袖は振らない い キーとなるテクノロジ二つ Hot-Add メモリ バルーニング VM へ動的にメモリを追加 VM から余剰メモリを回収93
  94. 94. Hot-Add メモリ 元々は大規模・高信頼システム向けの機能 メモリ・CPU の動的な追加および交換 Hot-Add Hot-Replace メモリ メモリ Hot-Add Hot-Replace CPU CPU ※ 写真はイメージで す まさか仮想マシン環境で活用されようとは!94
  95. 95. なぜ Hot-Add メモリ? Hyper-V はホスト ページングをしないからですホスト ページングをしない場合 仮想マシンを起動した 仮想マシンに 瞬間から物理メモリを 2 GB メモリ 本当に 2 GB 割り当てる 定義ホスト ページングをする場合 ゲスト OS には 2 GB 仮想マシンに あるように見せつつ、 2 GB メモリ 実際には尐しずつ 定義 割り当てている95
  96. 96. 小さく産んで大きく育てる ホスト ページングしたほうが良いのか? いやしかし、そのデメリットは前述の通り ならば、最小限のメモリで起動して 必要に応じて増やしていこう 1536 MB 1024 MB 512 MB メモリ メモリ 追加! 追加!96
  97. 97. メモリの 追加は Hot-Add97
  98. 98. 増える一方では 困ります98
  99. 99. バルーニングでメモリを回収 ペアレント パーティション バルーニング vmms.exe VM 1  DM VSC が物理メモリを メモリ 「確保」 バランサー DM VSC  ページ アウトされない Windows ようにロックする DM VSP メモリ マネージャー  「確保」されたゲスト 物理メモリに対応する GMO メモリ ゲスト物理メモリ システム物理メモリは、 マネージャー 使用中 ペアレントに「回収」 されたことになる 回収  「回収」されたメモリ vmwp.exe 回収 は他の仮想マシンで 使用中 利用できる システム物理メモリ 使用中 使用中99
  100. 100. Dynamic Memory の設定仮想マシン 起動時の 初期メモリ量 Hot-Add の上限 バッファー (割合) 優先度100
  101. 101. スクリプトでの設定 WMI のクラスにプロパティが追加されています rootvirtualization Msvm_VirtualSystemSettingData クラスプロパティ名 GUI での対応する項目 取り得る値DynamicMemoryEnabled 「動的」のラジオボタン True, FalseVirtualQuantity スタートアップ RAMReservation 無し 8 - 65536 (Startup RAM と同じになる)Limit 最大 RAM 8 – 65536Weight 優先度 1 – 1000TargetMemoryBuffer バッファー 5 - 95101
  102. 102. スクリプトでだけ可能な設定 起動時 最大 予約(VirtualQuantity) (Limit) (Reservation) DM VM DM VM DM VM 1024 MB 512 MB 256 MB 起動時メモリとは別に、最低予約メモリを設定可能102
  103. 103. メモリの監視は要注意 ゲストの空きメモリを監視しても 状況を正しく判断できません 空きが 一定割合に なるように 増減する! DM VM DM VM DM VM DM VM 空き 空き 空き 空き 使用中 使用中 使用中 使用中103
  104. 104. パフォーマンス カウンターHyper-V Dynamic Memory Balancer  ペアレント パーティションのメモリ バランサーの情報  Available Memory  Average Pressure  Added Memory  Removed MemoryHyper-V Dynamic Memory VM  仮想マシン毎のメモリ割当状況の情報  Guest Visible Physical Memory  Physical Memory  Added Memory  Removed Memory104
  105. 105. パフォーマンス カウンターの例 Hypre-V Dynamic Memory VMPhysical Memory バルーニングによる「中抜き」を考慮した実質的な 実装メモリ量を表示105
  106. 106. 親の分、残しておいて! 小さな空きメモリのかけらも 無駄なくゲストに割り当ててしまうので ペアレント (ホスト) OS 用のメモリが残らない MemoryReserve の設定をしてください HKLMSOFTWAREMicrosoftWindows NTCurrentVersionVirtualization 値: MemoryReserve 型: DWORD データ: ゲストに渡さないメモリ量 (MB)106
  107. 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=ja107
  108. 108.  Dynamic Memory によって、仮想マシンに割り当てるメモリを動的に増減する ことが可能になります。(ゲスト OS の稼働中に Hyper-V が自動的に調節します)  これにより、各仮想マシンに割り当てるメモリ量を 「その時点で必要な最低限のサイズ」に常に調整することができます。  「仮想マシン内で使われずに余っているメモリ」を削減できます 。 (どの程度の空きを残すかは調整可能です)  これによって、メモリ割り当ての無駄がなくなり、結果として集約率が向上します Dynamic Memroy 無効 Dynamic Memory 有効 VM-1 VM-2 VM-3 VM-1 VM-2 VM-3 VM-4 VM-5 空きメモリ 空きメモリ空きメモリ 最低限の空き 最低限の空き 最低限の空き 最低限の空き 最低限の空き 使用中 使用中 使用中 使用中 使用中 使用中 使用中 使用中ホスト・ゲストのバージョン Dynamic Memory の効果 弊社検証結果より Dynamic Memory はホスト/ゲストが 6コア Xeon 2基 85 VM 120 VM 連携してメモリを最適化する機能です CPU (24スレッド) 双方が対応している必要があります メモリ 96GB 40%ホスト Windows Server 2008 R2 SP1 向上 ゲストOS Windows 7 Windows Vista 以降 (クライアントOS)ゲスト Dynamic Memory Dynamic Memory Windows Server 2003 SP2 以降 (サーバーOS) 無効 (2008 R2) 有効 (2008 R2 SP1) 108
  109. 109. 関連セッション T2-301:ついに登場!RemoteFX で実現する 強化された MS VDI のアーキテクチャ T2-402: あなたの Hyper-V 環境を最大限使い切る方法 ~ Hyper-V 設定にまつわる Tips ~ T3-307: System Center Virtual Machine Manager 2008 R2 の 徹底活用方法 T3-305: System Center Operations Manager 2007 R2 アーキテクチャと実践的な活用手法 T3-301: Data Protection Manager 2010 を活用した Hyper-V のバックアップ T3-306: System Center Service Manager 2010 による ITIL の実践 ~ CMDB とサービス デスクを中心に~109
  110. 110. リファレンス (1/1) RAM, Virtual Memory, Pagefile and all that stuff http://support.microsoft.com/kb/2267427/en-us Understanding Memory Resource Management in VMware ESX 4.1 http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf Satori: Enlightened page sharing http://www.usenix.org/events/usenix 09/tech/full_papers/milos/milos_html/ Memory overcommit with kvm http://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.html110
  111. 111. リファレンス (2/2) Pushing the Limits of Windows: Virtual Memory http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx Pushing the Limits of Windows: Physical Memory http://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 Hotplug http://www.kernel.org/doc/ols/2006/ols 2006v2-pages-313-320.pdf The double paging anomaly http://portal.acm.org/citation.cfm?id=1500215111
  112. 112. Dynamic Memory 関連ブログ Dynamic Memory Coming To Hyper-V http://blogs.technet.com/b/virtualization/archive/2010/03/18/dynamic-memory-coming-to-hyper-v.aspx Dynamic Memory Coming to Hyper-V Part 2 http://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 3 http://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 4 http://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 5 http://blogs.technet.com/b/virtualization/archive/2010/05/20/dynamic-memory-coming-to-hyper-v-part-5.aspx112
  113. 113. ご清聴ありがとうございました。 T2-401アンケートにご協力ください。
  114. 114. © 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.

×