User Tools

Site Tools


自作クラスタ計算機:pbs_proの基本設定

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
自作クラスタ計算機:pbs_proの基本設定 [2023/05/01 11:06] – [PBS Proについて] koudai自作クラスタ計算機:pbs_proの基本設定 [2026/05/15 17:41] (current) – [計算ノードでの作業] koudai
Line 11: Line 11:
 ====== 環境 ====== ====== 環境 ======
  
-  * Ubuntu 20.04 LTS+  * Ubuntu 26.04 LTS 
 +  * 管理ノードと計算ノードで、OSはバージョンも含めて同一のものを使用してください 
 + 
 ====== 構成 ====== ====== 構成 ======
  
Line 36: Line 39:
   * /opt   * /opt
 が計算ノードと共有されているとします。 が計算ノードと共有されているとします。
-また、hostsファイルはNISによって共有されているとします。+また、ユーザー情報とhostsもLDAPによって共有されているとします。
 ===== 準備 ===== ===== 準備 =====
 +
 +==== SSHの設定 ====
 +
 +パスフレーズ無しでSSHログインできるようにします。
 +PBSを使用する全ユーザーは、管理ノードで以下を実行してください。
 +
 +<code>
 +$ ssh-keygen -t rsa -N ""
 +$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 +$ chmod 600 ~/.ssh/authorized_keys
 +$ echo "StrictHostKeyChecking no" >> ~/.ssh/config
 +</code>
 +==== UFWの設定 ====
 +
 +ファイアウォールにUFWを使っている場合、プライベートLAN内の通信をすべて許可してやります。
 +管理ノードで以下のコマンドを実行します。
 +
 +<code>
 +$ sudo ufw allow from 192.168.0.0/24
 +</code>
  
 ==== hostsファイルの編集 ==== ==== hostsファイルの編集 ====
  
-管理ノードで行います+管理ノードと計算ノードで行います
  
-  - /etc/hosts に、管理ノードと計算ノードのプライベートLAN内におけるIPアドレスとホスト名を登録します<code>$ sudo vi /etc/hosts</code><file - hosts> +    * Ubuntuでは自己参照アドレス(localhost)に127.0.1.1が割り当てられていますが、このままだ動かなくなるので削除します<code>$ sudo nano /etc/hosts</code><file - hosts> 
-127.0.0.1 localhost +# Your system has configured 'manage_etc_hosts' as True
-127.0.0.1 kanri +# As a result, if you wish for changes to this file to persist 
-192.168.0.1 kanri +# then you will need to either 
-192.168.0.11    keisan11 +# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl 
-192.168.0.12    keisan12 +# b.) change or remove the value of 'manage_etc_hosts' in 
-192.168.0.13    keisan13 +#     /etc/cloud/cloud.cfg or cloud-config from user-data 
-(以下略)+
 +127.0.0.1 localhost 
 + 
 +# The following lines are desirable for IPv6 capable hosts 
 +::1 localhost ip6-localhost ip6-loopback 
 +ff02::1 ip6-allnodes 
 +ff02::2 ip6-allrouters
 </file> </file>
-    * Ubuntuでは自己参照アドレスに127.0.1.1が割り当てられていますが、このままだ後述のQmgrがなぜか編集できなくなるので変更します。 +    * 再起動ると /etc/hosts に戻ってまいます。/etc/cloud/cloud.cfg を開いて 
-  - NIS情報を更新します<code> +      * cloud_init_modulesupdate_etc_hostsコメントアウト 
-$ sudo make -C /var/yp +      * manage_etc_hosts: true があれば、falseに変更 
-</code>+
  
  
Line 73: Line 101:
       postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \       postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
       libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \       libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
-      automake+      automake g++ libcjson-dev
 </code> </code>
   * PBS Proの実行に必要なもの(管理ノードと計算ノードの両方にインストール)<code>   * PBS Proの実行に必要なもの(管理ノードと計算ノードの両方にインストール)<code>
-$ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all libhwloc-dev   # OpenPBS v20 +$ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all libhwloc-dev libcjson-dev   # OpenPBS v23
-$ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin tcl tk libical3 postgresql-server-dev-all   # PBS Pro v19+
 </code> </code>
     * 必要なパッケージはOSのバージョンによるので、必ず https://github.com/PBSPro/pbspro/blob/master/INSTALL をチェックしてください。     * 必要なパッケージはOSのバージョンによるので、必ず https://github.com/PBSPro/pbspro/blob/master/INSTALL をチェックしてください。
Line 95: Line 122:
 $ make $ make
 </code> </code>
-    * 現在のバージョン(pbs20.0.0)ではPythonのバージョンが3.5であることを要求してくるので、configureで文句を言われたときはpyenvなどを使って変更してください。 
-    * https://qiita.com/pdv/items/1107bcdca7fa43de673d 
   - PBSのインストールを完了させます<code>   - PBSのインストールを完了させます<code>
 $ sudo make install $ sudo make install
 $ sudo /opt/pbs/libexec/pbs_postinstall $ sudo /opt/pbs/libexec/pbs_postinstall
 </code> </code>
-    * (Ubuntu20.04 & pbs20.0.0) pbs_postinstallの際に"update-rc.d: error: no runlevel symlinks to modify, aborting!"と出てきたら自動起動の設定に失敗しています。手動で次のようにしてください<code>+    * (Ubuntu26.04 & pbs23.06.06) pbs_postinstallの際に"update-rc.d: error: no runlevel symlinks to modify, aborting!"と出てきたら自動起動の設定に失敗しています。手動で次のようにしてください<code>
 $ sudo update-rc.d pbs defaults $ sudo update-rc.d pbs defaults
 </code> </code>
   - 設定ファイルで PBS_START_SERVER, PBS_START_SCHED, PBS_START_COMM をすべて1にして、このノードがフロントエンドであることを設定します。<code>   - 設定ファイルで PBS_START_SERVER, PBS_START_SCHED, PBS_START_COMM をすべて1にして、このノードがフロントエンドであることを設定します。<code>
-$ sudo vi /etc/pbs.conf+$ sudo nano /etc/pbs.conf
 </code><file - pbs.conf> </code><file - pbs.conf>
 PBS_SERVER=kanri PBS_SERVER=kanri
Line 123: Line 148:
 $ sudo /etc/init.d/pbs start $ sudo /etc/init.d/pbs start
 </code> </code>
-  - いったんログアウトして、再ログインします(インストル時設置された /etc/profile.d/pbs.sh が読み込まれます)。<code> +  - 環境変数を読み込む設定をします。すべてのユザーがPBSを使えるように /etc/bash.bashrcを編集します<code> 
-exit +sudo nano /etc/bash.bashrc  
-</code>+</code><file - bash.bashrc> 
 +(略) 
 +. /etc/profile.d/pbs.sh 
 +</file> 
 +  - いったんログアウトして、再ログインします
  
 ===== 計算ノードでの作業 ===== ===== 計算ノードでの作業 =====
Line 132: Line 161:
 $ sudo /opt/pbs/libexec/pbs_postinstall $ sudo /opt/pbs/libexec/pbs_postinstall
 </code> </code>
-    * (Ubuntu20.04 & pbs20.0.0) pbs_postinstallの際に"update-rc.d: error: no runlevel symlinks to modify, aborting!"と出てきたら自動起動の設定に失敗しています。手動で次のようにしてください<code>+    * (Ubuntu26.04 & pbs23.06.06) pbs_postinstallの際に"update-rc.d: error: no runlevel symlinks to modify, aborting!"と出てきたら自動起動の設定に失敗しています。手動で次のようにしてください<code>
 $ sudo update-rc.d pbs defaults $ sudo update-rc.d pbs defaults
 </code> </code>
-    * 管理ノードと計算ノードでOSのバージョンが異なる場合はインストールがうまくいかないことがあります。そのときは計算ノードでも「PBS Proのコンパイルに必要なもの」をインストールした後、管理ノードと同様に make を行ってください。その際はNFSの共有ディレクトリにインストールしないようprefixを変更してください。 
   - 設定ファイルで PBS_START_MOM=1 とすることで、このノードが計算ノードであることを指定します。またPBSサーバのホスト名を PBS_SERVER で設定します。<code>   - 設定ファイルで PBS_START_MOM=1 とすることで、このノードが計算ノードであることを指定します。またPBSサーバのホスト名を PBS_SERVER で設定します。<code>
-$ sudo vi /etc/pbs.conf+$ sudo nano /etc/pbs.conf
 </code><file - pbs.conf> </code><file - pbs.conf>
 PBS_SERVER=kanri PBS_SERVER=kanri
Line 199: Line 227:
  
 <code> <code>
-Qmgr: create node keisan11 +Qmgr: create node node10 
-Qmgr: create node keisan12+Qmgr: create node node11
 ... ...
 </code> </code>
Line 206: Line 234:
 ノードあたりに使用できる最大スレッド数も指定できます(ここでは24コア)。 ノードあたりに使用できる最大スレッド数も指定できます(ここでは24コア)。
 <code> <code>
-Qmgr: set node keisan11 resources_available.ncpus=24 +Qmgr: set node node10 resources_available.ncpus=24 
-Qmgr: set node keisan12 resources_available.ncpus=24+Qmgr: set node node11 resources_available.ncpus=24
 ... ...
 +</code>
 +
 +ノードの設定状況も確認できます
 +<code>
 +Qmgr: print node node10
 +#
 +# Create nodes and set their properties.
 +#
 +#
 +# Create and define node node10
 +#
 +create node node10
 +set node node10 state = free
 +set node node10 resources_available.arch = linux
 +set node node10 resources_available.host = node10
 +set node node10 resources_available.mem = 131666992kb
 +set node node10 resources_available.ncpus = 24
 +set node node10 resources_available.vnode = node10
 +set node node10 resv_enable = True
 </code> </code>
  
 使わなくなったノードはdeleteで消せます 使わなくなったノードはdeleteで消せます
 <code> <code>
-Qmgr: delete node keisan11+Qmgr: delete node node10
 </code> </code>
  
Line 243: Line 290:
 --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- --------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
 1.kanri        sugimoto workq    STDIN        9007        --    --  R 00:00 1.kanri        sugimoto workq    STDIN        9007        --    --  R 00:00
-   Job run at Tue Dec 03 at 04:56 on (keisan11:ncpus=1)+   Job run at Tue Dec 03 at 04:56 on (node10:ncpus=1)
 </code> </code>
 Sの列が状態を表し、Qだと実行待ち、Rだと実行中を意味します。 Sの列が状態を表し、Qだと実行待ち、Rだと実行中を意味します。
-ジョブが計算ノードkeisan11で実行されていることがわかります。+ジョブが計算ノードnode10で実行されていることがわかります。
  
 ジョブを終了または削除したい場合は qdel を使います ジョブを終了または削除したい場合は qdel を使います
Line 259: Line 306:
 ===== MPIの設置 ===== ===== MPIの設置 =====
  
-  * OpenMPI, MPICH2, Intel MPIなどのMPIライブラリを管理ノードの /usr/local または /opt にインストールし、NFSによって各計算ノードに共有してください +  * OpenMPI, MPICH2, Intel MPIなどのMPIライブラリを管理ノードの /opt にインストールし、NFSによって各計算ノードに共有してください
-  * 学生であれば Intel Parallel Studio XE が無償で使えて便利です +
 ===== ソースコード ===== ===== ソースコード =====
  
Line 328: Line 373:
 <code> <code>
 $ cat run.sh.o1 $ cat run.sh.o1
-Hello world: rank 0 of 48 running on keisan11 +Hello world: rank 0 of 48 running on node10 
-Hello world: rank 1 of 48 running on keisan11+Hello world: rank 1 of 48 running on node10
 (略) (略)
-Hello world: rank 23 of 48 running on keisan11 +Hello world: rank 23 of 48 running on node10 
-Hello world: rank 24 of 48 running on keisan12 +Hello world: rank 24 of 48 running on node11 
-Hello world: rank 25 of 48 running on keisan12+Hello world: rank 25 of 48 running on node11
 (略) (略)
-Hello world: rank 47 of 48 running on keisan12+Hello world: rank 47 of 48 running on node11
 </code> </code>
  
Line 373: Line 418:
  
   * ompthreadsはMPIの1プロセスあたりのOpenMPのスレッド数です    * ompthreadsはMPIの1プロセスあたりのOpenMPのスレッド数です 
-  * mpiprocs * ompthreads = ncpus となるようにしてください +  * 基本的には mpiprocs * ompthreads = ncpus となるようにしま
-  * OpenMPのスレッド数は、1つの計算ノードに含れるCPUコア数以下になるようにしてください+
  
 ====== Fairshare ====== ====== Fairshare ======
Line 382: Line 426:
   * https://www.altairjp.co.jp/resource/basic-fairshare-for-altair-pbs-professional   * https://www.altairjp.co.jp/resource/basic-fairshare-for-altair-pbs-professional
  
 +
 +====== ノードごとの負荷の分散 ======
 +
 +ジョブを投入したら、デフォルトでは1番目の計算ノードにジョブを埋めていき、その計算ノードのリソースが全て埋まってから次の計算ノードでジョブが走るようになります。
 +これを、各ノードの負荷を分散させるようにジョブが投入されるように変更します。
 +
 +設定ファイル <nowiki>/var/spool/pbs/sched_priv/sched_config</nowiki> から node_sort_key を探して次のように変更します。
 +
 +  * 使用しているCPUのコア数が一番少ないノードにジョブを割り当てたい場合<file - sched_config>
 +node_sort_key: "ncpus LOW assigned"     ALL
 +</file>
 +
 +  * 使用していないCPUのコア数が一番多いノードにジョブを割り当てたい場合<file - sched_config>
 +node_sort_key: "ncpus HIGH unused"     ALL
 +</file>
 +
 +(各計算ノードのコア数がすべて同じ場合は、どちらも同じ結果になります)
 +
 +PBSを再起動します。
 +
 +<code>
 +sudo /etc/init.d/pbs restart
 +</code>
 +
 +  * PBS Professional 2022.1 Administrator's Guide, Sec. 4.9.49
 ====== アンインストール ====== ====== アンインストール ======
  
自作クラスタ計算機/pbs_proの基本設定.1682906793.txt.gz · Last modified: 2023/05/01 11:06 by koudai