Sun N1 Grid Engine 6.1 管理ガイド

例 2: 仮想記憶の容量の共有

メモリーの過剰予約を原因とするパフォーマンスの低下、そしてその結果としてマシンでスワップが起きないようにシステムをチューニングすることは、システム管理者がよく行う仕事です。Grid Engine ソフトウェアは、消費可能リソースの機能を介して、ユーザーが行うこのタスクをサポートできます。

標準的な負荷パラメータ virtual_free は、使用可能な空き仮想記憶、つまり使用可能なスワップ容量と使用可能な物理メモリーの結合量を報告します。 スワッピングを回避するには、スワップ容量の使用量を最小限にする必要があります。理想的なケースでは、ホストで実行中のすべてのプロセスで必要なすべてのメモリーが、物理メモリーに収まっています。

Grid Engine ソフトウェアは、次の前提と構成の下では、Grid Engine システムを介して開始されるすべてのジョブに必要なメモリーが使用可能であることを保証できます。

考えられる virtual_free リソース定義の例は、図 3–2 にあります。1G バイトのメインメモリーを搭載したホストの、対応する実行ホストの構成は、図 3–3 にあります。

virtual_free リソース定義の例では、グローバル構成の例と同じように、Requestable フラグは、FORCED ではなく YES に設定されています。これは、ユーザーはジョブのメモリー要件を指定する必要がないことを意味します。明示的なメモリーの要求がない場合に、「Default」フィールドの値が使用されます。この場合のデフォルト要求としての 1G バイトの値は、要求を持たないジョブがすべての使用可能な物理メモリーを占有すると想定されていることを意味します。


注 –

virtual_free は、Grid Engine システムの標準的な負荷パラメータの 1 つです。仮想記憶の容量計画では、最近のメモリー統計の追加の可用性が、システムにより自動的に考慮されます。空き仮想記憶の負荷レポートが、Grid Engine ソフトウェアの内部のブックキーピングにより取得される値を下回る場合、メモリーの過剰予約を防ぐために負荷値が使用されます。Grid Engine システムを使用せずにジョブが起動された場合は、報告される負荷値と内部のブックキーピングの違いは容易に生じます。


1 つのマシンでさまざまなメモリー要件のさまざまなジョブクラスを実行する場合は、これらのジョブクラスが使用するメモリーを分割したい場合があります。この機能は、容量の共有と呼ばれます。各ジョブクラスに対してキューを構成することで、この機能を実現できます。続いて、そのホスト上の合計メモリーの一部を各キューに割り当てます。

例では、キュー構成が、ホスト carc に使用可能な合計メモリーの半分を、ホスト carcfast.q キューに割り当てます。そのため、ホスト carc 上のキュー fast.q で実行中のすべてのジョブの累積メモリー消費量は、500M バイトを超えることができません。そのほかのキューのジョブは考慮されません。それにもかかわらず、ホスト carc 上で実行中のすべてのジョブの合計メモリー消費量は、1G バイトを超えることができません。


注 –

属性 virtual_free は、コンプレックスからの継承を介して、すべてのキューに使用可能です。


ユーザーは、次のいずれかの形式の例と同じように構成されているシステムに対して、ジョブを発行する場合があります。


% qsub -l vf=100M honest.sh
% qsub dont_care.sh

最初のコマンドにより発行されるジョブは、少なくとも 100M バイトのメモリーが使用可能になるとすぐに開始できます。この量は、virtual_free の消費可能なリソースの容量計画において考慮されます。2 番目のジョブは暗黙にすべての使用可能なメモリーを要求するため、2 番目のジョブが実行されるのは、システム上にそのほかのジョブが存在しない場合のみです。また、2 番目のジョブはキューのメモリー容量を超えるため、このジョブはキュー fast.q では実行できません。