Dynamic Memoryの効果

サービス開発者から見たWindows Server 2008 R2 Service Pack-Vol.2

GMO最新ネット業界レポート ソリューション編。『サービス開発者から見たWindows Server 2008 R2 Service Pack 1』とし前回は、品質を落とすことなくサーバーの安定性向上を期待出来るDynamic MemoryについてGMOインターネット株式会社 事業本部 樋口 勝一が執筆。今回はDynamic Memoryの効果について語る。

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
となります。

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

これがまさにDynamic Memoryの効果です。

(動画でご覧いただけます。)

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

*本文中に記載されている会社名および商品名・サービス名は、各社の商標 または登録商標です。

著書の紹介欄

Hyper-Vで本格的なサーバー仮想環境を構築。仮想環境を設定・操作できる!

できるPRO Windows Server 2016 Hyper-V

◇Hyper-Vのさまざまな機能がわかる ◇インストールからの操作手順を解説 ◇チェックポイントやレプリカも活用できる Windows Server 2016 Hyper-Vは、仮想化ソフトウェア基盤を提供する機能であり、クラウドの実現に不可欠のものです。 本書では、仮想化の基礎知識から、Hyper-Vでの仮想マシンや仮想スイッチの設定・操作、プライベートクラウドの構築、Azureとの連携などを解説します。

初めてのWindows Azure Pack本が発売

Windows Azure Pack プライベートクラウド構築ガイド

本書は、Windows Azure PackとHyper-Vを利用し、企業内IaaS(仮想マシン提供サービス)を構成するための、IT管理者に向けた手引書です。試用したサーバーは、最小限度の物理サーバーと仮想マシンで構成しています。Windows Azure Packに必要なコンポーネントのダウンロード、実際にプライベートクラウド構築する過程を、手順を追って解説しています。これからプライベートクラウドの構築を検討するうえで、作業負担の軽減に役立つ一冊です。

ブログの著者欄

樋口 勝一

GMOインターネット株式会社

1999年6月GMOインターネットに入社。Windows Serverをプラットフォームとしたサービス開発から運用・保守まで幅広く担当。講演登壇や出版、ネット記事連載などでマイクロソフト社と強い信頼関係を構築。2007年より「マイクロソフトMVPアワード」を受賞し、インターネットソリューションのスペシャリストとして活躍。

関連記事