メモリーの動的再構成 (DR) は、容量ベースであり、アクティブな論理ドメインでの任意の容量のメモリーの追加または削除を可能にします。
メモリー DR 機能を使用するための要件と制限は次のようになります。
メモリー DR 操作は任意のドメインで実行できます。ただし、ドメインで同時に実行できるメモリー DR 操作は 1 つだけです。
メモリー DR 機能では、操作に関与するメモリのアドレスとサイズが 256M バイト単位であることが要求されます。メモリー配置を参照してください。
空きメモリープールに存在する、この単位に基づかないメモリーは、メモリー DR 機能を使用してドメインに割り当てることはできません。単位が調整されていないメモリーの追加を参照してください。
メモリー DR 操作を使用してドメインのメモリーを再構成できない場合、メモリーを再構成する前にドメインを停止する必要があります。そのドメインが制御ドメインの場合、まず遅延再構成を開始する必要があります。
特定の状況では、Logical Domains Manager は、リクエストされたメモリー割り当てを 8K バイトまたは 4M バイトの倍数のいずれかに切り上げます。次の例は ldm list-domain -l コマンドの出力例を示しています。ここでは、実際に割り当てられているサイズより制約値の方が小さくなっています。
Memory: Constraints: 1965 M raddr paddr5 size 0x1000000 0x291000000 1968M
ドメインがアクティブの場合、ldm add-memory コマンドを使用してドメインにメモリーを動的に追加できます。指定されたメモリーサイズがドメインの現在のメモリーサイズを超えている場合は、ldm set-memory コマンドで動的にメモリーを追加することもできます。
ドメインがアクティブの場合、ldm remove-memory コマンドを使用してドメインから動的にメモリーを削除できます。指定されたメモリーサイズがドメインの現在のメモリーサイズよりも小さい場合、ldm set-memory コマンドで動的にメモリーを削除することもできます。
メモリーの削除操作には長い時間が必要な場合があります。指定のドメインに対して ldm list -l コマンドを実行すると、ldm remove-memory コマンドの進捗状況を追跡できます。
ldm remove-memory コマンドを中断する (Control-C を押す) か、ldm cancel-operation memdr コマンドを発行して、進行中の削除要求を取り消すことができます。メモリー削除要求を取り消すと、削除要求の未処理の部分、つまりドメインからまだ削除されていない部分のメモリーのみが影響を受けます。
動的にメモリーをドメインに追加する、またはドメインから削除するリクエストは、部分的にしか実現されない可能性があります。この結果は、追加または削除にそれぞれ適したメモリーが使用できるかどうかによって異なります。
メモリー DR 機能を使用して、制御ドメインのメモリーを再構成できます。制御ドメインでメモリー DR 要求を実行できない場合、まず遅延再構成を開始する必要があります。
メモリー DR 操作には長い時間を要する場合があるため、アクティブなドメインから大量のメモリーを削除する場合は、メモリー DR 操作は適さない可能性があります。具体的には、システムの初期構成時には、遅延再構成を使用して制御ドメインのメモリーを減らすようにしてください。
制御ドメインのメモリーを出荷時デフォルト構成から減らすには、メモリー DR ではなく遅延再構成を使用します。このような場合、ホストシステムのメモリーすべてを制御ドメインが所有します。アクティブなドメインは、要求されたメモリーのすべてを追加できること、またはより一般的には放棄できることを保証されていないため、この目的にメモリー DR 機能は適していません。むしろ、そのドメインで実行されている OS が、要求を最大限に満たすことを試みます。さらに、メモリーの削除操作には長い時間が必要な場合があります。これらの問題は、制御ドメインのメモリーを最初に減らすときのように、大量のメモリー操作が関与する場合にはさらに悪化します。
以上の理由により、次の手順に従って遅延再構成を使用してください。
ldm start-reconf primary コマンドを使用して、制御ドメインを遅延再構成モードにします。
必要に応じて、制御ドメインにより所有されているホストシステムのリソースを分割します。
必要な場合は、ldm cancel-reconf コマンドを使用して手順 2 の操作を元に戻し、やり直します。
制御ドメインをリブートして、再構成の変更を有効にします。
制御ドメインで遅延再構成が保留されている場合、他のドメインについてのメモリー再構成要求はすべて拒否されます。制御ドメインで遅延再構成が保留中されていない場合、メモリー DR をサポートしないドメインについてのメモリー再構成要求はすべて拒否されます。それらのドメインの場合、リクエストは、遅延再構成リクエストに変換されます。
メモリー再構成のリクエストは、そのリクエストが適用されるドメインの状態に応じて、配置の要件が異なります。
動的追加および削除。動的追加と動的削除では、メモリーブロックのアドレスとサイズが 256 MB 単位になります。操作の最小サイズは 256M バイトです。
この単位に基づかない要求や、境界サイズよりも大きい削除要求は拒否されます。
メモリー配置を調整するには、次のコマンドを使用します。
ldm add-memory。このコマンドで –-auto-adj オプションを指定した場合、追加されるメモリーの量は 256 MB 単位であるため、ドメインに実際に追加されるメモリーの量が増えることがあります。
ldm remove-memory。このコマンドで –-auto-adj オプションを指定した場合、削除されるメモリーの量は 256 MB 単位であるため、ドメインから実際に削除されるメモリーの量が減ることがあります。
ldm set-memory。このコマンドは、追加または削除操作として扱われます。–-auto-adj オプションを指定すると、前に説明したように、追加または削除されるメモリーの量は 256M バイト単位になります。この調整により、ドメインのメモリーサイズが増加する可能性があります。
遅延再構成。メモリーブロックのアドレスとサイズは 4M バイト単位です。この単位に基づかない要求を行なった場合、要求は 4M バイト単位に切り上げられます。
バインドされているドメインの、メモリーブロックのアドレスとサイズは 4M バイト単位です。この単位に基づかない要求を行なった場合、要求は 4M バイト単位に切り上げられます。そのため、ドメインの結果のメモリーサイズが指定よりも大きくなることがあります。
ldm add-memory、ldm set-memory、および ldm remove-memory コマンドに –-auto-adj オプションを使用すると、結果のメモリーサイズが 256M バイト単位に切り上げられます。そのため、結果のメモリーが指定よりも大きくなることがあります。
ldm add-memory、ldm set-memory、および ldm remove-memory コマンドに –-auto-adj オプションを使用すると、結果のメモリーサイズが 256M バイト単位に切り上げられます。アクティブでないドメインについては、単位の要件はありません。バインドされているドメインのメモリー配置に記載されている制限は、このようなドメインがバインドされたあとで有効になります。
メモリー DR 機能では、アクティブなドメインに動的に追加または削除されるメモリーのアドレスとサイズが 256M バイト単位であることが要求されます。このため、この単位に調整されていないメモリーを、メモリー DR を使用してアクティブドメインから削除することはできません。
また、空きメモリープールに存在するメモリーがこの単位に調整されていない場合、それらをメモリー DR を使用してアクティブなドメインに追加することもできません。
単位が調整されたすべてのメモリーが割り当てられたあとで、ldm add-memory コマンドを使用して、単位が調整されていない残りのメモリーをバインドされたドメインまたはアクティブでないドメインに追加できます。また、このコマンドを使用して、遅延再構成操作を行い、単位が調整されていない残りのメモリーを制御ドメインに追加できます。
次の例は、残り 2 つの 128M バイトのメモリーブロックを primary および ldom1 ドメインに追加する方法を示しています。ldom1 ドメインはバインドされた状態です。
次のコマンドは、制御ドメインで遅延再構成操作を開始します。
primary# ldm start-reconf primary Initiating a delayed reconfiguration operation on the primary domain. All configuration changes for other domains are disabled until the primary domain reboots, at which time the new configuration for the primary domain also takes effect.
次のコマンドは、128M バイトのメモリーブロックの 1 つを制御ドメインに追加します。
primary# ldm add-memory 128M primary ------------------------------------------------------------------------------ Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ------------------------------------------------------------------------------ primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -ndcv- SP 8 2688M 0.1% 23d 8h 8m primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 8 2560M 0.5% 23d 8h 9m ldom1 bound ------ 5000 1 524M
次のコマンドは、ほかの 128M バイトのメモリーブロックを ldom1 ドメインに追加します。
primary# ldm add-mem 128M ldom1 primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 8 2560M 0.1% 23d 8h 9m ldom1 bound ------ 5000 1 652M
次の例は、メモリー DR 操作を実行する方法を示しています。関連する CLI コマンドについては、ldm(1M) のマニュアルページを参照してください。
使用例 66 アクティブなドメインでのメモリー DR 操作この例は、アクティブなドメイン ldom1 に対し、動的にメモリーの追加と削除を行う方法を示しています。
ldm list の出力の「Memory (メモリー)」フィールドに、各ドメインのメモリーが表示されます。
primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.4% 1d 22h 53m ldom1 active -n---- 5000 2 2G 0.4% 1d 1h 23m ldom2 bound ------ 5001 2 200M
次の ldm add-mem コマンドに指定するメモリーは 256M バイトの倍数である必要があるため、このコマンドはエラーで終了します。次の ldm add-mem コマンドは –-auto-adj オプションを使用しているため、追加するメモリーの量として 200M を指定していますが、メモリーの量は 256M バイトに切り上げられます。
primary# ldm add-mem 200M ldom1 The size of memory must be a multiple of 256MB. primary# ldm add-mem --auto-adj 200M ldom1 Adjusting request size to 256M. The ldom1 domain has been allocated 56M more memory than requested because of memory alignment constraints. primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 5.0% 8m ldom1 active -n---- 5000 2 2304M 0.5% 1m ldom2 bound ------ 5001 2 200M
ldm rm-mem コマンドに指定するメモリーは 256M バイトの倍数である必要があるため、このコマンドはエラーで終了します。同じコマンドに –-auto-adj オプションを追加すると、メモリーの量が次の 256M バイトの境界まで切り下げられるため、メモリーの削除は成功します。
primary# ldm rm-mem --auto-adj 300M ldom1 Adjusting requested size to 256M. The ldom1 domain has been allocated 44M more memory than requested because of memory alignment constraints. primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.3% 8m ldom1 active -n---- 5000 2 2G 0.2% 2m ldom2 bound ------ 5001 2 200M使用例 67 バインドされたドメインでのメモリー DR 操作
この例は、バインドされたドメイン ldom2 に対してメモリーの追加と削除を行う方法を示しています。
ldm list の出力の「Memory (メモリー)」フィールドに、各ドメインのメモリーが表示されます。最初の ldm add-mem コマンドは、ldom2 ドメインに 100M バイトのメモリーを追加します。次の ldm add-mem コマンドには –-auto-adj オプションが指定されているため、さらに 112M バイトのメモリーが ldom2 に動的に追加されます。
ldm rm-mem コマンドは、ldom2 ドメインから 100M バイトを動的に削除します。同じコマンドに –-auto-adj オプションを指定して 300M バイトのメモリーを削除すると、メモリーの量は次の 256 M バイトの境界まで切り下げられます。
primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.4% 1d 22h 53m ldom1 active -n---- 5000 2 2G 0.4% 1d 1h 23m ldom2 bound ------ 5001 2 200M primary# ldm add-mem 100M ldom2 primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.5% 1d 22h 54m ldom1 active -n---- 5000 2 2G 0.2% 1d 1h 25m ldom2 bound ------ 5001 2 300M primary# ldm add-mem --auto-adj 100M ldom2 Adjusting request size to 256M. The ldom2 domain has been allocated 112M more memory than requested because of memory alignment constraints. primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.4% 1d 22h 55m ldom1 active -n---- 5000 2 2G 0.5% 1d 1h 25m ldom2 bound ------ 5001 2 512M primary# ldm rm-mem 100M ldom2 primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 3.3% 1d 22h 55m ldom1 active -n---- 5000 2 2G 0.2% 1d 1h 25m ldom2 bound ------ 5001 2 412M primary# ldm rm-mem --auto-adj 300M ldom2 Adjusting request size to 256M. The ldom2 domain has been allocated 144M more memory than requested because of memory alignment constraints. primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.5% 1d 22h 55m ldom1 active -n---- 5000 2 2G 0.2% 1d 1h 26m ldom2 bound ------ 5001 2 256M使用例 68 ドメインのメモリーサイズの設定
この例は、ldm set-memory コマンドを使用してドメインに対するメモリーの追加と削除を行う方法を示しています。
ldm list の出力の「Memory (メモリー)」フィールドに、各ドメインのメモリーが表示されます。
primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 27392M 0.5% 1d 22h 55m ldom1 active -n---- 5000 2 2G 0.2% 1d 1h 26m ldom2 bound ------ 5001 2 256M
次の ldm set-mem コマンドは、primary ドメインのサイズを 3400M バイトに設定する操作を試みます。その結果として発生するエラーは、指定された値が 256M バイト単位でないことを示します。同じコマンドに –-auto-adj オプションを追加すると、メモリーの一部を正常に削除し、256M バイトの境界を維持することができます。このコマンドは、ドメインがメモリーを使用しているため、要求されたメモリーのすべてを削除できなかったことを示す警告も発行します。
primary# ldm set-mem 3400M primary An ldm set-mem 3400M command would remove 23992MB, which is not a multiple of 256MB. Instead, run ldm rm-mem 23808MB to ensure a 256MB alignment. primary# ldm set-mem --auto-adj 3400M primary Adjusting request size to 3.4G. The primary domain has been allocated 184M more memory than requested because of memory alignment constraints. Only 9472M of memory could be removed from the primary domain because the rest of the memory is in use.
次の ldm set-mem コマンドは、バインドされた状態にある ldom2 ドメインのメモリーサイズを 690M バイトに設定します。同じコマンドに –-auto-adj オプションを追加すると、ldom2 にさらに 78M バイトのメモリーが動的に追加され、256M バイトの境界が維持されます。
primary# ldm set-mem 690M ldom2 primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 17920M 0.5% 1d 22h 56m ldom1 active -n---- 5000 2 2G 0.6% 1d 1h 27m ldom2 bound ------ 5001 2 690M primary# ldm set-mem --auto-adj 690M ldom2 Adjusting request size to 256M. The ldom2 domain has been allocated 78M more memory than requested because of memory alignment constraints. primary# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 17920M 2.1% 1d 22h 57m ldom1 active -n---- 5000 2 2G 0.2% 1d 1h 27m ldom2 bound ------ 5001 2 768M