私たちはキューイングシステムの導入を検討しており、SGEはほぼすべての要望に応えられるように見えます。ただし、同期キューイングモデルと非同期キューイングモデルの両方をサポートするというアイデアがありました。言い換えると:
すべてのワーカーノードを同期キューに関連付けて、それらに割り当てられたジョブが通常どおりキューに入れられるようにします。つまり、ジョブが実行されると、別のノードが受け入れられて実行されます。
「非同期」ジョブをノードにも割り当てられるようにしたかったのです。これらは、他のジョブと並行して実行できるタスクであり、通常はマシン自体のメンテナンスタスクです。
SGEのドキュメントでは、ノード間で複数のキューを定義できることがわかりましたが、それは、与えられたジョブを受け取り、バックグラウンドで起動してから別のジョブを受け入れるキューを持つこととはまったく同じではありません。 SGEのすべての構成オプションについて完全に理解しているわけではありませんが、これは可能かもしれないようです。誰かがこれがどのように構成されているかについての情報を教えてもらえますか?
キューごとのスロット数を定義できます。したがって、「同期」ジョブキューの場合、ホストあたりのスロット数を1に設定することをお勧めします。これにより、一度に1つのジョブのみがホストのキューに受け入れられ、完了すると別のジョブが実行されます。 「非同期」キューの場合は、スロットの数を高い数に設定するだけで、必要な数のジョブをホストで一度に実行できます。
2つのキューがあるので、それらにジョブをターゲティングする方法が必要です。これを行う簡単な方法は、-q
スイッチをqsubに使用して、キューを明示的に選択することです(例:qsub -q 'sync.q@*'
)。
ただし、gridengineがジョブを配置するキューを決定できるようにすることをお勧めします。そのために、たとえばsync
と言って複合体を定義し、forced
属性をtrueに設定できます。次に、その複合体をキューに割り当てます。これで、qsub -l sync
で送信されたジョブは、その属性が使用可能なキューにのみ配置されます。これの利点は、キューを再編成することにした場合の柔軟性の向上と、送信手順が少し簡単になることです。