ジョブの標準出力をモニターする

qsubでジョブを投入すると、リソースの空いているノードにジョブが投入される。
その計算中の標準出力を見るにはどうしたらいいのか?

投入先のノードは qstat -n -1 <queue id> で見つけられる
そして標準出力は、ノードの /var/lib/torque/spoolに置かれるので、下記のような単純なスクリプトで行ける

#!/bin/bash
#
if [ $# -ne 1 ]; then
   echo "usage qcat <queue ID>" 1>&2
   exit 1
fi
#
host=$(qstat -n -1 $1 | tail -n1 | awk '{print $12}' | tr -s '+', '\n' | sort -u)
for i in $host
do
f=$(rsh $i ls /var/lib/torque/spool/$1.*.OU 2>/dev/null)
if [ $f ]; then
   rsh $i cat $f
   exit
fi
done

*rshで運用している場合の例です
MPIで投げている場合、qstat -n -1 <queue id>で投げているノードが全て判明して、その中のrank0で標準出力を出しているのなら、順繰り回して探すスクリプトです

計算ノードはユーザログイン禁止にする

rsh系なら各ノードのrshは許可するが、rloginは起動させない

[root@c1 ~]# systemctl list-unit-files
 :
rlogin.socket                                 disabled
rsh.socket                                    enabled
 :

sshは、

[root@c1 ~]# vi /etc/ssh/sshd_config
 :
AllowUsers supervisor root
[root@c1 ~]#

としておく

バージョン違いが混在

管理ノードと計算ノードでバージョンの違いがあっても問題ないのか調べてみた
管理サーバは4.2.10、計算ノードを最新の6.1.1とした
torque-6.1.1の調理方法はrpmbuildで作りました。ソースは開発元から取得して、その中に「torque.spec」ファイルがあります。ソースは~/rpmbuild/SOURCEへ、「torque.spec」ファイルは修正後~rpmbuild/SPECSへ配置します。
「torque.spec」ファイルの変更箇所

  • 25行目(drmaa,gui,libcpuset,munge,pam,readlineを「bcond_without」へ)
    [root@c ~]# diff -u rpmbuild/SPECS/torque.spec.orig rpmbuild/SPECS/torque.spec
    ### Features disabled by default
    %bcond_with    blcr
    %bcond_with    cpuset
    %bcond_with    cgroups
    %bcond_with    debug
    %bcond_without    drmaa
    %bcond_without    gui
    %bcond_without    libcpuset
    %bcond_with    memacct
    %bcond_without    munge
    %bcond_with    numa
    %bcond_without    pam
    %bcond_with    top
    %bcond_without    readline
  • 75行目(torque_homeを/var/spool/torqueから/var/lib/torqueへ)
    ### Macro variables
    %{!?torque_user:%global torque_user torque}
    %{!?torque_home:%global torque_home %{_var}/lib/%{name} }
    %{!?torque_server:%global torque_server localhost}
    %{!?sendmail_path:%global sendmail_path %{_sbindir}/sendmail }
  • 417行目(%files欄へファイルを追加)
      %{_mandir}/man*/*
     +/etc/ld.so.conf.d/torque.conf
     +/etc/profile.d/torque.csh
     +/etc/profile.d/torque.sh

specファイルが書き終わったらrebuild

[root@c ~]# rpmbuild -bb rpmbuild/SPECS/torque.spe

完成したrpmファイルを計算ノードに送って、

[root@n2 ~]# yum localinstall ./torque-6.1.1.1-1.adaptive.el7.centos.x86_64.rpm \
   ./torque-client-6.1.1.1-1.adaptive.el7.centos.x86_64.rpm

としてインストール。(事前に前のtorque環境は削除したほうがいいかも)
pbd_momを起動させ、管理サーバから見ていると

[root@pbs ~]# pbsnodes
n1.sybyl.local
     state = free
     np = 1
     properties = bio
     ntype = cluster
     status = rectime=1493821456,varattr=,jobs=,state=free,netload=7894397,gres=,loadave=0.00,ncpus=1,(略
     mom_service_port = 15002
     mom_manager_port = 15003
 
n2.sybyl.local
     state = free
     np = 2
     properties = chem
     ntype = cluster
     status = rectime=1493821483,version=6.1.1.1,macaddr=(略
     mom_service_port = 15002
     mom_manager_port = 15003
 
n3.sybyl.local
     state = free
     np = 3
     properties = chem
     ntype = cluster
     status = rectime=1493821488,varattr=,jobs=,state=free,netload=8008005496,gres=,loadave=0.00,ncpus=1,(略
     mom_manager_port = 15003
 
[root@pbs ~]#

と「n2」のみversionが明記され、フォーマットが若干異なっている。
qsubでジョブを流してみたが、問題なく流れている


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-05-03 (水) 23:47:03 (78d)