Oct 02, 2009
不妊治療の前に必ず不妊の検査が必要です。
不妊の原因をいくつかの理由がある。不妊の原因を把握するためには、不妊検査が必要です。また、夫婦のどこかに原因があることを確認できない場合は、夫婦共に不妊検査が必要です。また、男性より女性の不妊検査のものが種類が多いのに時間がかかることがあります。とにかく、不妊治療を開始するためには、不妊検査が最初にする必要があります。これまで、お昼頃になぜかTVを見ていたのですが、その時に不妊病院に通って続けて夫婦をしていました。その夫婦は子供がほしいが、3回続けて流産をしてしまい、不妊病院に通って続けてやっと赤ちゃんを授かることができます。私は良かったなぁと思って、子どもを産むというすごいんだなと思いました。
米MicrosoftはHyper-VのDynamic Memory機能により、仮想化における長年の問題の1つを解決しようとしている。それは、「仮想マシン(VM)にいかに効率的にメモリを割り当てるか」という問題だ。仮想マシンに必要なメモリ量は常に一定ではないところにこの問題の難しさがある。
メモリは依然として、真っ先に枯渇しやすい重要なリソースだ。このため、メモリが少ない場合、VMの集約率が低くなる。また、アプリケーションオーナーは管理者に、アプリケーションにできるだけ多くのメモリを割り当ててほしいと要求しがちだ。そのように割り当てる必要がない場合でもだ。
ユーザーが大量のメモリを用意し、VMが必要なときに必要なだけオンデマンドでそれを使えるようにできれば理想的だろう。しかし、Hyper-Vでは、以前はそうすることができなかった。電源投入時にVMに4Gバイトのメモリを割り当てると、それだけのメモリ量が必要かどうかにかかわらず、VMは4Gバイトのメモリを確保し、電源を切られるまでHyper-Vに返さなかった。そのために必然的に、Hyper-VではVM集約率が競合製品よりも低くなり、メモリの効率的な割り当ては困難だった。
だが、MicrosoftはHyper-V R2 Service Pack 1(SP1)で、Dynamic Memory機能を導入した。Dynamic Memoryのアプローチは、主要な競合ハイパーバイザーであるVMware ESXのメモリオーバーコミット機能とは大きく異なる。Microsoftは以前から、物理的に存在するメモリよりも多くの仮想メモリをVMにコミットするのは「危険」だと主張してきた。全てのVMが、コミットされたメモリ量を同時に要求する可能性があるからだ。メモリオーバーコミットが本当に危険なのかどうかはさておき(ストレージなど他のIT分野でも、オーバーサブスクリプションが一般的に行われている)、Microsoftのスタンスは、Microsoftコミュニティーで支持されている。
Dynamic Memoryは基本的に、ゲストOSの管理システムを利用して、VMへの動的なメモリ割り当てという目的を達成する。最近のほとんどの物理サーバおよびOSでは、稼働中にメモリを追加・削減でき、Dynamic Memoryはこの機能に依存している。この機能に基づくDynamic Memoryの仕組みにより、Hyper-Vは稼働中のVMのメモリを増減できるのだ。
Hyper-Vは、サーバが起動すると空きメモリのプールを提供する。VMはこのプールからメモリを割り当てられる。Hyper-Vホスト自体がより多くのメモリを必要とすると、やはり同様にこのプールからメモリが追加される。Dynamic Memoryがメモリオーバーコミットと異なるのは、Hyper-VはVMに、プール内で物理的に使用可能な量よりも多くのメモリを割り当てない点だ。また、VMからシステムへのメモリの回収は、ゲストOSのホットアドおよびホットリムーブ機能を利用して行われる。このアプローチのメリットを評価するため、Dynamic Memoryを利用するための要件を見てみよう。
まず、Hyper-Vと既存のWindows VMにSP1を適用しておかなければならない。Windows 7とWindows Server 2008 R2の新しいリリースは、既にSP1が適用された状態でインストールできる。
次に、個々のVMについてHyper-Vを有効にしておく。デフォルトでは全てのVMが、固定的にメモリを割り当てる静的モデルに従っている。
VMは起動時に、[スタートアップRAM]で指定された量のメモリを割り当てられる(図1)。Dynamic Memoryは、ゲストOSでロードされるサービスとドライバに依存するため、起動プロセスのためだけにメモリ割り当てが必要になる。これは悩ましい問題だ。ゲストOSが起動するまでDynamic Memoryは機能しないが、ゲストOSが起動するにはメモリが必要だからだ。ユーザーがスタートアップRAMとして、ゲストOSの起動と、通常のオペレーションのためのアプリケーションをカバーする大量のメモリを割り当てることを勧める人がほとんどだが、その場合、Dynamic Memoryは“バースト”要求に対処しなくてはならない。Microsoftの公式見解は、スタートアップRAMとして、OSの要求をカバーするのに十分な量を割り当てるだけでよいというものだ。
VMの[最大RAM]も指定しなければならない。この値が、VMにプールから割り当てられるメモリ量の上限になる。この値は最大で64Gバイトまで指定できる。
ユーザーは、[メモリバッファ](バッファとして予約するメモリの割合)も指定できる。このバッファは、Dynamic Memory自体のメモリ割り当ておよび割り当て解除プロセスによるオーバーヘッドを相殺することを目的としている。VMのメモリ領域全体に対する空きメモリ領域の割合がこの指定値になるように、VMにメモリが割り当てられる。
このメモリバッファは、デフォルトでは20%となっている。例えば、VMの最大RAMが16Gバイトで、4Gバイトのメモリを使っていると、バッファとして1Gバイトのメモリ(20%÷(100%−20%)×4Gバイト=1Gバイト)が追加で割り当てられ、合計で5Gバイトのメモリが割り当てられることになる。VM内のメモリ要求が増えると、それに比例してバッファも設定上の上限に達するまで増える。Hyper-Vホストでメモリが足りなくなると、ホストはこのバッファを犠牲にして、コミットされたメモリへの要求に優先的に対応する。このバッファは、Dynamic Memoryが機能を果たす必要がないときも、汎用キャッシュとしてパフォーマンス向上のために使用される。
このバッファについては、「Dynamic Memoryを機能させるために、VMの必要メモリがデフォルトの場合で20%も増えてしまう」という見方がある一方、「メモリが余分に必要になるが、Dynamic Memoryの管理性の向上というメリットがある」という意見もある。
また、Dynamic Memoryは、前述したように、ゲストOSの管理システムを利用する仕組みになっており、サポートされている特定のゲストOSが動作するVMにのみ適用できる。これに対し、ハイパーバイザーによって完全にコントロールされるメモリ管理ソリューションは、ほとんどの企業データセンターで一般的に使われる各種OSとの互換性が高いという利点がある。
どのようなメモリ管理ソリューションも、設定を行うIT管理者が監視や管理を適切に行わなければ、パフォーマンス低下を招く恐れがある。ソリューションの長所と短所を理解した上で、問題を未然に回避できるように管理者に対処を促すアラートが発行される、効果的な監視システムを作ることが重要だ。
※関連記事:Hyper-VとVMwareのメモリ管理の違い
⇒http://techtarget.itmedia.co.jp/tt/news/1103/08/news03.html
WriteBacks
writeback message: Ready to post a comment.