computer/linux/cluster
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#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
-----------------------------------
ページ名: