computer/linux/torque
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*network construction [#f20a1bcb]
Following network is constructed in our Lab.
&color(#ff0000){''Head node''};
scf000
ip1:10.34.83.50 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz 8core
ip2:192.168.2.200
┗--swich
&color(Blue){''node''};
scf001:192.168.2.1 Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 8core
scf002:192.168.2.2 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 8core
scf003:192.168.2.3 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf004:192.168.2.4 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf005:192.168.2.5 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf006:192.168.2.6 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
**NIC setting [#g0a3b5f5]
&color(Red){''Head node''};
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
#enp4s0 and enp3s0 mean NIC name
#outward connection
auto enp4s0
iface enp4s0 inet static
address 10.34.83.50
netmask 255.255.255.0
network 10.34.83.0
broadcast 10.34.83.255
gateway 10.34.83.1
dns-nameservers 130.34.40.53 130.34.40.54
#inward connection
auto enp3s0
iface enp3s0 inet static
address 192.168.2.200
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
}}
&color(Blue){''node''};
#highlighter(){{
#auto lo
#iface lo inet loopback
auto enp0s31f6
iface enp0s31f6 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.200
dns-nameservers 8.8.8.8
}}
** IP forwarding[#j0b5ad92]
&color(Red){''Head node''};
/etc/sysctl.conf
#highlighter(){{
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 #コメントを外す
}}
**IP masquerade[#w3187eed]
&color(Red){''Head node''};
#highlighter(){{
$ sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j MASQUERADE
$ sudo iptables-save -c > iptables.rules
$ sudo mv iptables.rules /etc/iptables.rules
$ sudo mv iptables.rules /etc/iptables.rules
}}
Load /etc/iptables.rules at startup.
/etc/network/if-pre-up.d/iptables-restore
#highlighter(){{
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.rules
exit 0
}}
#highlighter(){{
$ sudo chmod 755 iptables-restore
}}
These setting allow the connection of node computer to internet via the head node.
**Host name setting[#k8bb300a]
&color(Red){''Head node''};
/etc/hosts
#highlighter(){{
#127.0.0.1 localhost
127.0.0.1 scf000
#127.0.1.1 scf000
192.168.2.1 scf001
192.168.2.2 scf002
#192.168.2.200 scf000
#192.168.2.1 scf001
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
}}
&color(Blue){''node''};
/etc/hosts
#highlighter(){{
127.0.0.1 localhost
#127.0.1.1 scf001
#10.34.83.50 scf000
#192.168.2.200 scf000 scf000.nis
192.168.2.200 scf000
192.168.2.1 scf001
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
}}
''&color(#ff0000){A little more verification is necessary here.};''
**NFS[#zefd2c1f]
Share home directory of each calculation node.
&color(#ff0000){''Head node''};
#highlighter(){{
$ sudo apt-get install nfs-kernel-server
}}
/etc/exports
#highlighter(){{
/home 192.168.2.0/24(rw,no_root_squash)#&color(Blue){''Not input the space''};
}}
&color(Blue){''node''};
#highlighter(){{
$ sudo apt-get install nfs-common
}}
/etc/fstab
#highlighter(){{
scf000:/home /home nfs defaults 0 0
}}
ここを変えると、HDDだけをまとめられるかも・・・
設定後マウント。
#highlighter(){{
$ sudo mount -a
}}
&color(#0000ff){と、ここで少しめんどくさいことをする。ヘッドノードの /home ディレクトリを共有しようとしているが、このPCが若干クセがある。SSDにインストールしたものの、もう1台HDD(/dev/sdb1)を搭載している。そこで、/home を若干余裕があるHDDに移すことにする。ちなみにこのHDDはmountからする必要がある。};
OS起動時自動マウント
デバイス名でドライブを指定することもできるが、OS起動時にデバイス名が変わる可能性があるらしい。そこでUUIDを指定する。
この設定は、NFSのホストサーバのみで行う?''&color(#ff0000){A little more verification is necessary here.};''
#highlighter(){{
$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="3e64f303-0397-4a68-9e8b-9f86ca55b7f8" TYPE="ext4" PARTUUID="9d451ca5-5c7d-41b4-8dc0-4d4b863c0cd2"
}}
/etc/fstab
#highlighter(){{
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=1ae5f91e-9dd4-4ec4-8006-14f9d6ce9637 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=E41C-031D /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda5 during installation
UUID=411c4262-1b36-48cd-8744-5f06fc3d6b90 none swap sw 0 0
UUID=3e64f303-0397-4a68-9e8b-9f86ca55b7f8 /home ext4 defaults 0 0 #追加
}}
''references''
[[Linux で計算機クラスタを作る (1. ネットワーク構築):http://qiita.com/yubais/items/7c40227a17569dc9d412]]
[[HDD増設手順メモ:http://qiita.com/bwtakacy/items/c181f661e8655c42d85a]]
[[渋谷生活:http://ext.omo3.com/linux/mke2fs.html]]
[[K.Kodama's page:http://www.math.kobe-u.ac.jp/~kodama/tips-mount-optinos.html]]
*Installation of TORQUE[#y53f8d56]
**TORQUE install in Ubuntu 16.04.4 [#l39ba8f2]
I want to use calculation system in Debian GNU/Linux
&color(#ff0000){''Head node''};
#highlighter(){{
$ sudo apt-get install torque-server
}}
&color(Blue){''node''};
#highlighter(){{
$ sudo apt-get install torque-mom torque-client
}}
**Server name configuration [#q4af9a52]
&color(#ff0000){''Head node''}; and &color(Blue){''Node''};
/etc/torque/server_name
#highlighter(){{
scf000
}}
ヘッドノードの設定。
/var/spool/torque/server_priv/nodes #新規作成
#highlighter(){{
scf001 np=8
scf002 np=8
node003 np=8
node004 np=8
node005 np=8
}}
最初ノード名で(IPアドレスで書くとエラーになる)、np=のあとにはスレッド数を書く。
もし/var/spool/torque/server_priv/arraysというディレクトリが作成されていなければ、作成する
#highlighter(){{
$ sudo mkdir /var/spool/torque/server_priv/arrays
}}
パーミッション設定
#highlighter(){{
$ sudo chmod 777 /var/spool/torque/spool /var/spool/torque/undelivered
$ sudo chmod o+t /var/spool/torque/spool /var/spool/torque/undelivered
$ sudo chmod 777 /var/spool/torque/spool
$ sudo chmod o+t /var/spool/torque/spool
}}
torqueサーバの設定
#highlighter(){{
$ sudo pbs_server -t create
$ sudo qmgr -c "set server scheduling=true"
$ sudo qmgr -c "create queue batch queue_type=execution"
$ sudo qmgr -c "set queue batch started=true"
$ sudo qmgr -c "set queue batch enabled=true"
$ sudo qmgr -c "set queue batch resources_default.nodes=1"
$ sudo qmgr -c "set queue batch resources_default.walltime=3600"
$ sudo qmgr -c "set server default_queue=batch"
$ sudo qmgr -c 'set server allow_node_submit = True'
}}
サーバー、ノードの順に再起動すると認識する。
[[今夜もLab.に独り:http://ezb4.hateblo.jp/entry/2015/06/15/040931]]
[[TORQUE:https://wiki.archlinuxjp.org/index.php/TORQUE]]
[[CentOS 6でバッチシステムといえばTORQUE(OpenPBS):http://a98.jugem.jp/?eid=433]]
[[TORQUE:https://heavywatal.github.io/dev/torque.html]]
[[torque (旧OpenPBS):http://mumeiyamibito.0am.jp/doku.php/%E3%82%B5%E3%83%BC%E3%83%90%E9%96%A2%E9%80%A3/torque_pbs]]
[[TORQUEのインストールと設定:http://tech.ckme.co.jp/torque.shtml]]
[[ジョブスケジューラー torque の設定:http://www.ep.sci.hokudai.ac.jp/~kodama/tebiki/TEBIKI.hikari-torque.htm]]
[[黒ぶちメガネのLinuxサーバ構築まとめ:http://www.kurobuti.com/linux_server/?page_id=257]]
[[Linux(CentOS 5)で計算機ネットワーク:http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/cluster.html#sec6]]
[[Linux で計算機クラスタを作る (1. ネットワーク構築):http://qiita.com/yubais/items/7c40227a17569dc9d412]]
[[ubuntu 16.04 での pbs torque のインストール:http://qiita.com/hdoi/items/88d3cf93a32747acc7f3]]
[[Torque(琉球大学):http://www.cr.ie.u-ryukyu.ac.jp/~game/pukiwiki/index.php?Torque]]
[[ネットワークの設定 (Debian/Linux 系):http://www.fml.org/home/fukachan/ja/linux.share.network.debian.html#FTN.AEN8425]]
*TORQUE運用 [#s43fa3a3]
**ノードの確認 [#g8a99d28]
$ pbsnodes
#highlighter(){{
scf001
state = job-exclusive
np = 8
ntype = cluster
jobs = 0/1021.scf000, 1/1022.scf000, 2/1023.scf000, 3/1024.scf000, 4/1025.scf000,
5/1026.scf000, 6/1027.scf000, 7/1028.scf000
status = rectime=1500436617,varattr=,jobs=1021.scf000 1022.scf000 1023.scf000 1024.scf000
1025.scf000 1026.scf000 1027.scf000 1028.scf000,state=free, netload=153556233,
gres=,loadave=8.00,ncpus=8,physmem=32630832kb, availmem=4 0144012kb,totmem=42396716kb,
idletime=88309,nusers=1,nsessions=8,sessions=976 977 978 979 993 999 1003 1008,
uname=Linux scf001 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43
UTC 2017x86_64,opsys=linux
}}
的なこととが出力される。これは、実行中ノード。
**ジョブの投入 [#w0ae560f]
テストジョブの投入
$ echo 'sleep 30' | qsub
基本的にはスクリプトでキューを投入する。
$ qsub jobfile.sh
#highlighter(){{
#!/bin/sh
#PBS -V
#PBS -l nodes=1:ppn=1←ノード数の指定:ノード内のコア数(必須)
#PBS -l walltime=720:00:00
#PBS -l nice=19
cd /home/onot/temp
./a.out > out.log
}}
**投入ジョブの参照 [#u06d5ea5]
$ qstat
#highlighter(){{
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
64.scf000 ...ro_nwm5481.sh onot 00:09:39 R batch
65.scf000 ...ro_nwm5482.sh onot 00:13:54 R batch
66.scf000 ...ro_nwm5483.sh onot 0 Q batch
67.scf000 ...ro_nwm5484.sh onot 0 Q batch
68.scf000 ...ro_nwm5485.sh onot 0 Q batch
}}
各項目は、下記の通り。
|項目|説明|h
|Job id|PBSによって割り振られるジョブ番号|
|Name|ジョブ名|
|User|ジョブを投入したユーザ名|
|Time Use|経過時間(時:分:秒)|
|S|ジョブの状態|
|Queue|実行中・実行予定のキュー名|
ジョブの状態は以下に分類される。
|項目|説明|h
|B|ジョブアレイのみに表記される状態(ジョブアレイが起動)|
|E|ジョブは実行済みで終了処理中|
|H|ジョブは保留状態|
|Q|ジョブはキュー待機状態|
|R|ジョブは実行中|
|S|ジョブはサーバによって中断中(他の優先度の高いジョブに計算リソースが必要になると、ジョブは中段状態となる)|
|T|ジョブは移行中|
|U|ジョブはワークステーションがビジー状態になったため中断中|
|W|ジョブは要求された実行時間になるまで待機中もしくはジョブは何らかの理由で失敗したステージイン要求を指定している|
|X|サブジョブのみに表記される状態です。(時間切れにより、サブジョブが終了)|
qstat コマンドのオプションの解説
qstat -q システムの全ての queue を表示
qstat -B PBS Server のサマリー情報を表示
qstat -a システムの全てのジョブを表示
qstat -Q 全ての queue のリミット値を表示
qstat -s 全てのジョブをステータスコメント付きで表示
qstat -r 実行中の全てのジョブを表示
qstat -f [jobid] 指定したジョブの詳細な情報を表示
qstat -Qf [queue] 指定したキューの詳細な情報を表示
ジョブ情報に関するqstatコマンドの主なオプション
|オプション|機能|h
|-a|ユーザのすべてのジョブに対する情報を表示します。要求されたメモリ量や要求された経過時間、ジョブの状態の経過時間などが表示されます。|
|-r|-a オプションと同じフォーマットですが、実行中のジョブのみを表示します。|
|-f jobID|jobIDに対するもっとも詳細な情報を表示します。なお、f は full を意味します。|
キュー情報の参照
qstatコマンドは、キュー情報の参照にも使用できます。
#highlighter(){{
scf000:~> qstat -Q
Queue Max Tot Ena Str Que Run Hld Wat Trn Ext T
---------------- --- --- --- --- --- --- --- --- --- --- -
batch 0 24 yes yes 16 8 0 0 0 0 E
}}
|項目|説明|h
|Queue|キュー名|
|Max|同時実行可能な最大ジョブ数|
|Tot|キューに投入されたすべてのジョブ数|
|Ena|ジョブが利用可能か否か|
|Str|キューに投入されたジョブを実行させるか否か|
|Que|同時実行数が何らかの制限値を超えたため、待機の状態にあるジョブ数|
|Run|実行中のジョブ数|
|Hld|何らかの理由により実行が保留された状態のジョブ数|
|Wat|予約されたジョブなど、指定された時間となるまで待機の状態にあるジョブ数|
|Trn|移行状態のジョブ数|
|Ext|終了状態のジョブ数|
|Type|キューのタイプ|
キューに関するqstatコマンドの主なオプション
|オプション|機能|h
|-Q|キューに設定された情報およびキューの状態を表示します。|
|-q|キューに設定された情報およびキューの状態を表示します。(-Q とは表示される情報が一部異なります。)|
|-Qf Queue|指定したキューの最も詳細な情報を表示します。なお f は full を意味します。|
[[計算サービスの使い方と注意事項:http://www.scl.kyoto-u.ac.jp/Attention_Altix/altix_batch_stat.html]]
qstat システムの状況を表示
qstat コマンドのオプションの解説
qstat -q システムの全ての queue を表示
qstat -B PBS Server のサマリー情報を表示
qstat -a システムの全てのジョブを表示
qstat -Q 全ての queue のリミット値を表示
qstat -s 全てのジョブをステータスコメント付きで表示
qstat -r 実行中の全てのジョブを表示
qstat -f [jobid] 指定したジョブの詳細な情報を表示
qstat -Qf [queue] 指定したキューの詳細な情報を表示
ネットワークの設定 (Debian/Linux 系)
現在の設定状況の確認
$ sudo ifconfig -a
DHCPによりIPをもらうと
/etc/network/interfaces
#highlighter(){{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
}}
固定 IP アドレスの設定(Debian/Linux 系)
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.0.0
gateway 192.168.0.1
dns-nameservers 192.168.0.2
}}
$ sudo /etc/init.d/networking stop
$ sudo /etc/init.d/networking start
で反映されるはずなのですが、 最近の Debian (6 だか 7 だか)の起動ファイルは少しおかしいので、 変更が反映されないことがある。
そういうわけで再起動するほうが無難です。
英語表記は「Sequential Read」。シーケンシャルアクセスの、特に「読出し」方法のこと。HDDなどの記録媒体を先頭から順番に読出していくアクセス方法を言う。
先頭から順番に読出すため、後尾データへのアクセスに時間がかかるという特徴がある。同様に、読出しが常に先頭から行われるため、シークタイムが少ない。
ランダムアクセスとは、記憶装置にアクセスする手法の一つで、読み書きしたいデータの場所をインデックスなどの位置情報をもとに割り出し、直接その場所にアクセスする方法。必要な部分だけにアクセスできるため、データにランダムにアクセスした場合、平均所要時間は短くなる。
枠線を書くBorder
http://takeno.iee.niit.ac.jp/~foo/gp-jman/data/20070304/gnuplot-ja-div/node162.html
gnuplotで実験データのアニメーションを作る
http://kengo700.hatenablog.com/entry/2016/01/16/gnuplot_%E3%81%A7%E5%AE%9F%E9%A8%93%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B
gnuplotコマンド集
http://www.gnuplot-cmd.com/index.html
/etc/samba/smb.conf
## Browsing/Identification ###
#highlighter(){{
dos charset = cp932
unix charset = utf-8
}}
MySqlについて
とりあえず
http://siti.dip.jp/zzz/pma/
にてphpMyAdminが起動するようにしてある。
Debian Jessie に MySQL を入れてみた(phpMyAdminの導入について)
http://namotch.hatenablog.com/entry/2015/06/12/223808
データベースサーバー構築(MySQL)
http://mysql.javarou.com/dat/000389.html
MySQL 逆引きリファレンスについて
http://mysql.javarou.com/
MySQL初心者入門講座
http://mysqlweb.net/
Torque(PBS)バッチシステム取扱い説明
・現在製品にプレインストールされている Torque について
使用方法およびカスタマイズ方法を紹介いたします。
・ 基本スクリプトのテンプレートを解説いたします。
mpi を使用したジョブの例
---------------------------------------------
#!/bin/sh
#PBS -l ncpus = 4 ←コア数の指定(使用したい全ノードのコア数の指定:必須ではない)
#PBS -l nodes=1:ppn = 8 ←ノード数の指定:ノード内のコア数(必須)
cd $PBS_O_WORKDIR ←PBS に渡す変数(必須)
mpirun -np 4 ./himeM4 ←実行ファイルの指定(必須)
---------------------------------------------
1.Torque ノードを指定してジョブを投入する方法
・Torque の設定変更なしで、ノードを指定してジョブを投入する
方法をご案内いたします。
用途等:計算ノードが複数あるが、ある特定ノードに対し
ジョブを割り当てたくない、もしくはジョブを割り当てたい
と言う場合に有効です。
変更箇所:ユーザーのジョブ投入スクリプト変更で対応
---------------------------------------------
#!/bin/sh
#PBS -l ncpus = 4 ←コア数の指定(使用したい全ノードのコア数の指定:必須ではない)
#PBS -l nodes=1:ppn = 8:vt02.localdomain←ノード数の指定:ノードの指定(必須)
cd $PBS_O_WORKDIR ←PBS に渡す変数(必須)
mpirun -np 4 ./himeM4 ←実行ファイルの指定(必須)
---------------------------------------------
2
2.Torque グループの作成方法
・グループを設定し
用途等:Torque に参加しているマシンが複数台ある状態で
所属グループ等を分けて特定グループに所属する
特定のノードにジョブをスポットで割り当てる
ことができます。
*設定については root(スーパーユーザー)で作業 [#ed561659]
変更必要ノード:管理ノードのみ
変更箇所:/var/spool/torque/server_priv/nodes
* 下記変更例は 4 ノードのクラスターに各 A、B というグループを割り当てて
グループを作成しています。
書き方は np=8 の後にスペースを空け文字を入れます。
変更例:変更前
vt001.localdomain np=8
vt002.localdomain np=8
vt003.localdomain np=8
vt004.localdomain np=8
変更例:変更後
vt001.localdomain np=8 A
vt002.localdomain np=8 A
vt003.localdomain np=8 B
vt004.localdomain np=8 B
変更後リブートもしくは /etc/init.d/pbs stop
/etc/init.d/pbs start を実行してください。
------------------------------------------
---------------------------------------
作成したグループを指定してジョブを投入する方法です
---------------------------------------
#!/bin/sh
#PBS -l ncpus=8
#PBS -l nodes=1:ppn=8:B ←ノードの後ろに:で区切ってグループを指定
cd $PBS_O_WORKDIR
mpirun -np 8 ./himeM8
---------------------------------
3.Torque の queue 作成方法
root(スーパーユーザー)でログインして作業します。
下記は 16CPU を使用して流す queue を batch16 とし 8CPU を使用して流す queue を
batch8 と名前をつけて作成する時のパラメータのリストです。
(batch8 は batch16 よりもジョブ投入時のプライオリティを上げてあります。)
* 例ですので、クラスターの計算ノードや環境により
適宜変更してください。
----------------------------------------------------------
#
# Create and define queue batch16
#
create queue batch16
set queue batch16 queue_type = Execution
set queue batch16 Priority = 70
set queue batch16 max_running = 2
set queue batch16 resources_max.ncpus = 16
set queue batch16 resources_max.nodes = 2
set queue batch16 resources_min.ncpus = 8
set queue batch16 resources_min.neednodes = 2:ppn=8
set queue batch16 resources_min.nodes = 2:ppn=8
set queue batch16 resources_default.ncpus = 16
set queue batch16 resources_default.neednodes = 2:ppn=16
set queue batch16 resources_default.nodes = 2:ppn=16
set queue batch16 max_user_run = 2
set queue batch16 enabled = True
set queue batch16 started = True
#
# Create and define queue batch8
#
create queue batch8
set queue batch8 queue_type = Execution
5
set queue batch8 Priority = 60
set queue batch8 max_running = 4
set queue batch8 resources_max.ncpus = 8
set queue batch8 resources_max.nodes = 1
set queue batch8 resources_min.ncpus = 8
set queue batch8 resources_min.neednodes = 1:ppn=8
set queue batch8 resources_min.nodes = 1:ppn=8
set queue batch8 resources_default.ncpus = 8
set queue batch8 resources_default.neednodes = 1:ppn=8
set queue batch8 resources_default.nodes = 1:ppn=8
set queue batch8 max_user_run = 2
set queue batch8 enabled = True
set queue batch8 started = True
----------------------------------------------------------
上記キューをテキストファイル等にし適当な場所に置き、キューマネージャに
読み込むコマンドを実行します。(管理ノード)
例: ↓キーボードの\マークの上のパイプです
cat queue.txt | qmgr
作成後クラスターを再起動します。
作成したキューが有効かどうか確認します。
qstat -q
作成したキューを使いジョブを投入します。
--------------------------------
#!/bin/sh
#PBS -l ncpus=8
#PBS -l nodes=1:ppn=8
#PBS ‒q batch8 ←ここを追加してキューを指定
cd $PBS_O_WORKDIR
NPROCS=`wc -l < $PBS_NODEFILE`
mpirun -np 8 ./himeM8
--------------------------------
6
4.Torque(PBS)コマンド集
Torqueで主に使用するコマンドの解説
ジョブ投入時のスクリプトのオプション
コマンド名 内容
qsub ジョブを投入する
qdel ジョブを削除する
qstat キュー、ジョブの状態を表示する
pbsnodes 計算ノードのステータスを確認する
-N jobname ジョブの名前を指定
-q queue_name ジョブを投入するキューを指定
-o output_file 標準出力をファイルに出力
-e error_file エラー出力をファイルに出力
-l ncpus 1 つのジョブに必要な CPU 数を指定
-l nodes 1 つのジョブに必要なノード数
7
MPI ジョブ用スクリプト例 -----------------------------------
#!/bin/bash
#PBS -N himeM8.out
#PBS -j oe
#PBS -l ncpus=8
#PBS -l nodes=2:ppn=4
#PBS -q default
cd $PBS_O_WORKDIR
mpirun -n 8 ./himeM8
-----------------------------------
シングルコア用スクリプトの例
-----------------------------------
#!/bin/sh
#PBS -j oe
#PBS -l nodes=1
cd $PBS_O_WORKDIR
./a.out
-----------------------------------
*細かいメモ [#t4b50824]
**rootアカウント [#a8296e0c]
Ubuntuではセキュリティの都合上、デフォルトでrootアカウントが無効になっている。
特に理由がなければ、rootアカウントは無効のままにしておく。
rootアカウントを有効にする
$ sudo passwd root
rootアカウントを無効にする
$ sudo passwd -l root
また、sudo による全管理者権限が与えられたユーザーであれば、 sudo のオプション指定で root 権限のシェルを取得可能。
$ sudo -s
[sudo] password for onot: # 自身のパスワード
**ディスクシステム基本 [#h9ab6b8b]
各ノードに計算ファイルを投げて、それぞれのローカルディレクトリで計算させるため、作業用ディレクトリを作製。
$ sudo mkdir /var/local/work
$ sudo mkdir /var/local/work/onot
$ sudo mkdir /var/local/work/furukawa
$ sudo chown -R onot /var/local/work/onot
$ sudo chown -R furukawa /var/local/work/furukawa
ファイルサーバーのマウント。これは、計算ノード以外も設定しておく。
sudo mkdir /mnt/scf051
sudo mkdir /mnt/scf051/onot
sudo mkdir /mnt/scf051/furukawa
sudo mkdir /mnt/scf051/share
sudo mount -t nfs 10.34.83.51:/mnt/scf051/onot /mnt/scf051/onot
sudo mount -t nfs 10.34.83.51:/mnt/scf051/furukawa /mnt/scf051/furukawa
sudo mount -t nfs 10.34.83.51:/mnt/scf051/share /mnt/scf051/share
これは/etc/fstabに記述しておき、起動と同時にマウントするようにしておく。
#highlighter(){{
10.34.83.51:/mnt/scf051/onot /mnt/scf051/onot nfs defaults 0 0
10.34.83.51:/mnt/scf051/furukawa /mnt/scf051/furukawa nfs defaults 0 0
10.34.83.51:/mnt/scf051/share /mnt/scf051/share nfs defaults 0 0
}}
**torque注意点 [#x1709de5]
デフォルトログインシェルをヘッドノード、計算ノードでそろえておくこと。
研究室使用PCは基本的にtcshを使う。
**ubuntsuインストール時の注意 [#l461f05e]
ubuntuをインストールするとき、パーティションをは下記
/home
swap
boot
要検討。
**NFSによるNAS(FreeNAS)のマウント [#z60ba7eb]
user idおよびgroup id をそろえておく必要がある。
FreeNASであればsshでアクセスできるので、
$ id
uid=1000(onot) gid=1000(onot) groups=1000(onot),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
と確認できる。
そこで、接続したいPC側のuser idおよびgroup idを変更する。ユーザーがログイン中だとはじかれるので注意。
$sudo usermod -u 1000 onot
$sudo groupmod -g 1000 onot
**mount時のトラブル [#v777d730]
umount で target is busy となったときの対処法。
#highlighter(){{
onot@scf000:/work/onot$ sudo umount /work
umount: /work: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
}}
#highlighter(){{
onot@scf000:/work/onot$ sudo fuser -muv /work
onot@scf000:/work/onot$ sudo fuser -muv /work
USER PID ACCESS COMMAND
/work: root kernel mount (root)/work
onot 26720 ..c.. (onot)bash
root 26977 ..c.. (root)sudo
}}
ここで、bashを終了させる必要がああるけれど、終了させるとSSHクライアントまで落ちてしまうため、SSHクライアントの再起動が必要。
onot@scf000:/work/onot$ sudo kill -9 26720
#contents
終了行:
#contents
*network construction [#f20a1bcb]
Following network is constructed in our Lab.
&color(#ff0000){''Head node''};
scf000
ip1:10.34.83.50 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz 8core
ip2:192.168.2.200
┗--swich
&color(Blue){''node''};
scf001:192.168.2.1 Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 8core
scf002:192.168.2.2 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 8core
scf003:192.168.2.3 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf004:192.168.2.4 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf005:192.168.2.5 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
scf006:192.168.2.6 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core
**NIC setting [#g0a3b5f5]
&color(Red){''Head node''};
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
#enp4s0 and enp3s0 mean NIC name
#outward connection
auto enp4s0
iface enp4s0 inet static
address 10.34.83.50
netmask 255.255.255.0
network 10.34.83.0
broadcast 10.34.83.255
gateway 10.34.83.1
dns-nameservers 130.34.40.53 130.34.40.54
#inward connection
auto enp3s0
iface enp3s0 inet static
address 192.168.2.200
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
}}
&color(Blue){''node''};
#highlighter(){{
#auto lo
#iface lo inet loopback
auto enp0s31f6
iface enp0s31f6 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.200
dns-nameservers 8.8.8.8
}}
** IP forwarding[#j0b5ad92]
&color(Red){''Head node''};
/etc/sysctl.conf
#highlighter(){{
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 #コメントを外す
}}
**IP masquerade[#w3187eed]
&color(Red){''Head node''};
#highlighter(){{
$ sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j MASQUERADE
$ sudo iptables-save -c > iptables.rules
$ sudo mv iptables.rules /etc/iptables.rules
$ sudo mv iptables.rules /etc/iptables.rules
}}
Load /etc/iptables.rules at startup.
/etc/network/if-pre-up.d/iptables-restore
#highlighter(){{
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.rules
exit 0
}}
#highlighter(){{
$ sudo chmod 755 iptables-restore
}}
These setting allow the connection of node computer to internet via the head node.
**Host name setting[#k8bb300a]
&color(Red){''Head node''};
/etc/hosts
#highlighter(){{
#127.0.0.1 localhost
127.0.0.1 scf000
#127.0.1.1 scf000
192.168.2.1 scf001
192.168.2.2 scf002
#192.168.2.200 scf000
#192.168.2.1 scf001
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
}}
&color(Blue){''node''};
/etc/hosts
#highlighter(){{
127.0.0.1 localhost
#127.0.1.1 scf001
#10.34.83.50 scf000
#192.168.2.200 scf000 scf000.nis
192.168.2.200 scf000
192.168.2.1 scf001
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
}}
''&color(#ff0000){A little more verification is necessary here.};''
**NFS[#zefd2c1f]
Share home directory of each calculation node.
&color(#ff0000){''Head node''};
#highlighter(){{
$ sudo apt-get install nfs-kernel-server
}}
/etc/exports
#highlighter(){{
/home 192.168.2.0/24(rw,no_root_squash)#&color(Blue){''Not input the space''};
}}
&color(Blue){''node''};
#highlighter(){{
$ sudo apt-get install nfs-common
}}
/etc/fstab
#highlighter(){{
scf000:/home /home nfs defaults 0 0
}}
ここを変えると、HDDだけをまとめられるかも・・・
設定後マウント。
#highlighter(){{
$ sudo mount -a
}}
&color(#0000ff){と、ここで少しめんどくさいことをする。ヘッドノードの /home ディレクトリを共有しようとしているが、このPCが若干クセがある。SSDにインストールしたものの、もう1台HDD(/dev/sdb1)を搭載している。そこで、/home を若干余裕があるHDDに移すことにする。ちなみにこのHDDはmountからする必要がある。};
OS起動時自動マウント
デバイス名でドライブを指定することもできるが、OS起動時にデバイス名が変わる可能性があるらしい。そこでUUIDを指定する。
この設定は、NFSのホストサーバのみで行う?''&color(#ff0000){A little more verification is necessary here.};''
#highlighter(){{
$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="3e64f303-0397-4a68-9e8b-9f86ca55b7f8" TYPE="ext4" PARTUUID="9d451ca5-5c7d-41b4-8dc0-4d4b863c0cd2"
}}
/etc/fstab
#highlighter(){{
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=1ae5f91e-9dd4-4ec4-8006-14f9d6ce9637 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=E41C-031D /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda5 during installation
UUID=411c4262-1b36-48cd-8744-5f06fc3d6b90 none swap sw 0 0
UUID=3e64f303-0397-4a68-9e8b-9f86ca55b7f8 /home ext4 defaults 0 0 #追加
}}
''references''
[[Linux で計算機クラスタを作る (1. ネットワーク構築):http://qiita.com/yubais/items/7c40227a17569dc9d412]]
[[HDD増設手順メモ:http://qiita.com/bwtakacy/items/c181f661e8655c42d85a]]
[[渋谷生活:http://ext.omo3.com/linux/mke2fs.html]]
[[K.Kodama's page:http://www.math.kobe-u.ac.jp/~kodama/tips-mount-optinos.html]]
*Installation of TORQUE[#y53f8d56]
**TORQUE install in Ubuntu 16.04.4 [#l39ba8f2]
I want to use calculation system in Debian GNU/Linux
&color(#ff0000){''Head node''};
#highlighter(){{
$ sudo apt-get install torque-server
}}
&color(Blue){''node''};
#highlighter(){{
$ sudo apt-get install torque-mom torque-client
}}
**Server name configuration [#q4af9a52]
&color(#ff0000){''Head node''}; and &color(Blue){''Node''};
/etc/torque/server_name
#highlighter(){{
scf000
}}
ヘッドノードの設定。
/var/spool/torque/server_priv/nodes #新規作成
#highlighter(){{
scf001 np=8
scf002 np=8
node003 np=8
node004 np=8
node005 np=8
}}
最初ノード名で(IPアドレスで書くとエラーになる)、np=のあとにはスレッド数を書く。
もし/var/spool/torque/server_priv/arraysというディレクトリが作成されていなければ、作成する
#highlighter(){{
$ sudo mkdir /var/spool/torque/server_priv/arrays
}}
パーミッション設定
#highlighter(){{
$ sudo chmod 777 /var/spool/torque/spool /var/spool/torque/undelivered
$ sudo chmod o+t /var/spool/torque/spool /var/spool/torque/undelivered
$ sudo chmod 777 /var/spool/torque/spool
$ sudo chmod o+t /var/spool/torque/spool
}}
torqueサーバの設定
#highlighter(){{
$ sudo pbs_server -t create
$ sudo qmgr -c "set server scheduling=true"
$ sudo qmgr -c "create queue batch queue_type=execution"
$ sudo qmgr -c "set queue batch started=true"
$ sudo qmgr -c "set queue batch enabled=true"
$ sudo qmgr -c "set queue batch resources_default.nodes=1"
$ sudo qmgr -c "set queue batch resources_default.walltime=3600"
$ sudo qmgr -c "set server default_queue=batch"
$ sudo qmgr -c 'set server allow_node_submit = True'
}}
サーバー、ノードの順に再起動すると認識する。
[[今夜もLab.に独り:http://ezb4.hateblo.jp/entry/2015/06/15/040931]]
[[TORQUE:https://wiki.archlinuxjp.org/index.php/TORQUE]]
[[CentOS 6でバッチシステムといえばTORQUE(OpenPBS):http://a98.jugem.jp/?eid=433]]
[[TORQUE:https://heavywatal.github.io/dev/torque.html]]
[[torque (旧OpenPBS):http://mumeiyamibito.0am.jp/doku.php/%E3%82%B5%E3%83%BC%E3%83%90%E9%96%A2%E9%80%A3/torque_pbs]]
[[TORQUEのインストールと設定:http://tech.ckme.co.jp/torque.shtml]]
[[ジョブスケジューラー torque の設定:http://www.ep.sci.hokudai.ac.jp/~kodama/tebiki/TEBIKI.hikari-torque.htm]]
[[黒ぶちメガネのLinuxサーバ構築まとめ:http://www.kurobuti.com/linux_server/?page_id=257]]
[[Linux(CentOS 5)で計算機ネットワーク:http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/cluster.html#sec6]]
[[Linux で計算機クラスタを作る (1. ネットワーク構築):http://qiita.com/yubais/items/7c40227a17569dc9d412]]
[[ubuntu 16.04 での pbs torque のインストール:http://qiita.com/hdoi/items/88d3cf93a32747acc7f3]]
[[Torque(琉球大学):http://www.cr.ie.u-ryukyu.ac.jp/~game/pukiwiki/index.php?Torque]]
[[ネットワークの設定 (Debian/Linux 系):http://www.fml.org/home/fukachan/ja/linux.share.network.debian.html#FTN.AEN8425]]
*TORQUE運用 [#s43fa3a3]
**ノードの確認 [#g8a99d28]
$ pbsnodes
#highlighter(){{
scf001
state = job-exclusive
np = 8
ntype = cluster
jobs = 0/1021.scf000, 1/1022.scf000, 2/1023.scf000, 3/1024.scf000, 4/1025.scf000,
5/1026.scf000, 6/1027.scf000, 7/1028.scf000
status = rectime=1500436617,varattr=,jobs=1021.scf000 1022.scf000 1023.scf000 1024.scf000
1025.scf000 1026.scf000 1027.scf000 1028.scf000,state=free, netload=153556233,
gres=,loadave=8.00,ncpus=8,physmem=32630832kb, availmem=4 0144012kb,totmem=42396716kb,
idletime=88309,nusers=1,nsessions=8,sessions=976 977 978 979 993 999 1003 1008,
uname=Linux scf001 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43
UTC 2017x86_64,opsys=linux
}}
的なこととが出力される。これは、実行中ノード。
**ジョブの投入 [#w0ae560f]
テストジョブの投入
$ echo 'sleep 30' | qsub
基本的にはスクリプトでキューを投入する。
$ qsub jobfile.sh
#highlighter(){{
#!/bin/sh
#PBS -V
#PBS -l nodes=1:ppn=1←ノード数の指定:ノード内のコア数(必須)
#PBS -l walltime=720:00:00
#PBS -l nice=19
cd /home/onot/temp
./a.out > out.log
}}
**投入ジョブの参照 [#u06d5ea5]
$ qstat
#highlighter(){{
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
64.scf000 ...ro_nwm5481.sh onot 00:09:39 R batch
65.scf000 ...ro_nwm5482.sh onot 00:13:54 R batch
66.scf000 ...ro_nwm5483.sh onot 0 Q batch
67.scf000 ...ro_nwm5484.sh onot 0 Q batch
68.scf000 ...ro_nwm5485.sh onot 0 Q batch
}}
各項目は、下記の通り。
|項目|説明|h
|Job id|PBSによって割り振られるジョブ番号|
|Name|ジョブ名|
|User|ジョブを投入したユーザ名|
|Time Use|経過時間(時:分:秒)|
|S|ジョブの状態|
|Queue|実行中・実行予定のキュー名|
ジョブの状態は以下に分類される。
|項目|説明|h
|B|ジョブアレイのみに表記される状態(ジョブアレイが起動)|
|E|ジョブは実行済みで終了処理中|
|H|ジョブは保留状態|
|Q|ジョブはキュー待機状態|
|R|ジョブは実行中|
|S|ジョブはサーバによって中断中(他の優先度の高いジョブに計算リソースが必要になると、ジョブは中段状態となる)|
|T|ジョブは移行中|
|U|ジョブはワークステーションがビジー状態になったため中断中|
|W|ジョブは要求された実行時間になるまで待機中もしくはジョブは何らかの理由で失敗したステージイン要求を指定している|
|X|サブジョブのみに表記される状態です。(時間切れにより、サブジョブが終了)|
qstat コマンドのオプションの解説
qstat -q システムの全ての queue を表示
qstat -B PBS Server のサマリー情報を表示
qstat -a システムの全てのジョブを表示
qstat -Q 全ての queue のリミット値を表示
qstat -s 全てのジョブをステータスコメント付きで表示
qstat -r 実行中の全てのジョブを表示
qstat -f [jobid] 指定したジョブの詳細な情報を表示
qstat -Qf [queue] 指定したキューの詳細な情報を表示
ジョブ情報に関するqstatコマンドの主なオプション
|オプション|機能|h
|-a|ユーザのすべてのジョブに対する情報を表示します。要求されたメモリ量や要求された経過時間、ジョブの状態の経過時間などが表示されます。|
|-r|-a オプションと同じフォーマットですが、実行中のジョブのみを表示します。|
|-f jobID|jobIDに対するもっとも詳細な情報を表示します。なお、f は full を意味します。|
キュー情報の参照
qstatコマンドは、キュー情報の参照にも使用できます。
#highlighter(){{
scf000:~> qstat -Q
Queue Max Tot Ena Str Que Run Hld Wat Trn Ext T
---------------- --- --- --- --- --- --- --- --- --- --- -
batch 0 24 yes yes 16 8 0 0 0 0 E
}}
|項目|説明|h
|Queue|キュー名|
|Max|同時実行可能な最大ジョブ数|
|Tot|キューに投入されたすべてのジョブ数|
|Ena|ジョブが利用可能か否か|
|Str|キューに投入されたジョブを実行させるか否か|
|Que|同時実行数が何らかの制限値を超えたため、待機の状態にあるジョブ数|
|Run|実行中のジョブ数|
|Hld|何らかの理由により実行が保留された状態のジョブ数|
|Wat|予約されたジョブなど、指定された時間となるまで待機の状態にあるジョブ数|
|Trn|移行状態のジョブ数|
|Ext|終了状態のジョブ数|
|Type|キューのタイプ|
キューに関するqstatコマンドの主なオプション
|オプション|機能|h
|-Q|キューに設定された情報およびキューの状態を表示します。|
|-q|キューに設定された情報およびキューの状態を表示します。(-Q とは表示される情報が一部異なります。)|
|-Qf Queue|指定したキューの最も詳細な情報を表示します。なお f は full を意味します。|
[[計算サービスの使い方と注意事項:http://www.scl.kyoto-u.ac.jp/Attention_Altix/altix_batch_stat.html]]
qstat システムの状況を表示
qstat コマンドのオプションの解説
qstat -q システムの全ての queue を表示
qstat -B PBS Server のサマリー情報を表示
qstat -a システムの全てのジョブを表示
qstat -Q 全ての queue のリミット値を表示
qstat -s 全てのジョブをステータスコメント付きで表示
qstat -r 実行中の全てのジョブを表示
qstat -f [jobid] 指定したジョブの詳細な情報を表示
qstat -Qf [queue] 指定したキューの詳細な情報を表示
ネットワークの設定 (Debian/Linux 系)
現在の設定状況の確認
$ sudo ifconfig -a
DHCPによりIPをもらうと
/etc/network/interfaces
#highlighter(){{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
}}
固定 IP アドレスの設定(Debian/Linux 系)
/etc/network/interfaces
#highlighter(){{
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.0.0
gateway 192.168.0.1
dns-nameservers 192.168.0.2
}}
$ sudo /etc/init.d/networking stop
$ sudo /etc/init.d/networking start
で反映されるはずなのですが、 最近の Debian (6 だか 7 だか)の起動ファイルは少しおかしいので、 変更が反映されないことがある。
そういうわけで再起動するほうが無難です。
英語表記は「Sequential Read」。シーケンシャルアクセスの、特に「読出し」方法のこと。HDDなどの記録媒体を先頭から順番に読出していくアクセス方法を言う。
先頭から順番に読出すため、後尾データへのアクセスに時間がかかるという特徴がある。同様に、読出しが常に先頭から行われるため、シークタイムが少ない。
ランダムアクセスとは、記憶装置にアクセスする手法の一つで、読み書きしたいデータの場所をインデックスなどの位置情報をもとに割り出し、直接その場所にアクセスする方法。必要な部分だけにアクセスできるため、データにランダムにアクセスした場合、平均所要時間は短くなる。
枠線を書くBorder
http://takeno.iee.niit.ac.jp/~foo/gp-jman/data/20070304/gnuplot-ja-div/node162.html
gnuplotで実験データのアニメーションを作る
http://kengo700.hatenablog.com/entry/2016/01/16/gnuplot_%E3%81%A7%E5%AE%9F%E9%A8%93%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B
gnuplotコマンド集
http://www.gnuplot-cmd.com/index.html
/etc/samba/smb.conf
## Browsing/Identification ###
#highlighter(){{
dos charset = cp932
unix charset = utf-8
}}
MySqlについて
とりあえず
http://siti.dip.jp/zzz/pma/
にてphpMyAdminが起動するようにしてある。
Debian Jessie に MySQL を入れてみた(phpMyAdminの導入について)
http://namotch.hatenablog.com/entry/2015/06/12/223808
データベースサーバー構築(MySQL)
http://mysql.javarou.com/dat/000389.html
MySQL 逆引きリファレンスについて
http://mysql.javarou.com/
MySQL初心者入門講座
http://mysqlweb.net/
Torque(PBS)バッチシステム取扱い説明
・現在製品にプレインストールされている Torque について
使用方法およびカスタマイズ方法を紹介いたします。
・ 基本スクリプトのテンプレートを解説いたします。
mpi を使用したジョブの例
---------------------------------------------
#!/bin/sh
#PBS -l ncpus = 4 ←コア数の指定(使用したい全ノードのコア数の指定:必須ではない)
#PBS -l nodes=1:ppn = 8 ←ノード数の指定:ノード内のコア数(必須)
cd $PBS_O_WORKDIR ←PBS に渡す変数(必須)
mpirun -np 4 ./himeM4 ←実行ファイルの指定(必須)
---------------------------------------------
1.Torque ノードを指定してジョブを投入する方法
・Torque の設定変更なしで、ノードを指定してジョブを投入する
方法をご案内いたします。
用途等:計算ノードが複数あるが、ある特定ノードに対し
ジョブを割り当てたくない、もしくはジョブを割り当てたい
と言う場合に有効です。
変更箇所:ユーザーのジョブ投入スクリプト変更で対応
---------------------------------------------
#!/bin/sh
#PBS -l ncpus = 4 ←コア数の指定(使用したい全ノードのコア数の指定:必須ではない)
#PBS -l nodes=1:ppn = 8:vt02.localdomain←ノード数の指定:ノードの指定(必須)
cd $PBS_O_WORKDIR ←PBS に渡す変数(必須)
mpirun -np 4 ./himeM4 ←実行ファイルの指定(必須)
---------------------------------------------
2
2.Torque グループの作成方法
・グループを設定し
用途等:Torque に参加しているマシンが複数台ある状態で
所属グループ等を分けて特定グループに所属する
特定のノードにジョブをスポットで割り当てる
ことができます。
*設定については root(スーパーユーザー)で作業 [#ed561659]
変更必要ノード:管理ノードのみ
変更箇所:/var/spool/torque/server_priv/nodes
* 下記変更例は 4 ノードのクラスターに各 A、B というグループを割り当てて
グループを作成しています。
書き方は np=8 の後にスペースを空け文字を入れます。
変更例:変更前
vt001.localdomain np=8
vt002.localdomain np=8
vt003.localdomain np=8
vt004.localdomain np=8
変更例:変更後
vt001.localdomain np=8 A
vt002.localdomain np=8 A
vt003.localdomain np=8 B
vt004.localdomain np=8 B
変更後リブートもしくは /etc/init.d/pbs stop
/etc/init.d/pbs start を実行してください。
------------------------------------------
---------------------------------------
作成したグループを指定してジョブを投入する方法です
---------------------------------------
#!/bin/sh
#PBS -l ncpus=8
#PBS -l nodes=1:ppn=8:B ←ノードの後ろに:で区切ってグループを指定
cd $PBS_O_WORKDIR
mpirun -np 8 ./himeM8
---------------------------------
3.Torque の queue 作成方法
root(スーパーユーザー)でログインして作業します。
下記は 16CPU を使用して流す queue を batch16 とし 8CPU を使用して流す queue を
batch8 と名前をつけて作成する時のパラメータのリストです。
(batch8 は batch16 よりもジョブ投入時のプライオリティを上げてあります。)
* 例ですので、クラスターの計算ノードや環境により
適宜変更してください。
----------------------------------------------------------
#
# Create and define queue batch16
#
create queue batch16
set queue batch16 queue_type = Execution
set queue batch16 Priority = 70
set queue batch16 max_running = 2
set queue batch16 resources_max.ncpus = 16
set queue batch16 resources_max.nodes = 2
set queue batch16 resources_min.ncpus = 8
set queue batch16 resources_min.neednodes = 2:ppn=8
set queue batch16 resources_min.nodes = 2:ppn=8
set queue batch16 resources_default.ncpus = 16
set queue batch16 resources_default.neednodes = 2:ppn=16
set queue batch16 resources_default.nodes = 2:ppn=16
set queue batch16 max_user_run = 2
set queue batch16 enabled = True
set queue batch16 started = True
#
# Create and define queue batch8
#
create queue batch8
set queue batch8 queue_type = Execution
5
set queue batch8 Priority = 60
set queue batch8 max_running = 4
set queue batch8 resources_max.ncpus = 8
set queue batch8 resources_max.nodes = 1
set queue batch8 resources_min.ncpus = 8
set queue batch8 resources_min.neednodes = 1:ppn=8
set queue batch8 resources_min.nodes = 1:ppn=8
set queue batch8 resources_default.ncpus = 8
set queue batch8 resources_default.neednodes = 1:ppn=8
set queue batch8 resources_default.nodes = 1:ppn=8
set queue batch8 max_user_run = 2
set queue batch8 enabled = True
set queue batch8 started = True
----------------------------------------------------------
上記キューをテキストファイル等にし適当な場所に置き、キューマネージャに
読み込むコマンドを実行します。(管理ノード)
例: ↓キーボードの\マークの上のパイプです
cat queue.txt | qmgr
作成後クラスターを再起動します。
作成したキューが有効かどうか確認します。
qstat -q
作成したキューを使いジョブを投入します。
--------------------------------
#!/bin/sh
#PBS -l ncpus=8
#PBS -l nodes=1:ppn=8
#PBS ‒q batch8 ←ここを追加してキューを指定
cd $PBS_O_WORKDIR
NPROCS=`wc -l < $PBS_NODEFILE`
mpirun -np 8 ./himeM8
--------------------------------
6
4.Torque(PBS)コマンド集
Torqueで主に使用するコマンドの解説
ジョブ投入時のスクリプトのオプション
コマンド名 内容
qsub ジョブを投入する
qdel ジョブを削除する
qstat キュー、ジョブの状態を表示する
pbsnodes 計算ノードのステータスを確認する
-N jobname ジョブの名前を指定
-q queue_name ジョブを投入するキューを指定
-o output_file 標準出力をファイルに出力
-e error_file エラー出力をファイルに出力
-l ncpus 1 つのジョブに必要な CPU 数を指定
-l nodes 1 つのジョブに必要なノード数
7
MPI ジョブ用スクリプト例 -----------------------------------
#!/bin/bash
#PBS -N himeM8.out
#PBS -j oe
#PBS -l ncpus=8
#PBS -l nodes=2:ppn=4
#PBS -q default
cd $PBS_O_WORKDIR
mpirun -n 8 ./himeM8
-----------------------------------
シングルコア用スクリプトの例
-----------------------------------
#!/bin/sh
#PBS -j oe
#PBS -l nodes=1
cd $PBS_O_WORKDIR
./a.out
-----------------------------------
*細かいメモ [#t4b50824]
**rootアカウント [#a8296e0c]
Ubuntuではセキュリティの都合上、デフォルトでrootアカウントが無効になっている。
特に理由がなければ、rootアカウントは無効のままにしておく。
rootアカウントを有効にする
$ sudo passwd root
rootアカウントを無効にする
$ sudo passwd -l root
また、sudo による全管理者権限が与えられたユーザーであれば、 sudo のオプション指定で root 権限のシェルを取得可能。
$ sudo -s
[sudo] password for onot: # 自身のパスワード
**ディスクシステム基本 [#h9ab6b8b]
各ノードに計算ファイルを投げて、それぞれのローカルディレクトリで計算させるため、作業用ディレクトリを作製。
$ sudo mkdir /var/local/work
$ sudo mkdir /var/local/work/onot
$ sudo mkdir /var/local/work/furukawa
$ sudo chown -R onot /var/local/work/onot
$ sudo chown -R furukawa /var/local/work/furukawa
ファイルサーバーのマウント。これは、計算ノード以外も設定しておく。
sudo mkdir /mnt/scf051
sudo mkdir /mnt/scf051/onot
sudo mkdir /mnt/scf051/furukawa
sudo mkdir /mnt/scf051/share
sudo mount -t nfs 10.34.83.51:/mnt/scf051/onot /mnt/scf051/onot
sudo mount -t nfs 10.34.83.51:/mnt/scf051/furukawa /mnt/scf051/furukawa
sudo mount -t nfs 10.34.83.51:/mnt/scf051/share /mnt/scf051/share
これは/etc/fstabに記述しておき、起動と同時にマウントするようにしておく。
#highlighter(){{
10.34.83.51:/mnt/scf051/onot /mnt/scf051/onot nfs defaults 0 0
10.34.83.51:/mnt/scf051/furukawa /mnt/scf051/furukawa nfs defaults 0 0
10.34.83.51:/mnt/scf051/share /mnt/scf051/share nfs defaults 0 0
}}
**torque注意点 [#x1709de5]
デフォルトログインシェルをヘッドノード、計算ノードでそろえておくこと。
研究室使用PCは基本的にtcshを使う。
**ubuntsuインストール時の注意 [#l461f05e]
ubuntuをインストールするとき、パーティションをは下記
/home
swap
boot
要検討。
**NFSによるNAS(FreeNAS)のマウント [#z60ba7eb]
user idおよびgroup id をそろえておく必要がある。
FreeNASであればsshでアクセスできるので、
$ id
uid=1000(onot) gid=1000(onot) groups=1000(onot),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
と確認できる。
そこで、接続したいPC側のuser idおよびgroup idを変更する。ユーザーがログイン中だとはじかれるので注意。
$sudo usermod -u 1000 onot
$sudo groupmod -g 1000 onot
**mount時のトラブル [#v777d730]
umount で target is busy となったときの対処法。
#highlighter(){{
onot@scf000:/work/onot$ sudo umount /work
umount: /work: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
}}
#highlighter(){{
onot@scf000:/work/onot$ sudo fuser -muv /work
onot@scf000:/work/onot$ sudo fuser -muv /work
USER PID ACCESS COMMAND
/work: root kernel mount (root)/work
onot 26720 ..c.. (onot)bash
root 26977 ..c.. (root)sudo
}}
ここで、bashを終了させる必要がああるけれど、終了させるとSSHクライアントまで落ちてしまうため、SSHクライアントの再起動が必要。
onot@scf000:/work/onot$ sudo kill -9 26720
#contents
ページ名: