SLURMで管理されたキュー情報の確認方法(自身のジョブがいつ実行されるかを知る手段)としては、下記のとおり3種類ある。(squeuesは某スパコン独自の仕様)
sinfo -s
キュー名、ノードリスト、ノード利用状況の確認に。
$ sinfo -s -p d024h,d072h
PARTITION AVAIL TIMELIMIT NODES(A/I/O/T) NODELIST
d024h up 1-00:00:00 36/22/0/58 d[001-002,013-060,073-080]
d072h up 3-00:00:00 28/2/0/30 d[001-002,013-040]
=> ノード基準で利用状況を表示するので、複数キューに割り当てられた
ノードは各キューでそれぞれカウントされる(重複する)。
(d024hでジョブが実行されてd001が割当てられると、d024h/d072hそれぞれの "NODES(A)" が1減る)
=> PENDING中のノード数は "NODES" にカウントされないので、"NODES(I)" が十分でも実行されない可能性がある。
squeues
キュー別のノード利用状況の確認に。
$ squeues | grep -E "^Q|^d"
QUEUE_NAME TIMELIMIT STATUS MAXNODES NNODES PEND RUN FREE
d024h 1-00:00:00 up 58 20 6 14 22
d072h 3-00:00:00 up 30 22 0 22 2
=> sinfoと違い、キューを基準とした利用状況が表示される。
d024hで実行された場合は、d024hの "RUN" にしかカウントされない。
(そのため "RUN" の数はsinfoの "NODES(A)" とは一致しない場合がある)
=> "NNODES" は "RUN" と "PEND" の加算値で、そのキューで要求されているノード数の合計(混み具合)を示す。
("PEND" も含むため "MAXNODES" を超える場合がある)
=> "FREE" は空きノードを示すが、"PEND" が1以上であった場合には、基本的には先にPENDINGに
入ったものから実行されるため、"FREE" 以下を指定してもすぐに実行されない可能性がある。
"FREE" から "PEND" を除算した数を指定すれば先に実行される可能性は上がる。
=> ユーザが複数のジョブに(Dependency)をもたせている場合も、"PEND" として計上される。
freenodes
システム別の空きノードの確認に。
$ freenodes | grep "D sys"
Number of free nodes in D sys. with FDR-IB connected is 22/ 58.
=> キューに拘らずシステム全体の空きノードを確認したい場合に使う。
=> squeuesで "FREE" を確認したほうが、より正確な目安になる。