TORQUE のセットアップ2018年10月10日 | |
はじめにTORQUE のセットアップをする。 環境
TORQUE のセットアップ (Ubuntu)ここでは、サーバーとクライアントを同一マシン (host01) とする。 パッケージのインストール。 $ sudo apt-get install torque-server torque-mom サーバーを止める。 $ sudo service torque-server stop $ sudo service torque-scheduler stop $ sudo service torque-mom stop /etc/torque/server_name にサーバーの名前を設定する。 /etc/torque/server_name host01 /var/spool/torque/server_priv/nodes を作成し、ノードの設定をする。 /var/spool/torque/server_priv/nodes host01 np=6 サーバーの設定。 /var/spool/torque/mom_priv/config $pbsserver host01 サーバーを起動。 $ sudo service torque-server start $ sudo service torque-scheduler start $ sudo service torque-mom start それぞれ status でログを確認してみて、失敗していたら、それぞれに対応する pbs デーモンを止めてやりなおす。 ノードの確認。 $ pbsnodes "state = free" と出ればよい。 キューの作成。 $ sudo qmgr Qmgr: create queue q1 Qmgr: set queue q1 queue_type = Execution Qmgr: set queue q1 enabled = True Qmtr: set queue q1 started = True ここで、"Unauthorized Request" というエラーが出た。 /etc/hosts で host01 の IP アドレスを設定。 127.0.0.1 localhost #127.0.1.1 host01 192.168.1.1 host01 DHCP でアドレスを取得している場合は、次のようにする。 #127.0.0.1 localhost #127.0.1.1 host01 127.0.0.1 host01 localhost これでキューを作成できるはず。 実行スクリプトを作成。 run #!/bin/sh cd $PBS_O_WORKDIR sleep 10 投入。 $ qsub -q q1 run 次のようなエラーが出るかもしれない。 qsub: Bad UID for job execution MSG=ruserok failed validating xxxx/xxxx from host01 この場合は、次のように設定を追加。 $ sudo qmgr Qmgr: set server submit_hosts = host01 ジョブ投入。 $ qsub -q q1 run $ qstat Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 1.host01 run xxxx 0 Q q1 ステータスが "Q" のまま実行されない。 設定追加。 $ sudo qmgr Qmgr: set server scheduling = True ジョブ投入。 $ qsub -q q1 run $ qstat Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 2.host01 run xxxx 0 R q1 OK。 参考
TORQUE のセットアップ (RHEL)ここでは、サーバーとクライアントを同一マシン (host01) とする。 EPEL は導入済み。パッケージのインストール。 # yum install torque-server torque-scheduler torque-mom torque-client /etc/hosts に host01 の IP アドレスを設定しておく。 pbs_server を実行。 # pbs_server -t create # killall pbs_server /etc/torque/server_name にサーバーの名前を設定する。 /etc/torque/server_name host01 /var/lib/torque/server_priv/nodes を作成し、ノードの設定をする。 /var/lib/torque/server_priv/nodes host01 np=40 num_node_boards=1 numa_board_str=40 サーバーの設定。 /var/spool/torque/mom_priv/config $pbsserver host01 サーバーを起動。 # systemctl start pbs_server # systemctl start pbs_sched # systemctl start pbs_mom # systemctl start trqauthd # create-munge-key # systemctl start munge ノードの確認。 $ pbsnodes "state = free" と出ればよい。 スケジューリングの有効化。 $ sudo qmgr Qmgr: set server scheduling = True キューの作成。 $ sudo qmgr Qmgr: create queue q1 Qmgr: set queue q1 queue_type = Execution Qmgr: set queue q1 enabled = True Qmgr: set queue q1 started = True 実行スクリプトを作成。 run #!/bin/sh cd $PBS_O_WORKDIR sleep 10 投入。 $ qsub -q q1 run 実行されれば OK。 サーバーの自動起動の設定。 # systemctl enable pbs_server pbs_sched pbs_mom trqauthd munge 確認。 # systemctl list-unit-files -t service 参考運用例ここでは管理サーバーと計算ノードが同じ 1 台のマシンからなる運用を考える。 キューの設定 create queue q1 set queue q1 queue_type = Execution set queue q1 enabled = True set queue q1 started = True set queue q1 resources_default.nodes=1:ppn=1 set server default_queue = q1 ジョブの投入は、次のようにする。 $ qsub -l nodes=1:ppn=4 run リソースとしてノード 1 台、プロセス 4 つ (4 並列) を指定している。リソースの指定は、スクリプトに書くこともできる。 run #!/bin/sh #PBS -l nodes=1:ppn=4 ... その場合は、オプションなしで実行できる。 $ qsub run スクリプトの中でコマンド実行時にプロセス数が必要になるが、環境変数 PBS_NODEFILE の示すファイルに必要な数のノード名が入っているので、この行数を数えればよい。たとえば、あるプログラム prog を MPI で実行する場合は、次のように書ける。 run #!/bin/sh cd $PBS_O_WORKDIR NPROCS=`wc $PBS_NODEFILE | cut -d' ' -f2` mpirun -np $NPROCS -hostfile $PBS_NODEFILE prog 空き状況の確認pbsnodes で各ノードにおいてどんなジョブが流れているのかわかるので、これで計算機の空き状況を見ることができる。 たとえば、シェルスクリブトで次のようにすれば、使用中のコア数が得られる。
NODE=host01
USED=`pbsnodes $NODE | grep "jobs =" | awk -F',' '{print NF}'`
USED をノードのコア数 (np) から引けば、空き状況がわかる。np は次のようにすれば得られる。
NP=`pbsnodes $NODE | grep np | awk '{print $3}'`
メモジョブの操作ジョブの投入$ qsub run ジョブの状態$ qstat 細かい情報 $ qstat -a ジョブの情報 $ qstat -f <ID> ジョブの削除$ qdel <ID> 全部削除 $ qdel all qmgr メモserver の設定表示print server ノードの情報表示print node host01 キューの表示print queue @default キューの作成create queue q1 キューの削除delete queue q1 最大 CPU 数set queue q1 resources_max.ncpus = 1 最小 CPU 数set queue q1 resources_min.ncpus = 1 実行可能ジョブ数set queue q1 max_running = 1 1 ユーザーの実行可能ジョブ数set queue q1 max_user_run = 1 デフォルトキューの設定set server default_queue = q1 設定を解除する場合は unset を使う。 サーバーログ
| |
| PENGUINITIS | |