Hyper-V ダイナミックメモリのベストプラクティスの完全な概要

Windows Server 2008 R2 SP1 で初めて導入された Hyper-V Dynamic Memory です。リリース以前、Hyper-V 仮想マシン(VM)は割り当てられた全RAMで開始し、実行されました。これによりメモリが過剰に使用され、全体的なVMのパフォーマンスに影響が出ました。さらに、利用可能なVMメモリの量は、VMがオフになっている場合にのみ変更できました。したがって、静的メモリ割り当てを動的メモリ割り当てに置き換える必要があったため、Hyper-V Dynamic Memory 機能が導入されました。

Hyper-V Dynamic Memory とは?

Hyper-V Dynamic Memory は、Hyper-V 環境で実行されているVMにメモリリソースを動的に割り当てる機能です。この機能は、その時点でそれを必要としないVMから未使用のメモリの一部を回収し、実際に必要な他のVMに再割り当てます。

Hyper-V Dynamic Memory を使用すると、VMが使用できる起動メモリの量を指定したり、特定のVMに対する利用可能な物理メモリの範囲を設定したり、メモリ割り当てのVMの優先度を決定したりできます。物理メモリは、必要に応じて効率的かつ動的にVMに割り当てられ、最小限のパフォーマンス影響で済みます。その結果、メモリ使用量をより詳細に制御し、リソースの最適化を強化できます。

Hyper-V Dynamic Memory の利点と欠点

Hyper-V Dynamic Memory は、多くの利点を提供する有用な機能です。

  • メモリの消費量を削減し、VMが管理者によって設定された制限内で実際に必要なメモリのみを使用する
  • 効率的なメモリの配分、実行中のVMに対してより多くまたは少ないメモリを動的に割り当てることができる
  • メモリリソースの効率的な使用によるコンソリデーション数の増加
  • Hyper-Vスマートページングの支援による再起動操作の信頼性向上
  • VMリソースの無駄がないためのコスト効率

ただし、Hyper-V Dynamic Memoryには、VMメモリのパフォーマンスに悪影響を及ぼす可能性があるいくつかの欠点もあります。それらには、以下が含まれます:

  • 物理メモリの過剰配置のリスクがあります。仮想環境内でメモリの割り当てを追跡しない場合、コンピューターの物理メモリが過剰に割り当てられる可能性があります。
  • VMが実行中の場合、一部のメモリ設定を変更できません。そのため、VMがまだ実行中または一時停止中の場合に、最大および最小メモリ量を減らしたり増やしたり、VMの起動メモリ量を変更したりすることはできません。
  • Hyper-V Dynamic Memoryが有効になっている場合、データベースアプリケーションの問題が発生する可能性があります。パフォーマンスの問題を回避するために、Hyper-V Dynamic Memoryと互換性のあるアプリケーションを使用することが推奨されます。

Hyper-V Dynamic Memory設定

Hyper-V Dynamic Memoryには、Hyper-Vマネージャーで構成できる5つのVM設定が含まれています。そのためには、Hyper-Vマネージャーを開き、必要なVMを選択し、設定をクリックし、メモリを選択します。次のように表示されます:

ただし、Hyper-V Dynamic Memory 設定を構成する前に、これらのコンポーネントがどのように機能し、どのような利点が提供されるかを知ることを最初にお勧めします。それぞれを見てみましょう。

スタートアップ RAM

この Hyper-V Dynamic Memory 値は、選択した VM が起動中に使用できる物理メモリの最小量を定義します。スタートアップ RAM は、VM が中断することなく迅速に起動できるように十分に高くする必要があります。なお、VM が実行中の場合は、スタートアップ RAM を変更できません。

最小 RAM

この Hyper-V Dynamic Memory 値は、VM が起動した後に割り当てられるべき物理メモリの最小量を決定します。他の VM が追加の RAM を必要とする場合、Hyper-V ホストは、この VM から未使用のメモリを回収し始め、最小 RAM 値が達成されるまでです。値は最小で 32 MB まで設定できますが、スタートアップ RAM より高くすることはできません。さらに、VM が実行中または一時停止中の間に最小メモリを増やすことはできませんが、減らすことはできます(例えば、最小 RAM 値を 512 MB から 64 MB に変更できます)。

最大 RAM

この Hyper-V Dynamic Memory 値は、VM が使用できる物理メモリの最大量を指定します。この値は割り当てられたスタートアップ RAM より低くすることはできませんが、1 TB (1,048,576 MB) まで増やすことができます。さらに、VM が実行中または一時停止中の間に最大メモリ量を減らすことはできませんが、増やすことはできます(例えば、最大 RAM 値を 512 MB から 2048 MB に変更できます)。

メモリ バッファ

このHyper-V Dynamic Memoryの値は、VMに割り当てるべき物理メモリの割合を決定します。メモリバッファは、そのメモリニーズに基づいてVM用に確保された物理メモリの一部です。メモリバッファを計算するには、次の式を使用する必要があります:

メモリバッファの量 = 仮想マシンが実際に必要とするメモリの量 / (メモリバッファの値 / 100)。

デフォルトでは、メモリバッファの値は20%ですが、最低でも5%、最高でも2000%まで設定できます。VMが実行中であっても、いつでもメモリバッファの値を変更できます。

メモリウェイト

このHyper-V Dynamic Memoryの値は、このホスト上の他のVMに比べて選択されたVMの優先順位を指定します。これらの優先順位の順序に基づいて、同じHyper-Vホストで実行されている複数のVM間で利用可能なメモリをどのように分配するかを決定できます。

VMの優先順位があまりにも低く設定されている場合や利用可能な物理メモリの量が減少した場合、このVMが起動できなくなるリスクがあります。VMが実行中であっても、いつでもメモリウェイトの値を変更できます。

Hyper-V Dynamic Memoryのベストプラクティス

Hyper-V環境での高いパフォーマンスを実現し、メモリの利用を改善するためには、Hyper-V Dynamic Memoryのベストプラクティスに従うことが推奨されます。

以下に示すHyper-V Dynamic Memoryのベストプラクティスは、VMのメモリパフォーマンスを大幅に向上させ、Hyper-V環境全体のエクスペリエンスを向上させることができます。

Hyper-V Integration Servicesを有効にする

Hyper-V 統合サービスは、Hyper-V 環境において VM のパフォーマンスを向上させるためのユーティリティのセットです。各 Hyper-V 統合サービスは、ホストとゲストの両方で有効にする必要があります。これにより、適切に機能し、必要なサービスを提供することができます。デフォルトでは、Hyper-V ゲスト サービス インターフェイスを除くすべての Hyper-V 統合サービスが、ゲスト OS で有効になっています。

Hyper-V Dynamic Memory が効果的に機能するためには、Hyper-V 統合サービスが最新バージョンにアップグレードされており、ゲスト オペレーティング システムが Dynamic Memory 機能をサポートしていることを確認してください。そうでない場合、メモリを動的に提供できず、メモリ要求を適切に処理できないため、Hyper-V に問題が発生する可能性があります。

メモリ使用量とリソース割り当ての監視

現在、Hyper-V 環境におけるメモリ使用量とリソース割り当てを監視するための多くの Hyper-V 管理ツールが市場にあります。Hyper-V Dynamic Memory を有効にすると、RAM を過剰に割り当ててメモリが完全に枯渇する可能性があります。したがって、Hyper-V ホストに割り当てられたさまざまな VM の RAM を追跡することをお勧めします。

この目的のために、ネイティブのモニタリングツールを使用するか、サードパーティのソフトウェアを購入することができます。たとえば、Hyper-VマネージャーのホストまたはゲストVM内のタスクマネージャーを介してVMメモリ状態を確認できます。

この方法で、システム内でメモリリソースがどのように使用されているかを監視できます。ただし、Hyper-Vマネージャーとタスクマネージャーはメモリ使用状況に対して異なる出力を示します。ゲストのモニタリングツールは実際の結果を表示しません。なぜなら、ゲストVMは、VMに割り当てられたメモリの総量が実際にはそのドライバーによって使用されていると信じているからです。実際には、ホストはインフラストラクチャ内のVMにメモリがどのように配布されているかについて一般的により認識しています。未使用のメモリは実際には他のVMに再割り当てされ、これはHyper-Vマネージャーで反映されます。

スタートアップRAMを考慮してください

スタートアップRAMを高めたり低めたりすると、Hyper-Vのパフォーマンスにかなり影響します。OSとその上で実行されるアプリケーションが必要に応じて起動するために、スタートアップRAMを増やす必要があります。これは、Windowsが起動時にはアイドル時よりも多くのRAMを必要とするためです。

また、インストールやアップグレード操作中、ゲストOSに利用可能なRAMの量はスタートアップRAMの値と同じです。したがって、インストールやアップグレードを行う前に、選択したOSの最小メモリ要件を満たすようにスタートアップRAMの値を確認することが重要です。

スタートアップRAMの値が高すぎる場合、これはHyper-V Dynamic Memoryのパフォーマンスや全体のメモリ使用状況にも負の影響を与える可能性があります。したがって、ゲストOSのスタートアップRAMの値を512 MBに設定して、中断なく起動できるようにすることをお勧めします。

メモリーリークを忘れないでください

特定のVMのためにHyper-V Dynamic Memoryの制限を設定する際には、インフラがメモリーリークの影響を受ける可能性があることを念頭に置くことが重要です。メモリーリークとは、不正確なメモリー割り当ての結果として利用可能なメモリーが徐々に失われることを意味します。これは、アプリケーションが一時的な使用のために提供されたメモリーを解放しない場合に通常発生します。問題が深刻な損害が発生する前に検出されない場合、OSメモリーが枯渇し、アプリケーションが最終的に失敗します。

この問題の負の影響を緩和するためには、監視ツール(例:RAMMap)をインストールし、実行中のアプリケーションによるメモリー使用の異常なケースを検出し、すべてのインフラをスキャンすることをお勧めします。また、この特定のVMに最適な最小および最大RAM値を決定するのに役立つ場合があります。

最大および最小RAM値を設定する

Hyper-V Dynamic Memoryが必要とするように機能するためには、システムが超えてはならない限界を決定することをお勧めします。これにより、インフラ内のメモリー利用が効果的に制御され、VMがあまり多くまたはあまり少ないメモリーを消費しないようになります。

メモリーバッファ値を注意して設定する

Hyper-Vのダイナミックメモリのベストプラクティスの1つは、適切なメモリバッファ値を割り当てることです。これは、選択したVMに追加のメモリをどれだけ利用可能にするかを指定します。メモリバッファ値が高く設定されている場合、この余分なメモリ量は一般的に大規模VMでのファイルキャッシングやシステム内でのI/O操作の効率化に使用されます。

同時に、メモリバッファ値は、大量の物理メモリを必要とする実行中のアプリケーションがある場合は低く設定する必要があります。メモリバッファ値を減らすことで、利用可能なメモリが単一のVMに完全に消費されないことが保証されます。

さらに、VMに大量のメモリが既に割り当てられている場合、追加のメモリが必要になる可能性は低いです。そのため、他のVMがそれをより必要としている場合に未使用のメモリリソースを共有する方が合理的です。

必要に応じてHyper-Vホストを更新します

Hyper-V環境を安定させ、セキュアに保つために、Hyper-Vホストが必要に応じてすべての更新とセキュリティパッチをインストールすることを確認してください。Microsoftの更新プログラムとセキュリティパッチの主な目的は、システムで特定された問題に対処することです。たとえば、Windows Server 2012 R2でHyper-V Dynamic Memoryに関する問題が検出されました。これにより、Hyper-V VMが追加のメモリを取得できなくなりました。機能がVMで有効にされていたにもかかわらず、それでも失敗しました。この事実から、Microsoftは問題を解消し、機能が必要どおりに機能するようにするためにホットフィックスをリリースしました。

1日の間にパフォーマンスの変化を検出します

作業時間中に生産ワークロードが大幅に増加し、最終的にはHyper-Vのパフォーマンス、リソース割り当て、およびメモリ利用に影響を与えます。Hyper-V Dynamic Memoryのベストプラクティスの1つとして、作業日の経過中にメモリ使用状況の変化を監視することが推奨されています。高いメモリ使用率と低いメモリ使用率のサイクルが通常いつ発生するかを検出することで、Hyper-V Dynamic Memoryを有利に活用する方法を学ぶことができます。

実際に必要な場合にのみHyper-V Dynamic Memoryを有効にします

Hyper-V Dynamic Memoryは物理メモリの使用を改善する非常に役立つ機能ですが、静的メモリ割り当てが好ましいオプションの場合もあります。したがって、特定のVMでHyper-V Dynamic Memoryを有効にする必要があるかどうかを検討する必要があります。たとえば、一部のアプリケーションは、中断なしに使用できる事前に決定された量のRAMを持っていると、パフォーマンスが向上します。事前に割り当てられたRAMの量は、メモリ需要の変動に関係なく同じです。

したがって、将来的にRAMが不足することを防ぎ、アプリケーションの障害を回避するために、Hyper-V環境で物理メモリがどのように分配されるかを計画することが推奨されます。

互換性のあるアプリケーションのみでHyper-V Dynamic Memoryを使用します

ハイパーバイザーのホストまたはゲストにアプリケーションをインストールする前に、そのアプリケーションがハイパーバイザーの動的メモリと共に使用可能であることを確認してください。このような情報を確認するには、まず製品のサポートドキュメントを読んでその機能とシステム要件について知ることをお勧めします。このような予防措置は、メモリの使用と割り当てに関する問題を回避するのに役立ちます。

まとめ

ハイパーバイザーの動的メモリのベストプラクティスを学んだ後、物理メモリを効率的かつ安全に使用できるようになります。ただし、仮想インフラストラクチャーはさまざまな危険や脅威にさらされており、そのパフォーマンスを低下させる可能性があります。仮想環境の安全性を確保するためには、データ保護ソリューションの使用が最も実用的な選択肢です。NAKIVO Backup & Replicationは信頼性が高く、効果的で手頃な価格のソリューションであり、VMバックアップ、レプリケーション、クラウドへのバックアップ、バックアップコピー、サイトリカバリーなどの機能を提供しています。

Source:
https://www.nakivo.com/blog/full-overview-hyper-v-dynamic-memory-best-practices/