計算サーバに関する質問

自分が過去に実行したPBSジョブの情報を見ることはできるでしょうか?

はい、できます。
最初の方法は tracejob コマンドです。
以下は過去30日分のPBSログファイルを対象としてジョブを検索する作業例です。

m000% tracejob -n 30 11999
    
  Job: 11999.m000
    
  11/22/2005 10:36:53  S    Job Queued at request of useratm000[dot]cfca[dot]nao[dot]ac[dot]jp,
                            owner = useratm000[dot]cfca[dot]nao[dot]ac[dot]jp, job name = test.sh,
                            queue = short
  11/22/2005 10:36:53  S    Job Modified at request of
                            Scheduleratm000[dot]cfca[dot]nao[dot]ac[dot]jp
  11/22/2005 10:36:53  S    enqueuing into short, state 1 hop 1
  11/22/2005 10:36:53  A    queue=short
  11/22/2005 13:26:53  L    Server job limit reached
  11/22/2005 13:35:27  L    Considering job to run
  11/22/2005 13:35:27  S    Job Modified at request of
                            Scheduleratm000[dot]cfca[dot]nao[dot]ac[dot]jp
  11/22/2005 13:35:27  S    Job Run at request of Scheduleratm000[dot]cfca[dot]nao[dot]ac[dot]jp
                            on hosts m004
  11/22/2005 13:35:28  L    Job run
  11/22/2005 13:35:28  A    user=user group=naocc jobname=test.sh queue=short
                            ctime=1132623413 qtime=1132623413 etime=1132623413
                            start=1132634128 exec_host=m004/0
                            Resource_List.cput=00:30:00 Resource_List.ncpus=1
                            Resource_List.neednodes=1 Resource_List.nodect=1
                            Resource_List.nodes=1
  11/22/2005 13:39:28  S    Obit received
  11/22/2005 13:39:28  S    Exit_status=0 resources_used.cpupercent=8
                            resources_used.cput=00:00:28 resources_used.mem=4324kb
                            resources_used.ncpus=1 resources_used.vmem=21992kb
                            resources_used.walltime=00:03:59
  11/22/2005 13:39:28  A    user=user group=naocc jobname=test.sh queue=short
                            ctime=1132623413 qtime=1132623413 etime=1132623413
                            start=1132634128 exec_host=m004/0
                            Resource_List.cput=00:30:00 Resource_List.ncpus=1
                            Resource_List.neednodes=1 Resource_List.nodect=1
                            Resource_List.nodes=1 session=24075 end=1132634368
                            Exit_status=0 resources_used.cpupercent=8
                            resources_used.cput=00:00:28 resources_used.mem=4324kb
                            resources_used.ncpus=1 resources_used.vmem=21992kb
                            resources_used.walltime=00:03:59
  11/22/2005 13:45:44  S    dequeuing from short, state 5

もしも過去30日以内のログファイルに当該ジョブの情報が見付からなければ、以下のように言われるでしょう。

m000% tracejob -n 30 478369
tracejob: Couldn't find Job Id 478369.m000 in logs of past 30 days

次の方法はコマンド qstat -fx です。
以下が例となります。

m000% qstat -fx 478369
Job Id: 478369.m000
    Job_Name = t2_Dec24
    Job_Owner = itootk@m000
    resources_used.cpupercent = 98
    resources_used.cput = 1358:01:11
    resources_used.mem = 6144kb
    resources_used.ncpus = 1
    resources_used.vmem = 458480kb
    resources_used.walltime = 1364:51:03
    job_state = R
    queue = long
    server = m000
    Checkpoint = u
    ctime = Mon Apr  7 17:13:34 2025
    Error_Path = m000:/home/itootk/Log.err
    exec_host = e122/0
    exec_vnode = (e122:ncpus=1)
    Hold_Types = n
    Join_Path = n
    Keep_Files = n
    Mail_Points = ae
    Mail_Users = itootkatcfca[dot]nao[dot]ac[dot]jp
    mtime = Tue Jun  3 14:04:38 2025
    Output_Path = m000:/home/itootk/Log.out
    Priority = 0
    qtime = Mon Apr  7 17:13:34 2025
    Rerunable = False
    Resource_List.ncpus = 1
    Resource_List.nodect = 1
    Resource_List.nodes = 1
    Resource_List.place = scatter
    Resource_List.select = 1:ncpus=1
    stime = Mon Apr  7 17:13:34 2025
    session_id = 193397
    jobdir = /home/itootk
    substate = 42
    Variable_List = PBS_O_HOME=/home/itootk,PBS_O_LANG=en_US.UTF-8,
	PBS_O_LOGNAME=itootk,
	PBS_O_PATH=/home/itootk/bin:/opt/pbs/bin:/usr/local/bin:/usr/bin:/us
	r/local/sbin:/usr/sbin,PBS_O_MAIL=/var/spool/mail/itootk,
	PBS_O_SHELL=/bin/csh,PBS_O_WORKDIR=/home/itootk,
	PBS_O_SYSTEM=Linux,PBS_O_QUEUE=long,PBS_O_HOST=m000
    comment = Job run at Mon Apr 07 at 17:13 on (e122:ncpus=1)
    etime = Mon Apr  7 17:13:34 2025
    run_count = 1
    Submit_arguments = pbs_m000.sh
    project = _pbs_project_default
    Submit_Host = m000

(最終更新日 2025年6月3日)

特定のジョブが終わってから次の特定のジョブが走るqsubオプションはありますか?

はい、あります。
オプション -W depend=afterok:ジョブID オプションを使用してください。

  qsub -W depend=afterok:244.m000 JOB_B

これにより、JOB_A が終了した後に JOB_B が走り出します。

  Job id           Name             User             Time Use S Queue
  ---------------- ---------------- ---------------- -------- - -----
  244.m000         JOB_A            user             00:00:09 R short
  245.m000         JOB_B            user             00:00:00 H short
  246.m000         JOB_C            user             00:00:00 R short

上記の他に afterng, afterany も指定できます。
qsub のマニュアルを御覧ください。
(最終更新日 2025年6月3日)

m000からPBSジョブを投入すると、以下のエラーが出てジョブが終了します。

以下の 9391 というエラー番号は何を意味しているのでしょうか?

  /var/spool/PBS/mom_priv/jobs/211.m000.SC: line 20:  9391 強制終了

PBS関係の文書の幾つかに記されていますが、エラー番号 9391 の意味は以下です。

  • 実行されたジョブの仮想メモリ領域へのダイナミックメモリ割り当て要求が制限を越え、割り当てできず、結果的にカーネルがそのジョブを強制終了させた。

つまり当該PBSジョブが仮想メモリ領域を使い切り、プロセスが停止したということです。
これを解決するには、仮想メモリ制限内で動作するように扱うジョブが扱うデータを小さくするしかありません。
(最終更新日 2025年6月3日)

ジョブをqsubしましたが、以下のエラーが出力されてジョブが走りません。

以下のように言われます。

  stty: standard input: Invalid argument
  forrtl: severe (174): SIGSEGV, possible program stack overflow occurred.
  Program requirements exceed current stacksize resource limit.
  Superusers may try increasing this resource by 'limit stacksize xxx',
  where xxx is unlimited or something larger than your current limit.
  Other users should contact your system administrator for help.

このエラーはstacksize上限を解除すると回避できることがあります。
cshやtcshの場合には以下のようにしてください。

  unlimit

shや bashの場合には以下のようにしてください。

  ulimit -s unlimited

PBSスクリプト内では以下のようにして上限解除の指定を追加してください。

  #!/bin/sh
  #PBS -r y
  #PBS -m ae
  #PBS -q long
  #PBS -l nodes=1
  
  # This job's working directory
  echo Working directory is $PBS_O_WORKDIR
  cd $PBS_O_WORKDIR
  echo Running on host `hostname`
  echo Time is `date`
  echo Directory is `pwd`
    
  # Run your executable
  ulimit -s unlimited		# ★ここに追加
  ./a.out

(最終更新日 2024年以前)

PBSジョブの経過時間(walltime)に比べてCPU時間(cputime)が短いようです。

これは何故でしょうか?
下記には qstat -f の結果の一部を抜粋します。

  $ qstat -f 562
  Job Id: 562.m000.cfca.nao.ac.jp
    resources_used.cput = 03:52:54
    resources_used.walltime = 68:57:58
    exec_host = m004/0

主に以下の二つの可能性が考えられるでしょう。

  • このジョブに伴うファイル入出力にとても時間が掛かっている。
    ご自分のジョブが不必要に頻繁なファイル入出力を行っていないか否かを検証してください。
  • 計算ノード(上記の場合にはm004)に障害が発生している。
    こちらが疑われる場合には、お手数ですがこのページから詳細の報告をお願いします。

なお後者つまり計算ノードの障害の場合には、当該 PBS ジョブを強制終了する可能性が高いです。
予めご了承ください。
(最終更新日 2025年6月3日)

標準出力ファイルと標準エラー出力ファイル内の記載について質問します。

PBSジョブの終了後、標準出力ファイル file.oXXXX と標準エラー出力ファイルfile.eXXXX が出来ます。
それぞれには以下の記載がありましたがその意味が分かりません。
標準出力ファイル file.oXXXX :

  Warning: no access to tty (Bad file descriptor).
  Thus no job control in this shell.

標準エラー出力ファイル file.eXXXX :

  stty: standard input: Invalid argument

これらは何を意味しているのでしょうか?
上記のメッセージに実害はあるのでしょうか?

ログインシェルに csh または tcsh が使われているとこのメッセージが出力されることがあります。
しかしジョブの実行に実害はありませんので、気にしないでください。
(最終更新日 2025年6月3日)

私のPBSスクリプト内で環境変数にどの値が入っているのかを知りたいです。

これはPBSが持つ組み込み環境変数のことです。
どのようにすればその一覧を表示できるでしょうか?

あなたがPBSスクリプトをcsh文法で記しているならば以下のような方法があります。
/bin/sh や bash をお使いの場合にはそれ用に書き直してください。
なお幾つかのPBS環境変数にはデフォルト値が設定されていません。

  set pbsvariables = (\ 
    NCPUS \ 
    OMP_NUM_THREADS \ 
    PBS_ARRAY_ID \ 
    PBS_ARRAY_INDEX \ 
    PBS_ENVIRONMENT \ 
    PBS_JOBCOOKIE \ 
    PBS_JOBID \ 
    PBS_JOBNAME \ 
    PBS_MOMPORT \ 
    PBS_NODEFILE \ 
    PBS_NODENUM \ 
    PBS_O_HOME \ 
    PBS_O_HOST \ 
    PBS_O_LANG \ 
    PBS_O_LOGNAME \ 
    PBS_O_MAIL \ 
    PBS_O_PATH \ 
    PBS_O_QUEUE \ 
    PBS_O_SHELL \ 
    PBS_O_SYSTEM \ 
    PBS_O_TZ \ 
    PBS_O_WORKDIR \ 
    PBS_QUEUE \ 
    PBS_TASKNUM \ 
    TMPDIR \ 
  ) 
  foreach pbsvar ($pbsvariables[*]) 
    if (`eval echo '$'${pbsvar}` == '') then 
      echo "$pbsvar is not defined" 
    else 
      eval echo $pbsvar='$'${pbsvar} 
    endif 
  end 

(最終更新日 2025年6月3日)

qdelを用いてジョブ削除しようとしましたが、消えません。

どのようにすれば良いでしょうか?

計算ノードとの通信状況が悪い時にこれが発生することがあります。
qdel コマンドにオプション -W force を付けて実行してみてください。

  qdel -W force ジョブID ...

オプション -W force の意味は "Deletes the job whether or not the job' execution host is reachable." です。
詳しくは man qdel を参照してください。
なお上記のオプションを付けてもジョブを qdel できない場合にはジョブに何らかの障害が発生している可能性があります。
その場合はこのページから報告をお願いします。
(最終更新日 2024年以前)

作業領域 /mwork{1,2}/ 下に置いたディレクトリはどう扱われますか?

ここに置いた通常ファイルが一定期間後に消えることは承知していますが、ディレクトリも同様に自動削除されるのでしょうか?

いいえ、ディレクトリは自動的には削除されません。
従って、ディレクトリ内にあるファイルは削除された後には空のディレクトリだけが残ることになります。
(最終更新日 2025年6月3日)