第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
②Scriptファイルを記述
PBS Server
ga2k.sh
・CPU時間
・メモリ領域
・ノード数など
③ジョブの投入
$qsub ga2k.sh
計算ノード
スクリプトファイル(1/3)
• シングルジョブ用スクリプト
#!/bin/sh
#PBS -N test
#PBS -j oe
#PBS -l ncpus=1
#PBS -l nodes=1
#PBS -q default
cd $PBS_O_WORKDIR
./ga2k
…1
…2
…3
…4
…5
…6
…7
①ジョブの名前を決める
②o(Output file), e(Error file)の出力
③使用するCPUの数
④使用するノードの数
⑤キューの指定
⑥実行ファイルのあるディレクトリに移動
⑦実行ファイルを指定
スクリプトファイル(2/3)
• 並列ジョブ用スクリプト
#!/bin/sh
#PBS -N ga2k-para
#PBS -j oe
#PBS -l ncpus=4
#PBS -l nodes=4
#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の合計数
②ノード数はジョブで使用するノードの合計数
③このジョブの実行時間の見積もりを指定(ここでは,10分間を指定)
④-machinefileには,PBSが最適に選択したノードファイルである,
$PBS_NODEFILEを指定する
…1
…2
…3
…4
スクリプトファイル(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
Queue
PBS_Mom
Script file:
・CPU時間
・メモリ領域
・ノード数など
Host B
Job scheduler
• 役割:
リソースマネージャ(PBS_Server)に対して,どのジョブを
いつ・どこで実行すべきかに関する情報を提供する.
• PBSは,Pluginとして別スケジューラを使用することを許可
– デフォルトスケジューラ
– Maui Scheduler
Policy
Scheduler
Default
Policy
PBS_Server
Maui
スケジューリング・ポリシー
• 基本ポリシー:
後からqueueに投入されたジョブであっても,
空いているリソースがあれば,先に実行する.
• 基本ポリシーに伴う問題点
– 大規模なリソースを要求するジョブの実行が妨げられる.
• 要求するリソースがなかなか利用可能にならないため.
• デフォルトスケジューラのポリシー
– Starving Job メカニズム
• Maui schedulerのポリシー
– ジョブの経過時間に基づくノード予約システム
デフォルトスケジューラ
• 基本ポリシー:
– 要求されたCPU時間によって,ソートされる.
つまり,最も実行時間の短いジョブから実行される.
• Starving Job メカニズム:
– あらかじめ定義された時間(デフォルトでは24時間)以上
ジョブが実行可能状態のままである時,開始される.
– 一旦このメカニズムが開始されると,スケジューラはこ
の“starving”なジョブがスタートされるまで,新しいジョ
ブのスタートを止める.
Maui scheduler
• Mauiの役割
– (1)情報提供
• ユーザへのジョブ及びqueueなどの付加情報の提供
• 管理者へのリソースの現状や統計情報の提供
Maui独自のコマンドを提供
– (2)スケジューリング
• BackfillなどMaui独自のスケジューリング方式
• Mauiの機能
–
–
–
–
–
Backfill(充填)
Advanced Reservations(高度な予約)
Quality of Service(QoS)(サービスの品質)
Statistics(統計)
Diagnosis(分析)
Maui feature
• 基本ポリシー:
– いくつかの要因によって決定された「優先度」によるソート.
• Backfill:
– 最も優先度の高いジョブの実行を遅らせることなく,
優先度の低いジョブの実行を許すメカニズム.
– その際,最も実行時間の短いジョブの情報を使用.
• Mauiは,全てのジョブの「最早完了時刻」を把握している.
• そのために,ユーザ側にジョブの実行時間の見積もりが必要.
» -l walltime = [hh:mm:ss] により設定可能
• この見積もりを正確にすることが,
このメカニズムを有効に機能させるかどうかのキーとなる.
Backfill
• 優先度:B > C
C
-1
0
1
A
Backfill
Nodes
2
3
4
Time
B
Backfill
• 優先度:B > C
• Backfillにより,CがBより先に実行
-1
0
1
A
C
Nodes
2
3
4
Time
B
Backfill
•
•
•
•
優先度:B > C
Backfillにより,CがBより先に実行
実際は,Aが時間1で終了(2時間多く見積もっていた)
Aの終了時刻を正しく見積もっていれば,
Bは時間1から実行されたはず.
-1
0
1
2
3
4
A
C
Nodes
Time
B
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):スクリプトを介して行う
– シングルジョブ用スクリプト
– 並列ジョブ用スクリプト
【実行例】
[[email protected] pbs]$ qsub ga2k.sh
167.xen1
Job ID
が与えられる
qdel:ジョブのキャンセル
(1)qstatによりキューに入っているジョブの“Job ID”を確認
(2)qdelにより,Job IDを指定
(3)qstatにより,キャンセルされているかどうかを確認
【実行例】
[[email protected] pbs]$ qsub ga2k.sh
181.xen1
[[email protected] pbs]$ qstat -a
xen1:
(中略)
--------------- -------- -------- ---------- ------ --- --- ------ ----- - ----181.xen1
junya
p8
[[email protected] pbs]$ qdel 181
[[email protected] pbs]$ qstat -a
ga2k-para-
1078
4
4
--
--
R
--
qstat:ジョブのステータス表示
• qstatのオプション
qstat –q
システムの全てのqueueを表示
qstat –B
PBS Serverのサマリー情報を表示
qstat –a
システムの全てのジョブを表示
qstat –Q
全てのqueueのリミット値を表示
qstat –s
全てのジョブをステータスコメント付きで表示
qstat -r
実行中の全てのジョブを表示
qstat –f jobid
指定したジョブの詳細な情報を表示
qstat –Qf queue
指定したキューの詳細な情報を表示
例:qstat –q
[email protected]:~$ qstat -q
server: smpp2004.work.isl.doshisha.ac.jp
Queue
Memory CPU Time Walltime Node Run Que Lm
State
---------------- ------ -------- -------- ---- --- --- -- -----
default
--
--
--
2
2 10 2
--- --2 10
E R
Mauiの提供するコマンド
showq
現在queueに入っているジョブの状態を表示
checknode node 特定のノードの詳細な情報を表示
checkjob jobid
特定のジョブの詳細な情報を表示
setres
「予約」の設定
showres
現在の「予約」状況の表示
例:showq
[email protected]:~$ showq
ACTIVE JOBS--------------------
JOBNAME
USERNAME
24
wako
1 Active Job
STATE PROC
Running
1 of
1
REMAINING
STARTTIME
0:08:40
Sat Mar 13 15:41:07
2 Processors Active (50.00%)
IDLE JOBS---------------------JOBNAME
25
USERNAME
STATE
PROC
WCLIMIT
QUEUETIME
wako
Idle
2
0:10:00
Sat Mar 13 15:41:24
STATE
PROC
WCLIMIT
QUEUETIME
1 Idle Job
BLOCKED JOBS---------------JOBNAME
Total Jobs: 2
USERNAME
Active Jobs: 1
Idle Jobs: 1
Blocked Jobs: 0
例:setres & showres
[email protected]:~$ setres -s 16:00:00_03/13 -e 17:00:00_03/13 ALL
[email protected]:~$ showres
Reservations
ReservationID
Type S
Start
SYSTEM.1
User -
-0:23:11
1 reservations located
[email protected]:~$ date
Sat Mar 13 16:23:33 JST 2004
End
0:36:49
Duration
N/P
StartTime
1:00:00
3/3
Sat Mar 13 16:00:00
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のインストール
# ./configure --set-default-server=smpp2004
# make
# make install
計算ノード(pbs_momのみ)のインストール
# ./configure --disable-server --set-sched=no
# make
# make install
・PBSの各種デーモンのインストールディレクトリは,/usr/local/sbin
・PBSの設定ファイルのインストールディレクトリは,/usr/spool/PBS
PBS_Serverのセットアップ(1/2)
• nodesファイルの作成
– /usr/spool/PBS/server_priv/nodesファイルを作成
– 実行ノード(ホスト名)を記述
# less nodes
sp01
sp02
• サーバーデーモンの初期化
– -t createオプションは,インストール後1回だけ実行
– その後,PBS_Serverの起動にオプションは必要ない
# /usr/local/sbin/pbs_server –t create
# /usr/local/sbin/pbs_sched
PBS_Serverのセットアップ(2/2)
• queueの作成
– server.conファイルの作成
# 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
– qmgrコマンドの実行
# qmgr < server.con
Queueの作成
Queue typeの指定
ノードの最大数
ノードの最小数
実行可能な最大ジョブ数
一人のユーザが
実行可能な最大ジョブ数
計算ノード(PBS_Mom)のセットアップ
• server_nameの確認
– /usr/spool/PBS/server_nameファイルの確認
# less server_name
smpp2004
• configファイルの作成
– /usr/spool/PBS/mom_priv/configファイルの編集
# 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 現在)
• インストール手順
# ./configure
• Mauiのセットアップ
– /usr/spool/maui/maui-3.2.5/maui.cfgファイルの確認
• SERVERHOST
smpp2004
• RMCFG[base] TYPE=PBS
PBS+Mauiの起動
PBS Serverの起動
# /usr/local/sbin/pbs_server –t true
# /usr/local/sbin/maui
PBS Server
計算ノードの起動
smpp2004
pbs_server
# /usr/local/sbin/pbs_mom
maui
計算ノード
pbs_mom
pbs_mom
sp01
sp02
参考文献
•
•
•
•
•
•
•
•
OpenPBS
http://www.openpbs.org/
Maui Users Manual
http://www.supercluster.org/mauidocs/mauiusers.shtml
OpenPBS vs SGE vs LSF
http://www.softek.co.jp/Cluster/grid.html
The Portable Batch Scheduler and the Maui Scheduler on Linux Clusters
http://www.scl.ameslab.gov/Publications/Halstead/usenix_2k.pdf
ブートストラップシステム利用の手引き
http://ismsgi.ism.ac.jp/ISM_manual/sgi1200/ism_ug.jp.html
xpbs
http://www.pccluster.org/score/dist/score/html/ja/reference/pbs/user.html
Torque
http://www.supercluster.org/projects/torque/
OpenPBSのインストール方法
http://www.nakl.t.u-tokyo.ac.jp/~saiko/globus/openPBS_install.html
PBSの構成
• Commands
– ジョブの実行,モニタリング,修正,削除などはコマンドを介して行う
• Job Scheduler (pbs_sched)
– スケジューリングPolicyを管理するデーモン
– デフォルトはFIFO scheduler(ここでは,Maui schedulerを採用)
• Job Server (pbs_server)
– ジョブの生成,受理,修正,実行(Momへの要求)などを行うデーモン
– Queueの管理
• Routing queue : ジョブをExecution queueに配置
E
• Execution queue : ジョブを実行
• Job Executer (pbs_mom)
– 実際にジョブの実行を行うデーモン
R
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 にリソース負荷を見てスケジューリングする機能
– ジョブ特性に応じたスケジューリングポリシーを設定できる
Grid Engine
PBS
動的なリソースバランシング
○
×
パラメトリックスタディ・ジョブ
○
×
並列ジョブ管理環境
○
○
自動ジョブ再実行
○
○
ジョブ管理システム(JMS)
• Job Management System:JMS
• JMSに必要な機能
– ユーザーサーバ
:ジョブの投入,監視,削除などユーザの窓口となる機能
– ジョブスケジューラ
:ジョブの種類,リソースの要求,リソースの空き状況,
スケジューリングポリシーなどを考慮してジョブを
スケジューリングする機能
– リソース管理
:リソース(CPU/メモリ使用率など)を監視し,
スケジュール通りにリソースを割当てる機能
例:qstat –f jobid
[email protected]:~$ qstat -f 27
Job Id: 27.smpp2004.work.isl.doshisha.ac.jp
Job_Name = ga2k-wakojun
Job_Owner = [email protected]
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の利用方法
– PBSの提供するコマンド
– Maui schedulerの提供するコマンド
• PBSのインストール方法
• Mauiのインストール方法
PBS管理者向け
XeniaにおけるPBSの構成
• スケジューリング・ポリシー
– Queueの構成
Queue
default
p4
p8
p16
p32
p64
queue_type
R
E
E
E
E
E
並列度
-
4
8
16
32
64
10
10
6
4
4
2
resources_max.nodect
-
4
8
16
32
64
resources_min.nodect
-
1
5
9
17
33
max_running
– ユーザが同時に実行できるジョブの最大数は10
ダウンロード

PBS超入門 - 医療情報システム研究室