ジョブスケジューラー torque の設定

  • 履歴
    • 2013/04/09 杉山耕一郎, 荻原弘尭
    • 2013/10/04 荻原弘尭
    • 2017/10/19 荻原弘尭

スケジューラーの設定

ログインノードでのインストールと設定

  • Debian パッケージのインストール

    # apt-get install torque-scheduler torque-server
  • サーバ名の設定. hikari を設定する

    # vi /etc/torque/servername
    
    hikari
  • 計算ノードの一覧を作成

    # vi /etc/torque/nodes
    
    hikari101 np=6
    hikari102 np=6
    hikari103 np=6
    hikari104 np=6
    hikari105 np=6
    hikari106 np=6
    hikari107 np=6
    hikari108 np=6
    hikari109 np=6
    hikari110 np=6
    hikari111 np=6
    hikari112 np=6
    
    # cd /var/spool/torque/server_priv/
    # ln -s /etc/torque/nodes .  
  • 再起動

    # /etc/init.d/torque-server restart
    # /etc/init.d/torque-scheduler restart

計算ノードでのインストールと設定

  • Debian パッケージをインストールする

    # apt-get install torque-mom torque-client
  • サーバ名の設定. hikari を設定

    # vi /etc/torque/server_name
    
    hikari
  • /work00 を NFS していることを教え込む. (これにより標準出力・エラーをログインノードに戻すのに scp を使わないで済む)
    • マニュアル

      # vi /etc/torque/config
      
       $usecp *:/work00 /work00
      
      # cd /var/spool/torque/mom_priv/
      # ln -s /etc/torque/config .
  • 再起動
    • restart だと fail する. stop に時間がかかるらしい

      # /etc/init.d/torque-mom stop
      # /etc/init.d/torque-mom start
  • 確認

    # momctl -d3
    
    Host: hikari1xx/hikari1xx.ep.sci.hokudai.ac.jp   Version: 2.4.16   PID: 15302
    Server[0]: hikari (192.168.90.1:15001)
      Init Msgs Received:     0 hellos/1 cluster-addrs
      Init Msgs Sent:         1 hellos
      Last Msg From Server:   10 seconds (CLUSTER_ADDRS)
      Last Msg To Server:     10 seconds
    HomeDirectory:          /var/spool/torque/mom_priv
    stdout/stderr spool directory: '/var/spool/torque/spool/' (91020497 blocks available)
    NOTE:  syslog enabled
    MOM active:             11 seconds
    Check Poll Time:        45 seconds
    Server Update Interval: 45 seconds
    LogLevel:               0 (use SIGUSR1/SIGUSR2 to adj
    ust)
    Communication Model:    RPP
    MemLocked:              TRUE  (mlock)
    TCP Timeout:            20 seconds
    Prolog:                 /var/spool/torque/mom_priv/pr
    ologue (disabled)
    Alarm Time:             0 of 10 seconds
    Trusted Client List:    192.168.90.101,192.168.90.1,1
    92.168.90.111,192.168.90.110,192.168.90.109,192.168.9
    0.108,192.168.90.107,192.168.90.106,192.168.90.105,19
    2.168.90.104,192.168.90.103,192.168.90.102,127.0.0.1
    Copy Command:           /usr/bin/scp -rpB
    NOTE:  no local jobs detected
    
    diagnostics complete

ジョブの作成(ログインノード)

  • 確認. まだキューを作成していないので何も表示されないはず

    # qstat -a
  • キューを作成する.
    • 今回は short (30 分, 優先度高) と, long (時間無制限, ユーザの同時ジョブ数7, 全体のジョブ数20, 優先度低) の 2 つを用意する.

      # qmgr -c "set server scheduling=true"
      # qmgr -c "create queue long queue_type=execution"
      # qmgr -c "create queue short queue_type=execution"
      # qmgr -c "set queue long started=true"
      # qmgr -c "set queue short started=true"
      # qmgr -c "set queue long priority=30"
      # qmgr -c "set queue short priority=50"
      # qmgr -c "set queue long enabled=true"
      # qmgr -c "set queue short enabled=true"
      # qmgr -c "set queue long resources_default.nodes=1"
      # qmgr -c "set queue long max_running=20"
      # qmgr -c "set queue long max_user_queuable=7"
      # qmgr -c "set queue short resources_default.nodes=1"
      # qmgr -c "set queue short resources_default.walltime=3600"
      # qmgr -c "set server default_queue=short"
  • 確認. 以下のコマンドでキューの情報が出れば OK.

    # qstat -q
  • 試しにジョブを実行する. qstat でジョブの情報が得られれば OK. root ではキューを投げられないので注意.

    $ echo "sleep 30" | qsub
    $ qstat

ユーザ設定

  • ログインノードにアカウントがあっても計算ノードにアカウントが無いと, ジョブを実行できない. /etc/passwd, /etc/shadow, ホームディレクトリを用意する.
  • /work00/bin/adduser.rb として, ユーザ登録スクリプトを用意した.
    • 引数にユーザ名を与える.

      # ruby /work00/bin/adduser.rb sugiyama  
  • やっていることは..., 以下, スクリプトから適当に抜粋.

    1) homedir が無ければそれを作る
    workdir = "/work00"
    homedir = "#{workdir}/#{user}"
    
    2) /etc/passwd, /etc/group, /etc/shadow にエントリを追加.
    passwd = "#{user}:x:#{uid}:#{uid}:,,,:#{homedir}:/bin/bash"
    shadow = "#{user}:!:14249:0:99999:7:::"
    group  = "#{user}:x:#{uid}:"

single CPU テスト

  • "/work00/ユーザ名" 以下でジョブを投入する.
    • root 権限ではジョブを投入できないので注意.
  • ここでは, /work00/sugiyama/a.out を実行するスクリプト (test.sh) を作る.

    $ vi test.sh
    
     #!/bin/sh
     #PBS -N sample
     #PBS -j oe
     #PBS -q long
     #PBS -M sugiyama@gfd-dennou.org
     #PBS -m abe
    
     cd /work00/sugiyama
     ./a.out
     exit 0
  • ジョブを投入する.
    • うまくいけば, 出力が sample.o** に書き出される.

      $ qsub test.sh
      $ qstat

MPI テスト

  • "/work00/ユーザ名" 以下でジョブを投入する.
    • root 権限ではジョブを投入できないので注意.
  • ここでは, /work00/sugiyama/a.out を実行するスクリプト (testmpi.sh) を作る.

    $ vi testmpi.sh
    
     #!/bin/sh
     #PBS -N sample
     #PBS -j oe
     #PBS -q long
     #PBS -M sugiyama@gfd-dennou.org
     #PBS -m abe
     #PBS -l nodes=2
    
     cd /work00/sugiyama
     mpiexec -n 2 ./a.out
     exit 0
  • ジョブを投入する.
    • うまくいけば, 出力が sample.o** に書き出される.

      $ qsub testmpi.sh
      $ qstat

参考

  • http://www.clusterresources.com/torquedocs21/a.ltorquequickstart.shtml
  • http://debianclusters.cs.uni.edu/index.php/Resource_Manager:_Torque
  • http://www.ie.u-ryukyu.ac.jp:16080/howto/index.php?Howto%2FTORQUE
  • http://www.cms-initiative.jp/ja/research-support/supercomputing-support/psi/doc/torque
  • http://docs.adaptivecomputing.com/torque/6-1-1/adminGuide/torqueAdminGuide-6.1.1.pdf