2

複数のジョブを qsub に送信するスクリプトを Python で作成していますが、ユーザーに通知してジョブのローカル環境を実行する必要があるよりも多くのジョブがキューに入っているか、qsub の負荷が高い場合は、qsub の負荷を判断する必要があります。コマンド ページを確認しましたが、有用な情報を取得できませんでした。

qstat [options]
        [-ext]                            view additional attributes
        [-explain a|c|A|E]                show reason for c(onfiguration ambiguous), a(larm), suspend A(larm), E(rror) state
        [-f]                              full output
        [-fjc]                            full output grouped according to job class instances
        [-F [resource_attributes]]        full output and show (selected) resources of queue(s)
        [-g {c}]                          display cluster queue summary
        [-g {d}]                          display all job-array tasks (do not group)
        [-g {t}]                          display all parallel job tasks (do not group)
        [-help]                           print this help
        [-j job_identifier_list ]         show scheduler job information
        [-l resource_list]                request the given resources
        [-ne]                             hide empty queues
        [-ncb]                            suppress additional binding specific parameters
        [-pe pe_list]                     select only queues with one of these parallel environments
        [-nenv]                           do not request job environment
        [-njd]                            do not show details about foreign jobs
        [-q wc_queue_list]                print information on given queue
        [-qs {a|c|d|o|s|u|A|C|D|E|S}]     selects queues, which are in the given state(s)
        [-r]                              show requested resources of job(s)
        [-s {p|r|s|z|hu|ho|hs|hd|hj|ha|h|a}] show pending, running, suspended, zombie jobs
4

2 に答える 2

2

これに対する理想的な解決策は、Moab や Maui (私は Maui がこれを行うことができると思います) などのスケジューラーを使用してノードをジョブにインテリジェントに割り当てることです。これには、クラスター内のノードが既に高負荷になっている場合はノードを使用しないことも含まれます。通常、スケジューラは、このような典型的な HPC シナリオを処理できるポリシーを提供します。(完全な開示のために、私は現在モアブを販売する会社のエンジニアです - マウイは無料で使用できます)

スクリプトを介してこれを行う場合、pbsnodes -a はクラスター内のノードの負荷平均を報告します。これは、次の形式のより大きなステータス文字列内にあります。

status = attr=[val][,attr2=[val]...]

探している属性は loadave であるため、pbsnodes を呼び出す (または pbsnodes からキャッシュされた結果を持つ) スクリプト内で qsub をラップしてこの値を取得し、ジョブを qsubs するか、ローカル環境で実行すると動作します。私には、スケジューラを使用する方が簡単に思えます。

于 2013-09-16T22:55:37.387 に答える
0

これは、太陽グリッド エンジン (または派生物) の qstat のように見えます。

ジョブをすぐに (多かれ少なかれ) 実行できない限り、ジョブを起動しないように Grid Engine を要求できますqsub -now n。高負荷のマシンで実行したくない場合は、クラスターの構成方法に応じて、qsub に -l オプションを指定して load_avg、load_long、load_medium、または load_short を要求できる場合があります。

キューに入れられたジョブを一覧表示するにはqstat -u '*' -g d -s p

オプションで追加-xmlして、その形式で出力を取得できます

于 2013-10-18T09:01:19.037 に答える