4.6. ジョブ状態の表示

ジョブの一覧表示#

ユーザーが投入したジョブの情報は、pjstatコマンドで確認できます。ユーザーはpjstatコマンドの情報から、ジョブの状態、ジョブの開始時刻またはジョブの開始予定時刻、ジョブが利用する資源等の情報を確認できます。

$ pjstat
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE VNODE CORE V_MEM
238 job.sh NM RUN user1 11/17 09:01:41 0001:00:00 12:2x3x2 - - -
239 bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 12:2x3x2 - - -
240 step.sh ST RUN user1 11/17 09:01:42 - - - - -
241 job2.sh NM RUN user1 11/17 09:01:42 0001:00:00 2 - - -

表示項目の詳細

各表示項目の意味は、ジョブ運用ソフトウェア エンドユーザ向けガイドの 「A.1 pjstat や pjstat -v の出力」を参照してください。

表示内容に関する注意事項

  • pjstatコマンドを実行したユーザー自身のジョブだけが表示されます。
  • ステップジョブとバルクジョブの状態は、複数あるサブジョブの状態を総合した状態となります。このため、ジョブの状態は必ずしも個々のサブジョブの状態と一致しません。特に、バルクジョブでは様々な状況が発生します。例えば、ジョブがRUNOUT状態でも、一部のサブジョブがまだQUEUEDRUNNING状態の場合があります。ステップジョブとバルクジョブの正確な状態を知りたい場合は、pjstatコマンドの-Eオプションを使用してサブジョブの状態も表示させてください。詳細は後述の サブジョブの表示 を参照してください。

以下では、pjstatコマンドによるジョブ情報の表示例を示します。


サブジョブの表示#

デフォルトでは、バルクジョブやステップジョブのサブジョブは表示されません。サブジョブを表示するには-Eまたは--expandオプションを指定します。

$ pjstat -E
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM ... (*)
238 job.sh NM RUN user1 11/17 09:01:41 0001:00:00 ...
239 bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
239[1] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
239[2] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
239[3] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
239[4] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
239[5] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 ...
240 step.sh ST RUN user1 11/17 09:01:42 - ...
240_0 step.sh ST RUN user1 11/17 09:01:42 0001:00:00 ...
240_1 step.sh ST QUE user1 - 0001:00:00 ...
240_2 step.sh ST QUE user1 - 0001:00:00 ...
240_3 step.sh ST QUE user1 - 0001:00:00 ...
240_4 step.sh ST QUE user1 - 0001:00:00 ...
241 job2.sh NM RUN user1 11/17 09:01:42 0001:00:00 ...
(*) 右側の表示は省略

上記の例では、バルクジョブ(ジョブID 239)はサブジョブが 5つあり(サブジョブID 239[1] から 239[5])、すべてのサブジョブが実行中であることを示します。また、ステップジョブ(ジョブID 240)はサブジョブが 5つあり(サブジョブID 240_0 から 240_4)、サブョブID 240_0のサブジョブが実行中であることを示します。

バルクジョブとステップジョブのサマリ情報

バルクジョブとステップジョブにはジョブIDに対応する情報とサブジョブIDに対応する情報があります。本ユーザーガイドでは、前者を特にバルクジョブまたはステップジョブのサマリ情報と呼びます。上記の例では、ジョブID 239の行がバルクジョブのサマリ情報、ジョブID 240の行がステップジョブのサマリ情報になります。


ジョブ数のサマリを表示#

--with-summaryオプションを指定すると、pjstatコマンド実行者が投入したジョブの数を状態別にサマリ情報として表示します。

$ pjstat --with-summary
 ACCEPT QUEUED RUNING RUNOUT HOLD ERROR REJECT EXIT CANCEL TOTAL ← ジョブ数のサマリ
  0 0 4 0 0 0 0 0 0 4
s 0 4 8 0 0 0 0 0 0 12
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*) 
238 job.sh NM RUN user1 11/17 09:01:41 0001:00:00 12:2x3x2 ...
239 bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 12:2x3x2 ...
240 step.sh ST RUN user1 11/17 09:01:42 - - ...
241 job2.sh NM RUN user1 11/17 09:01:42 0001:00:00 2 ...
(*) 右側の表示は省略

ジョブ数のサマリは2行表示されます。上段では、バルクジョブおよびステップジョブについてはジョブ単位で集計します。下段(行頭にsがある行)では、バルクジョブおよびステップジョブについて、それらのサブジョブ数を集計します。

サマリの集計内容の詳細

上記例では前述の「サブジョブの表示」に示すように、通常ジョブが2つ、バルクジョブが1つ(サブジョブは5つ)、およびステップジョブが1つ(サブジョブは5つ)投入されているとします。

  • ジョブ数のサマリの上段 通常ジョブが2つ 、バルクジョブが1つ、およびステップジョブが1つなので、合計は4になります。
  • ジョブ数のサマリの下段 通常ジョブが2つ、バルクジョブのサブジョブが5つ、およびステップジョブのサブジョブが5つなので、合計は12になります。


特定のジョブについて表示#

pjstatコマンドにジョブIDまたはサブジョブIDを指定すると、そのジョブについてだけ表示します。ジョブIDは複数指定できます。

$ pjstat 238
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
238 job.sh NM RUN user1 11/17 09:01:41 0001:00:00 12:2x3x2 ...
$ pjstat '239[1]'
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
239[1] bulk.sh BU RUN user1 11/17 09:01:42 0001:00:00 12:2x3x2 ...
(*) 右側の表示は省略

ジョブID指定方法に関する注意事項

pjstatコマンドの引数にバルクジョブのサブジョブIDを指定する場合、括弧[]がシェルによって処理されないようにシングルクォートなどでエスケープしてください。

ジョブID やサブジョブID は複数指定でき、列挙する方式と範囲を指定する方式があります。

  • 列挙
$ pjstat 238 239                                       # 複数のジョブID
$ pjstat '239[1]' '239[2]' '239[3]' '239[4]' '239[5]'  # 複数のサブジョブID(バルクジョブ)
$ pjstat 240_0 240_1 240_2 240_3 240_4                 # 複数のサブジョブID(ステップジョブ)
  • 範囲の指定

    ジョブIDまたはバルク番号、ステップ番号をハイフンでつなげると、範囲指定となります。

$ pjstat 238-240       # ジョブID 238、239、240
$ pjstat '239[1-5]'    # サブジョブID 239[1]、239[2]、239[3]、239[4]、239[5]
$ pjstat 240_0-4       # サブジョブID 240_0、240_1、240_2、240_3、240_4


より詳しいジョブの情報を表示#

pjstatコマンドの-vオプションを指定すると、詳細表示部に各ジョブのより詳しい情報を表示できます。

$ pjstat -v
JOB_ID JOB_NAME MD ST USER GROUP START_DATE ELAPSE_TIM ELAPSE_LIM 
(*)NODE_REQUIRE VNODE CORE V_MEM V_POL E_POL RANK LST EC PC SN PRI ACCEPT
(*)RSC_GRP REASON
238 job.sh NM RUN user1 testgrp 11/17 09:01:41 0000:09:11 0001:00:00
(*)12:2x3x2 - - - - - - RNA 0 0 0 127 11/17 09:01:41
(*)rg001 -
239 bulk.sh BU RUN user1 testgrp 11/17 09:01:42 - 0001:00:00
(*)12:2x3x2 - - - - - - QUE - - - 127 11/17 09:01:41
(*)rg001 -
240 step.sh ST RUN user1 testgrp 11/17 09:01:42 - -
(*)- - - - - - - - - - - - -
(*)- -
241 job2.sh NM RUN user1 testgrp 11/17 09:01:42 0000:09:10 0001:00:00
(*)2 - - - - - - RNA 0 0 0 127 11/17 09:01:41
(*)rg001 -
(*) 実際にはこの行は直前の行の継続行として表示

表示項目の詳細

-vオプション指定時に表示される項目の詳細については、ジョブ運用ソフトウェア エンドユーザ向けガイドの 「A.1 pjstat や pjstat -v の出力」を参照してください。


特定の項目だけ表示#

pjstatコマンドの--chooseオプションを使用して、特定の項目だけ表示できます。--chooseオプションの引数に表示したい項目名を列挙すると、その順番に情報が表示されます。指定できる項目名はmanマニュアルpjstat(1)を参照してください。

以下は、ジョブID、ジョブ名、ジョブモデル、およびジョブ実行開始時刻を表示する例です。

$ pjstat --choose jid,jnam,jmdl,sdt
JOB_ID JOB_NAME MD START_DATE
238 job.sh NM 11/17 09:01:41
239 bulk.sh BU 11/17 09:01:42
240 step.sh ST 11/17 09:01:42
241 job2.sh NM 11/17 09:01:42

表示内容に関する注意事項

item名vpoepolrankm、およびvnid--chooseオプションにだけ指定できます。


特定の状況のジョブだけ表示#

pjstatコマンドの--filterオプションを使用して、指定した条件を満たすジョブだけ表示対象にできます。--filterオプションでは以下の条件指定ができます。指定できる項目名はpjstatコマンドのmanマニュアルを参照してください。

  • --filterオプションの条件指定
条件 書式 説明
値指定 --filter "項目=値" 項目が指定した値と一致した場合に表示対象とします。
例) --filter "jmdl=NM"
ジョブモデル(jmdl)が通常ジョブ(NM)のものを表示
例)--filter "st=RNA+RUN"
状態が RUNNING-A または RUNNING のジョブを表示
注: "+" 記号は、OR条件を示します。 "+" 記号を単なる文字として表現する場合はバックスラッシュを付加してください ("+")
範囲指定 --filter "項目=範囲" 項目が指定した範囲に含まれる場合に表示対象とします。
例) --filter "jid=1-10"
ジョブIDが 1から 10までのジョブを表示
例) --filter "jid=10-"
ジョブIDが 10以上のジョブを表示
例) --filter "jid=-20"
ジョブIDが 20以下のジョブを表示
例) --filter "jid=1-10+21-30"
ジョブIDが 1以上 10以下、または 21以上 30以下のジョブを表示
文字列パターン指定 --filter "項目=文字列パターン" 項目が指定した文字列パターンに一致する文字列の場合に表示対象とします。文字列パターンは以下の2種類が使用できます。
. (ピリオド): 改行文字以外の任意の1文字
* (アスタリスク):改行文字以外の 0文字以上の任意の文字列
例) --filter "jnam=jobA*"
ジョブ名が jobA で始まるジョブを表示
例) --filter "jnam=job."
ジョブ名が job とそれに続く 1文字で構成されるジョブを表示
例) --filter "jnam=jobA+jobB"
ジョブ名が jobA または jobB で始まるジョブを表示


リソースユニットまたはリソースグループ単位で表示#

--rscunit(--ru)オプションや--rscgrp(--rg)オプションを使用することで、リソースユニットまたはリソースグループ単位で表示できます。以下のようなジョブが投入されている場合の表示例を示します。

ジョブID 2927 : リソースユニット:rscunit_ft01、リソースグループ:arm-small で実行
ジョブID 2928 : リソースユニット:rscunit_ft01、リソースグループ:arm-medium で実行
ジョブID 2929 : リソースユニット:rscunit_pg01、リソースグループ:x86-medium で実行
  • リソースユニット単位で表示する場合

--rscunit(--ru)オプションを引数なしで指定します。--rscgrp(--rg)オプションは指定しません。

$ pjstat --rscunit
[ RSCUNIT: rscunit_ft01 ]
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
2927 jobA NM RUN user1 08/06 10:41:45 0001:00:00 1 ...
2928 jobB NM RUN user1 08/06 10:42:03 0001:00:00 2 ...
[ RSCUNIT: rscunit_pg01 ]
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
2929 jobC NM RUN user1 08/06 10:43:21 0001:00:00 2 ...
(*) 右側の表示は省略
  • リソースユニットおよびリソースグループ単位で表示する場合

--rscgrp(--rg)オプションに加えて、--rscunit(--ru)オプションも引数なしで指定します。

$ pjstat --rscunit --rscgrp
[ RSCUNIT: rscunit_ft01 ]
[ RSCGRP: arm-medium ]
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
2928 jobB NM RUN user1 08/06 10:42:03 0001:00:00 2 ...
[ RSCUNIT: rscunit_ft01 ]
[ RSCGRP: arm-small ]
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
2927 jobA NM RUN user1 08/06 10:41:45 0001:00:00 2 ...
[ RSCUNIT: rscunit_pg01 ]
[ RSCGRP: x86-medium ]
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
2929 jobC NM RUN user1 08/06 10:43:21 0001:00:00 2 ...
(*) 右側の表示は省略

--dataオプションを指定することで、表示データを列挙形式で出力できます。このオプションとともに-rscgrp(--rg)オプションや--rscunit(--ru)オプションを指定すると、以下の下線部分のように RSCUNIT(リソースユニット)や RSCGRP(リソースグループ)フィールドが追加されます。これにより、出力されるレコードがどのリソースユニットまたはリソースグループの内容かを判断できます。

$ pjstat --rscunit rscunit_ft01 --rscgrp arm-small --data
H,RSCUNIT,RSCGRP,,JOB_ID,JOB_NAME,MD,ST,USER,START_DATE,ELAPSE_LIM,NODE_REQUIRE,VNODE,CORE,V_MEM
,rscunit_ft01,arm-small,2927,jobA,NM,RUN,user1, 08/06 10:41:45,0001:00:00,2,-,-,-
pjstatコマンドのオプションは上記以外にもあります。詳細はpjstatコマンドの manマニュアルを参照してください。

ジョブ統計情報の表示#

実行中のジョブのジョブ統計情報をpjstatコマンドの-sまたは-Sオプションで表示できます。-Sオプションは-sオプションよりも詳細なジョブ統計情報を表示します。

以下はジョブ統計情報を表示する例です。

$ pjstat -s
JOB ID : 9417
JOB NAME : script.sh
JOB TYPE : BATCH
JOB MODEL : NM
RETRY NUM : 0
SUB JOB NUM : -
USER : user
GROUP : group
RESOURCE UNIT : rscunit_ft01
RESOURCE GROUP : arm-small
APRIORITY : 127
PRIORITY : 127
SHELL : /bin/sh
COMMENT :
...

ジョブ統計情報表示時の注意事項

  • ジョブIDを指定しない場合、pjstatコマンドを実行したユーザーのすべてのジョブについてジョブ統計情報が表示されます。ジョブ統計情報は表示される内容が多いため、大量にジョブがある場合は注意してください。
  • 実行中のジョブのジョブ統計情報のうち、資源使用状況に関する情報(メモリ使用量やCPU使用時間など)は更新が最大で10分程度遅れる場合があります。
  • Armシステム(FX1000)には、ジョブに割り当てたCPUコア以外に、アシスタントコアと呼ぶCPUコアがあります。アシスタントコアは、ジョブの実行性能を劣化させるOSの割り込み処理やデーモンの処理などを受け持ちます。ジョブではMPI非同期通信処理をこのアシスタントコア上で実行します。このため、Armシステムで実行中のジョブのジョブ統計情報には、 ジョブに割り当てた資源以外に、MPI非同期通信処理に関するアシスタントコアの使用情報も出力されます。

表示項目の詳細

表示されるジョブ統計情報の詳細については、manマニュアルpjstatsinfo(7)を参照してください。

ジョブの終了の確認#

ジョブが終了したことは以下の方法で確認できます。

  • pjstatコマンドによるジョブの状態の確認

ジョブが終了(EXITREJECTまたはCANCEL状態)すると、pjstatコマンドの通常の表示対象外となります。-Hまたは--historyオプションを指定すると、終了したジョブだけ表示されます。

$ pjstat -H
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
1234567 jobname1 NM EXT usrname 01/01 00:00:00 0100:00:00 12:2x3x2 ... (*1)
1234570 jobname1 NM RJT usrname 01/01 00:00:00 0100:00:00 12:2x3x2 ... (*2)
1234590 jobname1 NM CCL usrname 01/01 00:00:00 0100:00:00 12:2x3x2 ... (*3)
(*) 右側の表示は省略
(*1) EXIT 状態のジョブ (*2) REJECT 状態のジョブ (*3) CANCEL 状態のジョブ

終了ジョブに関する注意事項

  • 終了したジョブの状態は、一定期間だけ保持されます。このため、上記操作をしたときに状態の保持期間を過ぎているジョブについては状態が表示されません。
  • バルクジョブとステップジョブの終了したサブジョブは、同一ジョブ内のすべてのサブジョブが終了すると-Hオプション指定時の表示に含まれます。それまでは-Hオプションを指定しないときの表示に含まれます。

下記の例では、ステップジョブのサブジョブ 4_0は終了していますが、ほかのサブジョブが実行中のため(ジョブ 4がRUNNING状態)、-Hオプションを指定しない場合に表示されます。

$ pjstat -E
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
4 t1.sh ST RUN user1 07/12 13:09:43 - - ...
4_0 t1.sh ST EXT user1 07/12 13:09:43 0001:00:00 32 ...
4_1 t2.sh ST RUN user1 07/12 13:50:32 0001:00:00 32 ...
...
$ pjstat -E -H
JOB_ID JOB_NAME MD ST USER START_DATE ELAPSE_LIM NODE_REQUIRE ... (*)
1 t1.sh NM EXT user1 07/05 08:05:11 0001:00:00 32 ...
2 t2.sh NM EXT user1 07/06 12:30:50 0001:00:00 32 ...
(*) 右側の表示は省略
  • メールによる通知

ジョブ投入時にpjsubコマンドの-mオプションでメール通知の指定をしている場合、ジョブが終了するとユーザー宛にメールが送信されます。メール通知の方法については、メール通知の指定を参照してください。

pjwaitコマンドによるジョブ終了の待ち合わせ#

ユーザーは、特定のジョブの終了をpjwaitコマンドで待ち合わせることができます。pjwaitコマンドは指定されたジョブが終了するまで復帰しません。以下は、3つのジョブを投入し、それらの終了をpjwaitコマンドで待ち合わせる例です。

$ pjsub job1.sh
[INFO] PJM 0000 pjsub Job 5300 submitted.
$ pjsub job2.sh
[INFO] PJM 0000 pjsub Job 5301 submitted.
$ pjsub job3.sh
[INFO] PJM 0000 pjsub Job 5302 submitted.
$ pjwait 5300 5301 5302   # 指定したジョブすべてが終了するまで待つ
5300 0 0 -                # 各ジョブのジョブID、ジョブ終了コード、
5301 0 1 -                # ジョブスクリプトの終了ステータス、シグナル番号
5302 0 0 -