WIN1@Codename

Codename

サービス開発者から見たWindows Server 2008 R2 Service Pack 1 その2

Dynamic Memoryの効果

・設定概要

では実際にDynamic Memory がどのようにその効果を発揮するのかその様子をデモ動画で見てみたいとおもます。 と、その前に、Dynamic Memoryの設定方法を紹介したいと思います。「そんなのHyper-Vマネージャーから簡単にできますよ」とおっしゃる方がいらっしゃると思いますが、そこはGMO最新ネット業界レポートですので、通常の設定方法とは違ったアプローチで設定を行いたいと思います。

今回はDynamic Memoryの効果を見やすくするためのデモということで、極端な設定値としています。 まず24GBのメモリを搭載したHyper-Vのホスト上で仮想マシンを作成し、「スタートアップRAM」と「最大RAM」を16GBとしました。 通常Hyper-Vマネージャーではここまでの設定しかできませんが、WMI経由でプログラムマチックにアプローチした場合、「Reservation」という項目を設定することができます。これはいわゆる最低メモリと考えていただければよいです。 Hyper-Vマネージャーから「スタートアップRAM」と「最大RAM」を設定した場合、自動的に「Reservation」の値は「スタートアップRAM」と同じ値に設定されるようになっています。なので、実は今回のようにHyper-Vマネージャーから「スタートアップRAM」と「最大RAM」を16GBとした場合、起動直後から、シャットダウンするまで仮想マシンのために確保されるメモリは実はずっと16GBのままなのです。 これではせっかくのDynamic Memoryの効果がありません。

サービス提供を行う場合は、ユーザーの方には常にサービスで約束された機能、パフォーマンスを提供しなければなりません。お名前Windowsデスクトップでは現在仮想マシンごとに1GBのメモリを提供しています。起動時~終了までこの1GBのメモリはいつでも使えるよう、また、不足ないことがユーザーにいつでも確認できるようにする必要があります。

「スタートアップRAM」を512MB、「最大RAM」を1GBとした場合、パフォーマンス的には、「スタートアップRAM」と「最大RAM」をともに1GBとした場合と差はありません。 あくまでもDynamic Memoryの効果はユーザー側ではなく、ホスト側で明示的に確認されるものであり、ユーザーにとっては常に1GBのメモリが使用、確認できることが必須となります。「スタートアップRAM」を512MB、「最大RAM」を1GBとした場合、仮想マシンのタスクマネージャーで見てみると初期起動時には物理メモリの合計が511MBとなっています。

「スタートアップRAM」を512MB、
「最大RAM」を1GBに設定

 

物理メモリの合計は511MB

Dynamic Memoryではユーザーの使用度合いに応じて「最大RAM」までメモリを動的に追加していくのでパフォーマンスとしては問題なのですが、仮想マシンのタスクマネージャーで見た場合これではユーザーとしては「1GBあるはずのメモリがきちんと提供されていないのではないか?」といったことになってしまいます。

これらを踏まえると、Dynamic Memory使用時であっても仮想マシンの「スタートアップRAM」は1GB、かつ「最大RAM」も1GBという設定値がサービス提供する上では必須となります。 ですが先ほどの理由によりこの設定ではDynamic Memoryの効果がありません。 これを解決するのが「Reservation」の設定となります。 「Reservation」を設定することで、仮想マシンの起動後、メモリの使用がなければHyper-Vのホストは「Reservation」の設定値まで仮想マシンから未使用のメモリを回収することになります。 実際に「Reservation」を設定した場合のHyper-Vマネージャの設定画面です。

「スタートアップメモリと最小メモリの容量が等しくありません。~」との
注意メッセージが表示される

動的項目の下に「スタートアップメモリと最小メモリの容量が等しくありません。~」との注意メッセージが表示されていますが、意図的にスタートアップメモリと最小メモリを異なる値としているので問題ありません。 この設定時の仮想マシンのタスクマネージャーでは初期起動時から物理メモリの合計はきちんと1023MBとなっています。これでDynamic Memory使用時であっても、ユーザーには以前と変わらない状態でのサービス提供が可能となります。


「スタートアップRAM」16GB
「最大RAM」16GB
「Reservation」1GB

・実際の効果

今回のデモではその効果を分かりやすくするため以下の設定値としています。

 「スタートアップRAM」16GB
 「最大RAM」16GB
 「Reservation」1GB
となります。

この設定で期待する動きとしては、起動時16GBのメモリで仮想マシンが実行し、未使用分のメモリが「Reservation」の設定値1GBまで(15GB)Hyper-Vのホストに回収される、というものです。この効果をデモで実行したのが以下の動画となります。 この動画はHyper-Vホストのタスクマネージャを録画したものです。24GBのメモリが搭載されています。 仮想マシンの起動時に一気に16GBメモリが消費されています。 その後「Reservation」に設定された1GBまで未使用分のメモリが仮想マシンから回収され、ホストマシンにメモリが戻ってきているのが分かります。

Dynamic Memory

これがまさにDynamic Memoryの効果です。
(動画でご覧いただけます。)

以上のように、サービスを提供する上でDynamic Memoryはサービス提供者にとって非常に有用な機能となりますが、ユーザーに対し既存サービスの質を落とすことなく実装するには通常の設定以外でも少々コツがいることがお分かりいただけたと思います。 次回は具体的にWMIを使用しての「Reservation」の設定方法をご紹介したいと思います。

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/185-8f3db925
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad