computer/linux/cluster
の編集
http://siti.dip.jp/wiki/index.php?computer/linux/cluster
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
bikefriday
books
BracketName
chemical
computer
computer/equation
computer/gromacs
computer/linux
computer/linux/apache2
computer/linux/cluster
computer/linux/emacs
computer/linux/FreeNAS
computer/linux/iptables
computer/linux/networking
computer/linux/ProFTPD
computer/linux/pukiwiki
computer/linux/RaspberryPi
computer/linux/service
computer/linux/torque
computer/programing
computer/programing/Eclipse
computer/programing/Python
computer/programing/python
computer/programing/Python/matplotlib
computer/programing/regular expression
computer/programing/vba
computer/programing/vmd
computer/windows
computer/windows/command prompt
computer/windows/ffmpeg
computer/windows/ImageJ
computer/windows/Inkscape
computer/windows/service
computer/windows/VBA
computer/windows/WebExpression
english
english/mail
english/P.R. response
english/あ
english/か
english/さ
FormattingRules
FrontPage
gnuplot
Help
InterWiki
InterWikiName
InterWikiSandBox
memo
memo/201902
memo/201903
memo/201904
memo/201905
memo/201907
memo/201911
memo/ai
memo/descri
memo/document
memo/life
memo/message
memo/procedure
memo/record
memo/work
memo/引っ越し
MenuBar
microserver
Notebook
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
ST
testable
WikiEngines
WikiName
WikiWikiWeb
work
YukiWiki
#contents cat /proc/cpuinfo 10.34.83.22 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 10.34.83.23 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 10.34.83.24 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 8core 10.34.83.25 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 192.168.2.1(10.34.83.50) Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 8core 192.168.2.200 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz 8core(head node) *ネットワークの構築 [#z1cd0193] 下記のようなネットワークを構築する。 &color(#ff0000){''Head node''}; scf000 ip1:10.34.83.50 ip2:192.168.2.200 &color(#ff0000){''node''}; ┗--swich scf001:192.168.2.1 scf001:192.168.2.2 scf001:192.168.2.3 **NICの設定 [#k0f85be0] /etc/network/interfaces #highlighter(){{ auto lo iface lo inet loopback #enp4s0、enp3s0はNIC名 #外向き 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 # 内向き 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 }} ノード側でもNICの設定を行う。 #highlighter(){{ 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フォワーディング [#j0b5ad92] ヘッドノードの設定。 /etc/sysctl.conf #highlighter(){{ # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 #コメントを外す }} ヘッドノードを経由してノードからインターネットに接続することが可能になる。 **IPマスカレード [#w3187eed] ヘッドノードの設定 #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 }} /etc/iptables.rulesを起動時に読み込むようにする。 /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 }} ここまでくると計算ノードからインターネットにアクセスできる。 **紐付け [#k8bb300a] /etc/hosts #highlighter(){{ File Edit Options Buffers Tools Conf Help #127.0.0.1 localhost 127.0.0.1 scf000 #127.0.1.1 scf000 192.168.2.1 scf001 #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 }} ここは、もう少し検証が必要。 **NFSサーバーの設定 [#zefd2c1f] /home 各ユーザーのデータを共有させる。 ヘッドノードの設定。 #highlighter(){{ $ sudo apg-get install nfs-kernel-server }} /etc/exports #highlighter(){{ /home 192.168.2.0/24(rw,no_root_squash)#スペースは入れない }} 各ノードの設定。 #highlighter(){{ $ sudo apt-get install nfs-common }} /etc/fstab #highlighter(){{ scf000:/home /home nfs defaults 0 0 }} 設定後マウント。 #highlighter(){{ $ sudo mount -a }} &color(#0000ff){と、ここで少しめんどくさいことをする。ヘッドノードの /home ディレクトリを共有しようとしているが、このPCが若干クセがある。SSDにインストールしたものの、もう1台HDD(/dev/sdb1)を搭載している。そこで、/home を若干余裕があるHDDに移すことにする。ちなみにこのHDDはmountからする必要がある。}; **OS起動時自動マウント [#j2bf8c16] デバイス名でドライブを指定することもできるが、OS起動時にデバイス名が変わる可能性があるらしい。そこでUUIDを指定する。 #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 #追加 }} ''参考'' [[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]] *TORQUEのインストール [#t801d06b] ヘッドノードにインストール。 #highlighter(){{ $ sudo apt-get install torque-server }} 計算ノードにインストール。 #highlighter(){{ $ sudo apt-get install torque-mom torque-client }} ヘッドノードおよび計算ノードの共通設定。 ヘッドノードの名前を設定。 /etc/torque/server_name #highlighter(){{ node001 }} ヘッドノードの設定。 /var/spool/torque/server_priv/nodes #新規作成 #highlighter(){{ node001 np=8 node002 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運用 [#hea53179] **投入ジョブの参照 [#gc517a00] #highlighter(){{ scf000:~> qstat 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 コマンドのオプションの解説 qstat -q システムの全ての queue を表示 qstat -B PBS Server のサマリー情報を表示 qstat -a システムの全てのジョブを表示 qstat -Q 全ての queue のリミット値を表示 qstat -s 全てのジョブをステータスコメント付きで表示 qstat -r 実行中の全てのジョブを表示 qstat -f [jobid] 指定したジョブの詳細な情報を表示 qstat -Qf [queue] 指定したキューの詳細な情報を表示 #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 }} ネットワークの設定 (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 }} 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 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(スーパーユーザー)で作業 [#p26d5c60] 変更必要ノード:管理ノードのみ 変更箇所:/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 を実行してください。 ------------------------------------------ #pbsnodes -a vt001.localdomain state = free np = 8 properties = A 3 ntype = cluster status = ・・・・省略 vt002.localdomain state = free np = 8 properties = A ntype = cluster status = ・・・・省略 vt003.localdomain state = free np = 8 properties = B ntype = cluster status = ・・・・省略 vt004.localdomain state = free np = 8 properties = B ntype = cluster status = ・・・・省略 --------------------------------------- 作成したグループを指定してジョブを投入する方法です --------------------------------------- #!/bin/sh #PBS -l ncpus=8 #PBS -l nodes=1:ppn=8:B ←ノードの後ろに:で区切ってグループを指定 cd $PBS_O_WORKDIR mpirun -np 8 ./himeM8 --------------------------------- 4 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で主に使用するコマンドの解説 qstat コマンドのオプションの解説 qstat -q システムの全ての queue を表示 qstat -B PBS Server のサマリー情報を表示 qstat -a システムの全てのジョブを表示 qstat -Q 全ての queue のリミット値を表示 qstat -s 全てのジョブをステータスコメント付きで表示 qstat -r 実行中の全てのジョブを表示 qstat -f [jobid] 指定したジョブの詳細な情報を表示 qstat -Qf [queue] 指定したキューの詳細な情報を表示 ジョブ投入時のスクリプトのオプション コマンド名 内容 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 -----------------------------------
タイムスタンプを変更しない
#contents cat /proc/cpuinfo 10.34.83.22 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 10.34.83.23 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 10.34.83.24 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 8core 10.34.83.25 Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz 12core 192.168.2.1(10.34.83.50) Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 8core 192.168.2.200 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz 8core(head node) *ネットワークの構築 [#z1cd0193] 下記のようなネットワークを構築する。 &color(#ff0000){''Head node''}; scf000 ip1:10.34.83.50 ip2:192.168.2.200 &color(#ff0000){''node''}; ┗--swich scf001:192.168.2.1 scf001:192.168.2.2 scf001:192.168.2.3 **NICの設定 [#k0f85be0] /etc/network/interfaces #highlighter(){{ auto lo iface lo inet loopback #enp4s0、enp3s0はNIC名 #外向き 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 # 内向き 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 }} ノード側でもNICの設定を行う。 #highlighter(){{ 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フォワーディング [#j0b5ad92] ヘッドノードの設定。 /etc/sysctl.conf #highlighter(){{ # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 #コメントを外す }} ヘッドノードを経由してノードからインターネットに接続することが可能になる。 **IPマスカレード [#w3187eed] ヘッドノードの設定 #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 }} /etc/iptables.rulesを起動時に読み込むようにする。 /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 }} ここまでくると計算ノードからインターネットにアクセスできる。 **紐付け [#k8bb300a] /etc/hosts #highlighter(){{ File Edit Options Buffers Tools Conf Help #127.0.0.1 localhost 127.0.0.1 scf000 #127.0.1.1 scf000 192.168.2.1 scf001 #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 }} ここは、もう少し検証が必要。 **NFSサーバーの設定 [#zefd2c1f] /home 各ユーザーのデータを共有させる。 ヘッドノードの設定。 #highlighter(){{ $ sudo apg-get install nfs-kernel-server }} /etc/exports #highlighter(){{ /home 192.168.2.0/24(rw,no_root_squash)#スペースは入れない }} 各ノードの設定。 #highlighter(){{ $ sudo apt-get install nfs-common }} /etc/fstab #highlighter(){{ scf000:/home /home nfs defaults 0 0 }} 設定後マウント。 #highlighter(){{ $ sudo mount -a }} &color(#0000ff){と、ここで少しめんどくさいことをする。ヘッドノードの /home ディレクトリを共有しようとしているが、このPCが若干クセがある。SSDにインストールしたものの、もう1台HDD(/dev/sdb1)を搭載している。そこで、/home を若干余裕があるHDDに移すことにする。ちなみにこのHDDはmountからする必要がある。}; **OS起動時自動マウント [#j2bf8c16] デバイス名でドライブを指定することもできるが、OS起動時にデバイス名が変わる可能性があるらしい。そこでUUIDを指定する。 #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 #追加 }} ''参考'' [[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]] *TORQUEのインストール [#t801d06b] ヘッドノードにインストール。 #highlighter(){{ $ sudo apt-get install torque-server }} 計算ノードにインストール。 #highlighter(){{ $ sudo apt-get install torque-mom torque-client }} ヘッドノードおよび計算ノードの共通設定。 ヘッドノードの名前を設定。 /etc/torque/server_name #highlighter(){{ node001 }} ヘッドノードの設定。 /var/spool/torque/server_priv/nodes #新規作成 #highlighter(){{ node001 np=8 node002 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運用 [#hea53179] **投入ジョブの参照 [#gc517a00] #highlighter(){{ scf000:~> qstat 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 コマンドのオプションの解説 qstat -q システムの全ての queue を表示 qstat -B PBS Server のサマリー情報を表示 qstat -a システムの全てのジョブを表示 qstat -Q 全ての queue のリミット値を表示 qstat -s 全てのジョブをステータスコメント付きで表示 qstat -r 実行中の全てのジョブを表示 qstat -f [jobid] 指定したジョブの詳細な情報を表示 qstat -Qf [queue] 指定したキューの詳細な情報を表示 #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 }} ネットワークの設定 (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 }} 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 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(スーパーユーザー)で作業 [#p26d5c60] 変更必要ノード:管理ノードのみ 変更箇所:/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 を実行してください。 ------------------------------------------ #pbsnodes -a vt001.localdomain state = free np = 8 properties = A 3 ntype = cluster status = ・・・・省略 vt002.localdomain state = free np = 8 properties = A ntype = cluster status = ・・・・省略 vt003.localdomain state = free np = 8 properties = B ntype = cluster status = ・・・・省略 vt004.localdomain state = free np = 8 properties = B ntype = cluster status = ・・・・省略 --------------------------------------- 作成したグループを指定してジョブを投入する方法です --------------------------------------- #!/bin/sh #PBS -l ncpus=8 #PBS -l nodes=1:ppn=8:B ←ノードの後ろに:で区切ってグループを指定 cd $PBS_O_WORKDIR mpirun -np 8 ./himeM8 --------------------------------- 4 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で主に使用するコマンドの解説 qstat コマンドのオプションの解説 qstat -q システムの全ての queue を表示 qstat -B PBS Server のサマリー情報を表示 qstat -a システムの全てのジョブを表示 qstat -Q 全ての queue のリミット値を表示 qstat -s 全てのジョブをステータスコメント付きで表示 qstat -r 実行中の全てのジョブを表示 qstat -f [jobid] 指定したジョブの詳細な情報を表示 qstat -Qf [queue] 指定したキューの詳細な情報を表示 ジョブ投入時のスクリプトのオプション コマンド名 内容 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 -----------------------------------
テキスト整形のルールを表示する