450 likes | 701 Views
第 35 回 超並列計算研究会. PBS 超入門. 同志社大学大学院 知的システムデザイン研究室 輪湖 純也. 行列のできるラーメン屋さん. 店員さんがしなければならないこと ・店内の空き状況の把握 ・客の誘導 ・客への対応. 店員さん. 待ち行列. ジョブ管理システム( JMS ). Job Management System : バッチジョブの管理を効率よく行うためのシステム. 一人のユーザがシステムを占有してしまうことを避け , 各ユーザにシステム資源 ( CPU 時間 , メモリ領域 ) を公平に割り振る. JMS に必要な機能. リソース管理.
E N D
第35回 超並列計算研究会 PBS超入門 同志社大学大学院 知的システムデザイン研究室 輪湖 純也
行列のできるラーメン屋さん 店員さんがしなければならないこと ・店内の空き状況の把握 ・客の誘導 ・客への対応 店員さん 待ち行列
ジョブ管理システム(JMS) • Job Management System: • バッチジョブの管理を効率よく行うためのシステム. • 一人のユーザがシステムを占有してしまうことを避け,各ユーザにシステム資源(CPU時間,メモリ領域)を公平に割り振る. • JMSに必要な機能 リソース管理 ジョブスケジューラ ユーザーサーバ
JMSの例 • DQS(Distributed Queuing System) • Florida State University,http://www.scri.fsu.edu/~pasko/dqs.html • LSF(Load Sharing Facility) • Platform Computing Corporation,http://www.platform.com/ • Condor • University of Wisconsin,http://www.cs.wisc.edu/condor/ • Generic NQS • University of Sheffield,http://www.gnqs.org/ • SGE(Sun Grid Engine) • Sun Microsystems,http://gridengine.sunsource.net/ • PBS(Portable Batch System) • NASA,http://www.openpbs.org/
PBSとは? • Portable Batch System • 現在,Linux Cluster環境で最も広く使われている • Veridian Systems社によってNASA向けに開発されている • BSDライセンスの下で自由に利用できる • Linux,BSD,Solaris,AIX,HP/UXなどUnix-likeな環境で利用可能 • 商用版である,PBS Pro (http://www.pbspro.com/)もある PBS Proについては、5月のSMPPにて紹介予定
PBSの使い方 ①実行プログラム ga2k PBS Server ②Scriptファイルを記述 ga2k.sh ③ジョブの投入 $qsub ga2k.sh ・CPU時間 ・メモリ領域 ・ノード数など 計算ノード
スクリプトファイル(1/3) • シングルジョブ用スクリプト #!/bin/sh #PBS -N test …1 #PBS -j oe …2 #PBS -l ncpus=1 …3 #PBS -l nodes=1 …4 #PBS -q default …5 cd $PBS_O_WORKDIR …6 ./ga2k …7 ①ジョブの名前を決める ②o(Output file), e(Error file)の出力 ③使用するCPUの数 ④使用するノードの数 ⑤キューの指定 ⑥実行ファイルのあるディレクトリに移動 ⑦実行ファイルを指定
スクリプトファイル(2/3) • 並列ジョブ用スクリプト #!/bin/sh #PBS -N ga2k-para #PBS -j oe #PBS -l ncpus=4…1 #PBS -l nodes=4…2 #PBS -l walltime=00:10:00…3 #PBS -q default cd $PBS_O_WORKDIR mpirun -np 4 –machinefile $PBS_NODEFILE ./ga2k-1.4/ga2k_mpi …4 ①CPU数はジョブで使用するCPUの合計数 ②ノード数はジョブで使用するノードの合計数 ③このジョブの実行時間の見積もりを指定(ここでは,10分間を指定) ④-machinefileには,PBSが最適に選択したノードファイルである, $PBS_NODEFILEを指定する
スクリプトファイル(3/3) • 並列ジョブ用スクリプト(デュアルCPUの場合) #!/bin/sh #PBS -N ga2k-para #PBS -j oe #PBS -l ncpus=4 …1 #PBS -l nodes=2:ppn=2 …2 #PBS -l walltime=00:10:00 #PBS -q default cd $PBS_O_WORKDIR mpirun -np 4 –machinefile $PBS_NODEFILE ./ga2k-1.4/ga2k_mpi ①CPU数はジョブで使用するCPUの合計数 この値は nodes x ppn の値になる ②node 数はジョブで使用する値ppnは1nodeにつき幾つのCPUを使うかを指定
PBSの構成 Host A Server Policy PBS_Mom PBS_Sched commands- qsub - qdel PBS_Server Client PBS_Mom Queue Script file: ・CPU時間 ・メモリ領域 ・ノード数など Host B
Job scheduler • 役割:リソースマネージャ(PBS_Server)に対して,どのジョブをいつ・どこで実行すべきかに関する情報を提供する. • PBSは,Pluginとして別スケジューラを使用することを許可 • デフォルトスケジューラ • Maui Scheduler Policy Scheduler Default Policy Maui PBS_Server
スケジューリング・ポリシー • 基本ポリシー:後からqueueに投入されたジョブであっても,空いているリソースがあれば,先に実行する. • 基本ポリシーに伴う問題点 • 大規模なリソースを要求するジョブの実行が妨げられる. • 要求するリソースがなかなか利用可能にならないため. • デフォルトスケジューラのポリシー • Starving Job メカニズム • Maui schedulerのポリシー • ジョブの経過時間に基づくノード予約システム
デフォルトスケジューラ • 基本ポリシー: • 要求されたCPU時間によって,ソートされる.つまり,最も実行時間の短いジョブから実行される. • Starving Job メカニズム: • あらかじめ定義された時間(デフォルトでは24時間)以上ジョブが実行可能状態のままである時,開始される. • 一旦このメカニズムが開始されると,スケジューラはこの“starving”なジョブがスタートされるまで,新しいジョブのスタートを止める.
Maui scheduler • Mauiの役割 • (1)情報提供 • ユーザへのジョブ及びqueueなどの付加情報の提供 • 管理者へのリソースの現状や統計情報の提供 • (2)スケジューリング • BackfillなどMaui独自のスケジューリング方式 • Mauiの機能 • Backfill(充填) • Advanced Reservations(高度な予約) • Quality of Service(QoS)(サービスの品質) • Statistics(統計) • Diagnosis(分析) Maui独自のコマンドを提供
Maui feature • 基本ポリシー: • いくつかの要因によって決定された「優先度」によるソート. • Backfill: • 最も優先度の高いジョブの実行を遅らせることなく,優先度の低いジョブの実行を許すメカニズム. • その際,最も実行時間の短いジョブの情報を使用. • Mauiは,全てのジョブの「最早完了時刻」を把握している. • そのために,ユーザ側にジョブの実行時間の見積もりが必要. • -l walltime = [hh:mm:ss] により設定可能 • この見積もりを正確にすることが,このメカニズムを有効に機能させるかどうかのキーとなる.
Backfill • 優先度:B > C C -1 0 1 2 3 4 Time A B Backfill Nodes
Backfill • 優先度:B > C • Backfillにより,CがBより先に実行 -1 0 1 2 3 4 Time A B C Nodes
Backfill • 優先度:B > C • Backfillにより,CがBより先に実行 • 実際は,Aが時間1で終了(2時間多く見積もっていた) • Aの終了時刻を正しく見積もっていれば,Bは時間1から実行されたはず. -1 0 1 2 3 4 Time A B C Nodes
Advanced reservations • 一定時間ある特定のリソースを利用可能にすることを保証するためのメカニズム. • リソース:CPU数,メモリ領域,ローカルディスク領域など e.g. ・2ノードを24時間以内に8時間使いたい. ・システム・メンテナンスのために,03/23 8:00 ~ 03/25 17:00まで全ノード使いたい. # setres -s 8:00:00_03/23 -e 17:00:00_03/25 ALL
PBSの提供するコマンド • Commands • qsub:ジョブの投入(再掲) • qstat:queue,ジョブの状態を表示 • qdel:ジョブの削除 • ジョブの投入(qsub):スクリプトを介して行う • シングルジョブ用スクリプト • 並列ジョブ用スクリプト 【実行例】 Job IDが与えられる [junya@xen1 pbs]$ qsub ga2k.sh 167.xen1
qdel:ジョブのキャンセル (1)qstatによりキューに入っているジョブの“Job ID”を確認 (2)qdelにより,Job IDを指定 (3)qstatにより,キャンセルされているかどうかを確認 【実行例】 [junya@xen1 pbs]$ qsub ga2k.sh 181.xen1 [junya@xen1 pbs]$ qstat -a xen1: (中略) --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- 181.xen1 junya p8 ga2k-para- 1078 4 4 -- -- R -- [junya@xen1 pbs]$ qdel 181 [junya@xen1 pbs]$ qstat -a
qstat:ジョブのステータス表示 • qstatのオプション
例:qstat –q wakojun@smpp2004:~$ qstat -q server: smpp2004.work.isl.doshisha.ac.jp Queue Memory CPU Time Walltime Node Run Que Lm State ---------------- ------ -------- -------- ---- --- --- -- ----- default -- -- -- 2 2 10 2 E R --- --- 2 10
例:showq wako@smpp2004:~$ showq ACTIVE JOBS-------------------- JOBNAME USERNAME STATE PROC REMAINING STARTTIME 24 wako Running 1 0:08:40 Sat Mar 13 15:41:07 1 Active Job 1 of 2 Processors Active (50.00%) IDLE JOBS---------------------- JOBNAME USERNAME STATE PROC WCLIMIT QUEUETIME 25 wako Idle 2 0:10:00 Sat Mar 13 15:41:24 1 Idle Job BLOCKED JOBS---------------- JOBNAME USERNAME STATE PROC WCLIMIT QUEUETIME Total Jobs: 2 Active Jobs: 1 Idle Jobs: 1 Blocked Jobs: 0
例:setres & showres wako@smpp2004:~$ setres -s 16:00:00_03/13 -e 17:00:00_03/13 ALL wako@smpp2004:~$ showres Reservations ReservationID Type S Start End Duration N/P StartTime SYSTEM.1 User - -0:23:11 0:36:49 1:00:00 3/3 Sat Mar 13 16:00:00 1 reservations located wako@smpp2004:~$ date Sat Mar 13 16:23:33 JST 2004
xpbs • PBS には、qsub ようなCUIに加えて、X 上で動作する GUI アプリケーション xpbs が用意されている. • xpbs経由で,ジョブの投入,削除,ステータス表示などが可能.
How to install PBS • OpenPBSのダウンロード • http://www.openpbs.org/ • 最新バージョンは,2.3.16 (04/03 現在) • インストール環境 • Debian GNU/Linux 3.0 • kernel 2.4.18 smpp2004 PBS Server 計算ノード sp01 sp02
インストール手順 PBS Serverのインストール ・PBSの各種デーモンのインストールディレクトリは,/usr/local/sbin ・PBSの設定ファイルのインストールディレクトリは,/usr/spool/PBS # ./configure --set-default-server=smpp2004 # make # make install 計算ノード(pbs_momのみ)のインストール # ./configure --disable-server --set-sched=no # make # make install
PBS_Serverのセットアップ(1/2) • nodesファイルの作成 • /usr/spool/PBS/server_priv/nodesファイルを作成 • 実行ノード(ホスト名)を記述 • サーバーデーモンの初期化 • -t createオプションは,インストール後1回だけ実行 • その後,PBS_Serverの起動にオプションは必要ない # less nodes sp01 sp02 # /usr/local/sbin/pbs_server –t create # /usr/local/sbin/pbs_sched
PBS_Serverのセットアップ(2/2) • queueの作成 • server.conファイルの作成 • qmgrコマンドの実行 # less server.con #default c q default s q default queue_type = execution s q default resources_max.nodect = 2 s q default resources_min.nodect = 1 s q default max_running = 2 s q default max_user_run = 2 s q default enabled = true s q default started = true s s scheduling = true Queueの作成 Queue typeの指定 ノードの最大数 ノードの最小数 実行可能な最大ジョブ数 一人のユーザが実行可能な最大ジョブ数 # qmgr < server.con
計算ノード(PBS_Mom)のセットアップ • server_nameの確認 • /usr/spool/PBS/server_nameファイルの確認 • configファイルの作成 • /usr/spool/PBS/mom_priv/configファイルの編集 # less server_name smpp2004 # less config $logevent 0x1ff $clienthost smpp2004 $clienthost sp01 $clienthost sp02 $max_load 1.2 $ideal_load 1.0
How to install Maui • Mauiのダウンロード • http://www.supercluster.org/maui/ • 最新バージョンは,3.2.5(04/03 現在) • インストール手順 • Mauiのセットアップ • /usr/spool/maui/maui-3.2.5/maui.cfgファイルの確認 • SERVERHOST smpp2004 • RMCFG[base] TYPE=PBS # ./configure
PBS+Mauiの起動 # /usr/local/sbin/pbs_server –t true # /usr/local/sbin/maui PBS Serverの起動 PBS Server smpp2004 計算ノードの起動 pbs_server # /usr/local/sbin/pbs_mom maui 計算ノード pbs_mom pbs_mom sp01 sp02
参考文献 • OpenPBShttp://www.openpbs.org/ • Maui Users Manualhttp://www.supercluster.org/mauidocs/mauiusers.shtml • OpenPBS vs SGE vs LSFhttp://www.softek.co.jp/Cluster/grid.html • The Portable Batch Scheduler and the Maui Scheduler on Linux Clustershttp://www.scl.ameslab.gov/Publications/Halstead/usenix_2k.pdf • ブートストラップシステム利用の手引きhttp://ismsgi.ism.ac.jp/ISM_manual/sgi1200/ism_ug.jp.html • xpbshttp://www.pccluster.org/score/dist/score/html/ja/reference/pbs/user.html • Torquehttp://www.supercluster.org/projects/torque/ • OpenPBSのインストール方法http://www.nakl.t.u-tokyo.ac.jp/~saiko/globus/openPBS_install.html
E R PBSの構成 • Commands • ジョブの実行,モニタリング,修正,削除などはコマンドを介して行う • Job Scheduler (pbs_sched) • スケジューリングPolicyを管理するデーモン • デフォルトはFIFO scheduler(ここでは,Maui schedulerを採用) • Job Server (pbs_server) • ジョブの生成,受理,修正,実行(Momへの要求)などを行うデーモン • Queueの管理 • Routing queue : ジョブをExecution queueに配置 • Execution queue : ジョブを実行 • Job Executer (pbs_mom) • 実際にジョブの実行を行うデーモン
PBSのジョブの扱い方 • ユーザがすること • ジョブが必要とするリソース要求を決定する • リソース: CPU時間,メモリ領域,ノード数など • バッチスクリプトを記述する • qsubコマンドによってPBSにジョブを投入する • PBSがすること • ジョブを要求されたリソースに基づいてqueueに配置する • このリソースが利用可能になった時に,ジョブを実行する • ジョブは,実行が完了するかリソース要求のリミットを越えるまで実行される • e-mailなどで完了を通知することも可能
Torque • Tera-scale Open-source Resource and QUEue manager • OpenPBS 2.3.12をベースに,いくつかの機能が追加されている. • スケーラビリティ • 2500プロセッサを越える大規模なクラスタ上で動作可能 • 2000プロセッサを越える大規模なジョブの使用が可能 • フォールト・トレランス • 障害状況のチェック • ノードヘルスチェックのスクリプトをサポート • スケジューリング・インタフェース • 完了したジョブの統計情報の収集
Sun Grid Engine • Sun ONE Grid Engine 5.3(日本語対応) • スループットの向上が目的 • リソース利用率の向上 • リソースへの透過的アクセス • 主な機能と利点 • Dynamic にリソース負荷を見てスケジューリングする機能 • ジョブ特性に応じたスケジューリングポリシーを設定できる
ジョブ管理システム(JMS) • Job Management System:JMS • JMSに必要な機能 • ユーザーサーバ:ジョブの投入,監視,削除などユーザの窓口となる機能 • ジョブスケジューラ:ジョブの種類,リソースの要求,リソースの空き状況, スケジューリングポリシーなどを考慮してジョブを スケジューリングする機能 • リソース管理:リソース(CPU/メモリ使用率など)を監視し, スケジュール通りにリソースを割当てる機能
例:qstat –f jobid wakojun@smpp2004:~$ qstat -f 27 Job Id: 27.smpp2004.work.isl.doshisha.ac.jp Job_Name = ga2k-wakojun Job_Owner = wakojun@smpp2004.work.isl.doshisha.ac.jp job_state = Q queue = default server = smpp2004.work.isl.doshisha.ac.jp Account_Name = wakojun <省略> qtime = Sat Mar 13 15:58:51 2004 Rerunable = True Resource_List.ncpus = 1 Resource_List.nodect = 2 Resource_List.nodes = 2 Resource_List.walltime = 00:10:00
Agenda • ジョブ管理システム • PBSとは • PBSの構成 • Job schedulerの役割 • Maui schedulerとは • PBSの利用方法 • PBSの提供するコマンド • Maui schedulerの提供するコマンド • PBSのインストール方法 • Mauiのインストール方法 PBSユーザ向け PBS管理者向け
XeniaにおけるPBSの構成 • スケジューリング・ポリシー • Queueの構成 • ユーザが同時に実行できるジョブの最大数は10