コンピューティングクラスターの1つに、デバイスファイルのアクセス許可によってアクセスが制御される一意のハードウェアリソースを備えたシステムがあります。各ノードには、これらのうち2つまたは4つと、複数のCPUコアがあります。同じノードで異なるユーザーのジョブをスケジュールし、適切に割り当てられたリソースへのアクセスを制限できるようにしたいと考えています。 (一部のキューはCPUのみであり、アクセスできない場合もあります。)
しばらくの間、私たちは「ねえ、注意を払い、ニースをプレイする」という方針で走っていましたが、それは誰もが最善の意図を持っていてもまっすぐに保つのは難しいです。したがって、代わりに、特定のユーザーのノード全体を一度にスケジュールするだけです。これは、シングルスレッドのシングルプロセスタスクには無駄です。
Torqueを使用すると、ジョブを開始する前に rootとしてプロローグスクリプト を実行できます。これは、デバイスのアクセス許可を適切に設定するために行うことができます。ただし、(néeSun)GridEngineを実行しています。キューごとのprolog
スクリプトがありますが、それらはジョブが属するユーザーとして実行されます(Torqueのprologue.user
)、これはここでは役に立ちません。
私が見逃している明らかな何か(私は願っています)、またはこれにアプローチする別の方法はありますか?私はソースコードを持っているので何でもできることを理解していますが、私が見逃している標準的な方法があることを望んでいます。
ありがとう!
プロローグスクリプトは、実際には任意のユーザーとして実行できます。
man queue_conf
から:
プロローグ
グリッドエンジンジョブの実行前に開始され、後で開始されるグリッドエンジンジョブと同じ環境設定で実行されるシェルスクリプトの実行可能パス。オプションのプレフィックス「user @」は、この手順を開始するユーザーを指定します。
したがって、prolog root@/path/to/prolog
を設定すると、rootとして実行されるはずです。