web-dev-qa-db-ja.com

VMメモリ割り当てGeneral / Hyper-Vに関する推奨事項

VMセットアップに関する基本的な質問があります。Hyper-Vを使用していますが、質問はかなり一般的だと思います。これはホームオフィス向けです。適度に良くなりたいです。多くの作業を行わずにVMでのパフォーマンス。ソフトウェアのテスト/デバッグにVMを使用します。理想的にはすべてのOSを起動しますが、一度にアクティブに使用できるのは1つだけ(おそらくほとんどの場合ゼロ)です。 。

VMへのメモリ割り当てに関する一般的なガイドラインはありますか?極端な例として、合計メモリをVMの数で割ることができます(合計4 GB、4VM->各1GB)。極端な場合は、すべてのVMフルメモリを割り当てて、OSに調停させることができます。どちらも間違っていると思います!妥当なパフォーマンスを得るための「経験則」を探しています。 。VMサーバーがVMのメモリをどのように管理するかわかりません。

[編集] Hyper-V(2008 R2バージョン)が追加のメモリを利用できる場合は動的にVMに追加のメモリを提供できると誤って想定したため、この質問をしました。私の考えでは、使用量が一度に1つだけピークに達した場合に限り、メモリを過剰に割り当てることができますVM。Hyper-Vは各VMの起動時に、いくつかのVMをシャットダウンして必要なものだけを実行するか、VMを設定してメモリ割り当てを減らし、物理メモリがすべての割り当てに加えて十分であることを確認する必要があります。 Hyper-Vプロセスと(場合によっては)ホストOS。

提供された回答に記載されているように、VMWareにはこれらの方針に沿ってより多くのオプションがあるようです。 [/編集]

ありがとう、ブレット

2

原則として、最悪の場合の条件下では、すべての標準機能がRAMから確実に動作するのに十分な物理的RAMがあることを知りたいと思います。そのマジックナンバーが何であるかはOSごとに異なり、ゲストOSを使用する用途によって大きく異なります。数百メガバイトのRAMを搭載したWindows2003 Server、30メガバイト以下のLinuxコンパクトディストリビューションなどを問題なく起動できますが、ゲストで数ギガバイトのデータベースを使用してSQL Serverを実行する場合は、次のようにします。 RAMのギグのカップルをバックアップする実際のRAMが実際にあることを確認したい。

ハイパーバイザーがRAMを処理する方法は、ベンダーと製品によって大きく異なります。 Hyper-Vは、いわゆるメモリオーバーコミットをサポートしていないため、物理的に利用可能なものに基づいてRAMを割り当てることに制限されます。 VMwareのESXでは、VMがビジー状態になり、物理的なRAMの総量が負荷を満たすのに不十分な場合に何が起こるかを制御するために、オーバーコミットと競合アービトレーション(共有)のルールの設定が可能です。 Hyper-V環境では、このレベルの制御ができないため、事前に十分なRAMを割り当てる必要があります。

VMwareには、メモリのオーバーコミットを支援する他のトリックがいくつかあります。透過的なページ共有とメモリバルーニング。

透過的なページ共有は、基本的にRAMの単一インスタンスストレージです-ハイパーバイザーは、各RAMに割り当てられたVMのブロックを監視し、共通のブロックが複数のVMに存在することを検出した場合単一のコピーのみを保持し、すべてのVMをその場所にポイントします。その後、VMがそのブロックに書き込もうとすると、コピーが分割され、悪いことが起こりません。同種のVM環境では、これにより、パフォーマンスに影響を与えることなく、かなりの量のRAMを節約できます。

メモリバルーニングは、ハイパーバイザーが1つのRAMに割り当てられたVMを「借用」し、前者のゲストOSドライバーを使用してそれをより重要なものに割り当てることを可能にするメカニズムです。そのゲスト内の(大きな)メモリのチャンク。ハイパーバイザーが割り当てられると、バルーンドライバーが割り当てたメモリをバックアップする物理的なRAMを安全に再割り当てできます。ハイパーバイザーがRAMを再割り当てするためにゲストVMのメモリをディスクにスワップする直接的なアプローチと比較して、これを行うことの利点は、物理的なRAMを失っているゲストがメモリが何かによって使用されており、「借用」されたRAMがゲスト内の重要なシステム機能に割り当てられるリスクが大幅に減少していることに注意してください。

追加するために編集:メモリ要件を超えるメモリ要件を必要とするVMを起動しようとすると、Hyper-Vで何が起こるかを確認しようとしたことはありません。利用可能な物理的なRAMの量、私が見つけることができるすべてのドキュメントには、VMが構成したすべてのRAMを取得し、ハイパーバイザーとホストOSに残りが割り当てられると記載されています。 Hyper-Vには、最小予約RAMをVMに適用し、残りをプールから割り当てるメカニズムはありませんが、CPUリソースにそのようなメカニズムを提供します。この場合も、VMwareのESX\ESXiはこのオプションを提供します。

ハイパーバイザーとホストOSの両方に必要な物理メモリも計画する必要があることを覚えておく価値があります(ベアメタルHyper-Vサーバーを実行している場合は後者を無視してください)。 Microsoftの Hyper-Vのパフォーマンスチューニングのアドバイス は、VMにあるRAMのXGigに加えて、次のものが必要であると述べています。

  • ハイパーバイザーの場合は300MB
  • さらに、各仮想マシンに割り当てられたRAMの最初のGBに32MB
  • さらに、各仮想マシンに割り当てられたRAMの追加GBごとにさらに8MB
  • さらに、ルートパーティションで実行されているホストオペレーティングシステム用に512 MB

これらに十分な物理的RAMがない場合、パフォーマンスに深刻な影響があり、安定性にも影響する可能性があります。

2
Helvick

Windows Server 2008 R2のHyper-V します動的メモリ機能をサポートします(SP1を実行しています-RTMバージョン)にあるかどうかはわかりません)。あなたの質問はかなり古いので、あなたがそれを尋ねたときはおそらくそうではなかったでしょう。

各ゲストVMに静的メモリを割り当てることから始めましたが、すぐにサーバーを使い果たしました。動的メモリを使用すると、VMごとに初期(おそらく少量)の量と最大量を割り当てることができます。次に、オンデマンドでメモリを割り当て、未使用のメモリも回復します。これを設定するには、各VMの設定を編集する必要があります。新しいVMを作成するときには使用できません。動的メモリを使用するように多数のVMを再構成し、全体的なメモリコミットメントをほぼ半分に減らしました。

Hyper-V Manager screenshot showing assigned memory

動的メモリ用に構成したVMには、現在のメモリ需要とステータスが表示されます。強調表示されたVMは、最初の1 GBの割り当て内でまだ実行されています。Exchangeサーバー(上から2番目)は大きな太った豚であり、最初の1 GBを吹き飛ばし、さらに2つ割り当てられています。この機能では、構成可能なバッファー(デフォルトでは20%)が許可されているため、Hyper-VはExchangeに必要な量と追加の量を提供します。

1
robaker

Hyper-VはVMWareのようにメモリページ共有を実行できないため、一般的な質問ではありません。そのテクノロジによって、VMメモリの割り当て方法が大幅に変わる可能性があります。Hyper-Vがサポートしている場合はI VMに開始量を割り当ててから、VMごとの実際の使用量を経時的に調べ、その動作について詳しく知ると割り当てを変更することをお勧めします。

0
Chopper3