2014/08/28

Hyper-Vでいうところの、メモリ・オーバーコミット

vSphere用語:Memory Overcommitment(:メモリ・オーバーコミット)
Hyper-V用語:Dynamic Memory(:動的メモリ)


両者は、仕組みは違いますが、目的(=やりたいこと)は一緒。

[英語]
http://technet.microsoft.com/en-us/library/hh831766.aspx

[日本語]
http://technet.microsoft.com/ja-jp/library/hh831766.aspx
http://www.atmarkit.co.jp/ait/articles/1103/03/news108.html

[対象となる仮想マシンのOS]
Linux
Windowsは、Vista SP1以降、Windows Server 2003 SP2以降。(細かいところは上記[英語]のリンクをクリック。下の方に一覧が出てくる)。



さて、メモリ・オーバーコミット関連でいうと、vSphereとHyper-Vとで、vSphereだけが持つ機能もある。たとえば、最も効果があるものでいえば、Transparent Page Sharing(TPS:透過的ページ共有)。TPS以外、たとえば「メモリ圧縮」や「スワッピング」は効果はあるだろうけど、動作原理上のデメリットも鑑みると、TPSに比べれば微少だろう。

TPSは「「同じOS、同じアプリ」に対して同じような負荷が、並列で多数、たとえばOSインスタンス100個とかに、かかっている場合」に最も効果が発揮される。たとえばVirtual Desktop Infrastructure(VDI:仮想デスクトップ)とか。

なので、1台の物理サーバ上に、サーバ用途っつーことで、OSインスタンスがせいぜい10〜20個程度で、しかもアプリケーションがバラバラの場合は、大きな効果が出にくい。無論これに、異なるOSが混在する、とかの前提が加わったら、さらに効果が出にくい。



ちと横道に:
VDIの場合、たしかにTPSは絶大な効果を出すことが多いのだけど、イマドキのサーバ機は物理メモリを大量に搭載できることもあり、メモリが足りなくなる前にCPUがボトルネックになることが多いですよ。2014年8月時点での筆者の知見による目安は、8 OSインスタンス/コア、程度。コレを上回るOSインスタンス数だとCPUボトルネックになっちゃうから、TPSが効いていようがいまいがメモリは関係なくなっちゃう。ま、メモリをたっぷり確保しちゃうアプリケーションを使うのであれば、この限りではないわけですが。