[System Environment] | |||||||||||
Hyper-VのDynamic Memoryで親パーティション用のメモリを予約する
|
|||||||||||
|
解説 |
Windows Server 2008 R2 SP1のHyper-Vには、新しくDynamic Memoryという機能が追加されている。これは、各仮想マシンに割り当てるメモリの量を実行時に動的に制御する機能である。以前のHyper-Vでは、仮想マシンに割り当てるメモリの量は、仮想マシンの作成時に固定的に決めるしかなかった。そのため、仮想マシンの運用計画を立てる場合は、それぞれの仮想マシンが必要とするメモリ・サイズを事前に慎重に見積もっておく必要があった。だがDynamic Memoryを利用すると、各仮想マシンのメモリ需要に応じて動的にメモリが配分されるようになる。詳細は次の記事を参照していただきたい。
- メモリ管理機能が強化されたHyper-VのDynamic Memory(連載Windows Server 2008 R2の真価)
【注:】この記事中で当初公開していた予約メモリ・サイズのレジストリ名には一部間違いが含まれておりました(すでに訂正済み)。本TIPS中で公開しているレジストリ名が正しい名前ですので、ご注意ください。
Dynamic Memoryを利用すると、Hyper-Vのサーバにおけるメモリ管理は動的に行われるようになり、システムに搭載されているメモリが有効に活用される。その一方で、親パーティションのWindows Server 2008 R2に割り当てられるメモリも削減され、ゲスト仮想マシンになるべく多く割り当てられるようになる。
Hyper-Vの実行専用のサーバならこれでも問題はないだろうが、親パーティション上でメモリを多く使うアプリケーションなどを起動する予定があるならば(もしくはパフォーマンス改善のために、ディスク・キャッシュ用に多くのメモリを残しておきたいのなら)、親パーティション用のメモリもあらかじめ予約しておきたい。だがHyper-Vの管理ツールではこのような設定はできない。代わりに、レジストリを設定することで、親パーティション用に割り当てるメモリのサイズを固定的に設定できる。本TIPSではその方法を紹介する。
操作方法 |
[注意] |
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。 |
Windows Server 2008 R2 SP1のHyper-Vにおいて、親パーティション用に割り当てるメモリのサイズは、次のレジストリで設定できる。
項目 | 内容 |
キー | HKEY_LOCAL_MACHINEの \SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization |
値の名前 | MemoryReserve |
型 | REG_DWORD |
値 | 親パーティションのために残しておくメモリのサイズ(Mbytes単位) |
親パーティションのために残しておくメモリ・サイズの指定 | |
ここで指定したサイズのメモリが親パーティション専用に割り当てられる。 【注:】前掲の記事では、当初、値の名前を「MemReserve」と記述しておりましたが、正しくはこの表のように「MemoryReserve」です(当該記事はすでに修正済み)。 |
DWORD型の値MemoryReserveに、親パーティションに割り当てるメモリのサイズをMbytes単位で記述しておく。例えば4Gbytes割り当てたければ、「4096」(10進数)をセットする。レジストリの設定後はシステムを再起動する。
なおWindows Server 2008 R2 SP1のHyper-Vではなく、従来の(Dynamic Memoryが利用できない)Hyper-Vの場合は、仮想マシンに割り当てるメモリは常に固定サイズになる。親パーティションに割り当てるメモリ・サイズを固定したければ、各仮想マシンに割り当てるメモリ・サイズを調整すればよい。
レジストリ設定の効果
以下は、4096(4Gbytes)という値をMemoryReserveにセットして起動したWindows Server 2008 R2 SP1のHyper-V管理ツールの画面例である。サーバ・ハードウェア自体には10Gbytesのメモリがあるが、4Gbytesが親パーティションに割り当てられているので、仮想マシンで利用可能なメモリは多くても6Gbytesまでになる。仮想マシンに割り当てるメモリが不足し、これ以上仮想マシンを起動できない状態になっている。
メモリ不足で仮想マシンが起動できない場合の管理画面 | |||||||||
|
このときの親パーティション上のWindows Server 2008 R2 SP1のタスク・マネージャを見ると(次の画面参照)、まだ空きメモリが2.2Gbytes以上あり、十分なメモリが残されていることが分かる。
親パーティションに4Gbytes残した場合の例 | |||||||||
これは、親パーティション上のWindows Server 2008 R2のタスク・マネージャの画面。親パーティションには常に4Gbytesのメモリが割り当てられ、仮想マシンには最大でも6Gbytesしか割り当てられない。親パーティション上のWindows Server 2008 R2では十分なサイズのディスク・キャッシュが利用できる(Windows OSでは、空きメモリは可能な限りディスク・キャッシュとして利用されるようになっている)。 | |||||||||
|
もしMemoryReserveのレジストリ値を設定していないと、仮想マシンは多く起動できるが(9Gbytes以上まで割り当て可能)、親パーティションはメモリ不足になりやすい。例えばディスク・キャッシュのサイズなども抑えられ、親パーティションにおけるファイル入出力や仮想ディスク・ファイルの入出力のパフォーマンスなどが低下する可能性がある(デフォルトでは、全メモリの5%程度が親パーティションのために残され、それ以外はすべて仮想マシンへ優先的に割り当てられるようである。詳細は先の記事参照)。次の画面は同じマシンにおいて、レジストリを設定していない場合の親パーティションのタスク・マネージャの例である。キャッシュ・サイズなどに余裕があるのが分かるだろう。
親パーティションに予約しなかった場合の例 | ||||||
先ほどと同じシステムであるが、レジストリ値は設定していないので、より多くの仮想マシンが起動できる。Hyper-Vの管理ツールで確認すると、仮想マシン全体で9.2Gbytesのメモリが割り当てられている。そのときの親パーティションのタスク・マネージャの画面がこれである。 | ||||||
|
この記事と関連性の高い別の記事
- Hyper-Vの仮想マシンへのショートカットを作成する(TIPS)
- WindowsでHyper-Vの仮想マシンを作成する(TIPS)
- Hyper-Vの仮想マシンをインポートする(Windows 8/Server 2012編)(TIPS)
- 最適なページ・ファイル・サイズを知るには(TIPS)
- 必要メモリ・サイズを見極める(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|