TORQUEのキューを作成します。

一般的なqueueの作成において、クラスターのリソース全体に対して、「全部のリソースを使うけど、利用可能な計算時間は少なめ」、
「リソースは少なめだけど、長時間計算が可能」とかでqueueが用意される場合が多い。
Toqeueの「torque-scheduler」はこのタイプ

2017y09m06d_015304513.png
上の図では、queue[quick]が前者、[long]が後者に該当する。

だが、例えばgpuノードを追加した場合、別のサブクラスターとして用意され、しかも別のqueue名で実行したい。
あるいは、年度を跨いで新規に購入したより高性能なクラスターも別なqueue名で定義したいとなった場合、queue名で
マシンが限定されるのが望ましい。
ここでは一つの管理ノードで管理する場合を述べてます。各サブクラスター毎に管理ノードを作るのもいいですが、面倒かなと思う
2017y09m06d_022604921.png

Toqeueの「torque-scheduler」ではqueue名でマシンを指定できない。mauiは可能。
*「torque-scheduler」を使ってもqsub側で「property」を駆使すれば個別ノードで計算可能です

ここではmauiスケジューラの下で単純なキューを作成してみます。
3台の計算ノード全部を使うキュー「batch」と3台の内、n1のみの「bio」とn2とn3から成る「chem」を作成する。
nodesファイルは下記のように変更します。

[root@pbs ~]# vi /var/lib/torque/server_priv/nodes
n1.sybyl.local np=1 bio
n2.sybyl.local np=2 chem
n3.sybyl.local np=3 chem
[root@pbs ~]#

この変更を反映させるために、管理ノードのpbs_serverサービスを再起動します。

[root@pbs ~]# systemctl restart pbs_server
[root@pbs ~]# pbsnodes
n1.sybyl.local
     state = free
     np = 1
     properties = bio
     ntype = cluster
     status = rectime=1458433722,varattr=,jobs=,state=free,netload=2088432,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=1458433741,varattr=,jobs=,state=free,netload=3205,gres=,loadave=0.29,ncpus=2,(略
     mom_service_port = 15002
     mom_manager_port = 15003
 
n3.sybyl.local
     state = free
     np = 3
     properties = chem
     ntype = cluster
     status = rectime=1458433736,varattr=,jobs=,state=free,netload=3455,gres=,loadave=0.15,ncpus=3,(略
     mom_service_port = 15002
     mom_manager_port = 15003
 
[root@pbs ~]#

すると「properties」欄が追加される。
次に、キューを作成する。はじめにキー「batch」を作ります。全ノードを使用するキューです。

[root@pbs ~]# qmgr -c "create queue batch queue_type=execution"

すると、/var/lib/torque/server_priv/queues/に「batch」ファイルが作成されます。
このままではキー「batch」は使用できず、設定をさらに加えます。

[root@pbs ~]# qmgr -c "set queue batch started=true"               この[batch]は、スケジューラに投ずるか
[root@pbs ~]# qmgr -c "set queue batch enabled=true"               この[batch]は、queueを受け付けるか
[root@pbs ~]# qmgr -c "set queue batch resources_default.nodes=1"  この[batch]は、標準1計算ノード使います
[root@pbs ~]# qmgr -c "set queue batch resources_default.walltime = 240:00:00"  投下[batch]は10日間有効
[root@pbs ~]# qmgr -c "set queue batch resources_default.pcput = 480:00:01"  計算中[batch]は20日間実行可能
 
[root@pbs ~]# qmgr -c "set server default_queue = batch"  この[batch]を既定のキューとする

*「resources_default.cput」は計算に使用されるcpuらの合計時間を定義する。仮に 10:00:00(10時間) と定義され、10cpuを使って計算したら 1 時間で終了となる。代わりに「resources_default.pcput」は計算に使用されるcpuらの中の計算時間を定義する。仮に 10:00:00(10時間) と定義され、10cpuを使って計算しても 10 時間後まで計算する。

キー「bio」「chem」は下記の様に作成します。

[root@pbs ~]# qmgr -c "create queue bio queue_type=execution"
[root@pbs ~]# qmgr -c "set queue bio resources_default.neednodes=bio"
[root@pbs ~]# qmgr -c "set queue bio started=true"
[root@pbs ~]# qmgr -c "set queue bio enabled=true"
[root@pbs ~]# qmgr -c "set queue bio resources_default.nodes=1"
 
[root@pbs ~]# qmgr -c "create queue chem queue_type=execution"
[root@pbs ~]# qmgr -c "set queue chem resources_default.neednodes=chem"
[root@pbs ~]# qmgr -c "set queue chem started=true"
[root@pbs ~]# qmgr -c "set queue chem enabled=true"
[root@pbs ~]# qmgr -c "set queue chem resources_default.nodes=1"

この段階で/var/lib/torque/server_priv/queues/には3種のファイルが作成されます。

[root@pbs ~]# ls -l /var/lib/torque/server_priv/queues/
合計 12
-rw------- 1 root root 495  3月 20 09:38 batch
-rw------- 1 root root 469  3月 20 09:40 bio
-rw------- 1 root root 471  3月 20 09:40 chem
[root@pbs ~]#

もしキー「batch」を削除したければ、コマンドラインから

[root@pbs ~]# qmgr -c "delete queue batch"

とすれば削除されます。

ジョブ発行ノードの登録

ジョブ発行ノード client からジョブを発行するので、そのホストを登録します。
管理ノードは既定でジョブの発行ができます。

[root@pbs ~]# qmgr -c 'set server submit_hosts = client'

もし複数登録するなら

[root@pbs ~]# qmgr -c 'set server submit_hosts += n1'
[root@pbs ~]# qmgr -c 'set server submit_hosts += n2'

とします。
削除は

[root@pbs ~]# qmgr -c 'set server submit_hosts -= n1'
[root@pbs ~]# qmgr -c 'set server submit_hosts -= n2'

にて行います。確認は qmgr -c 'p s' にて行います。

ユーザ登録

キューの作成は完了したが、このままでは誰もジョブを投入できない。
投入できるユーザを登録します。

[root@pbs ~]# qmgr -c "set server authorized_users = illya@*"
[root@pbs ~]# qmgr -c "set server authorized_users += saber@*"

特定のキューに利用制限を課すなら

[root@pbs ~]# qmgr -c "set queue bio acl_user_enable=true"
[root@pbs ~]# qmgr -c "set queue bio acl_users=saber@*"

とする。指定ユーザ以外がそのキューに投げようとすると、

[illya@client ~]$ echo "sleep 30" | qsub -q bio
qsub: submit error (Unauthorized Request  MSG=user ACL rejected the submitting user: user illya@client.sybyl.local, queue bio)
[illya@client ~]$

拒否される。

だれでもジョブ実行を許すのなら

[root@pbs ~]# qmgr -c "set server authorized_users = *@client.sybyl.local"

とする
*「set server authorized_users = *@*」で行けるかも知れないが、試していない


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-03-06 (火) 01:11:11 (288d)