◊◇◇◇◇◇特集◊◇◇◇◇◇

負荷分散機構 LSF とバッチの投入について
山之上卓 l1 概要
本年度から研究システムにプラットフォームコンピューティング社の LSF(
LoadS
harin
gFacility,負荷分散機構）を導入した．

LSFはコンピュータネットワーク上でプログラムが起動されるとき，ネットワーク上の最も負荷の軽いコンピュータで自動的にそのプログラムを起動することによって，負荷分散を行なうものである．
新研究システムは，大きな計算を行なうための専用 CPUサーバ群，バックエンドプロセッサを備えている．バックエンドプロセッサを利用するためには，以下で述べるバッチシステムを使用する．このバッチシステムは LSFを利用しており，システム全体で CPUの有効利用を計っている．

CPUの利用効率を高めるため，バックエンドプロセッサはバッチジョブ専用になっている。 loginはできない．

2 バッチシステムの概要
バッチとはコンピュータを操作するための一連のコマンドを記述して，まとめて実行できるようにしたものである．直接人間とやりとりを行なう必要がない・定型的な処理を行なうプログラムの場合は，バッチを利用した方が便利で実行効率があがる．バッチジョプとは，バッチで記述された処理のことである．
以下にバッチの例を示す．

#!/bin/shmake
rmoutput
myprog<input> output
1情報科学センター戸畑キャンパス66

バッチの投入 (submit) とは，バッチをバッチキューと呼ばれる待ち行列に，実行したいバッチを並べることである．バッチキューに並んだバッチは，先着順などの順番でバックエンドプロセッサで実行される．

ubmit コマンドを使う事によって行なう．
バッチの投入は s

フロントエンドプロセッサ

resOOO.res.isc.kyutech.ac.jp

バッチ

バッチ

(sh script)(sh script)

submitsubmit二待ち状態 (PEND)
自動的に最も負荷の軽いバックエンドプロセッサでバッチが起動する

l実行状態

バソクエン丁プロセッサl□

バックエンドプロセッサ(RUN)

口 一 時 停 止 状 態 (SSUSP)

はた,1, ＇ー︑まET,1, ＇ー'NIox
DE

了了匁匁
脊条常常正異図 1：研究システムにおけるバッチの流れ

submit コマンドで投入されたバッチには，ジョブ ID(JOBID)と呼ばれる識別子が自動的に割り当てらDとバッチの状れる．また，バッチシステムに投入されたバッチは以下ような状態を持っている．ジョブ I態は bjobs コマンドで知る事ができる．

67

• PEND…実行開始待ち (pending)状態バッチキューに並んでいて，まだ実行されていない状態である．

• RUN… 実 行 状 態• SSUSP… 一 時 停 止 (suspending)状態． CPUで動作する平均プログラムの数が一定値を越えた場合などに，CPU利用効率を上げるため， 1部のバッチの実行を一時停止させる場合がある． CPUが空いたりするとまた実行を開始する．

• EXIT…異常終了状態バ；；チそのものが異常終了したり， bk
illコマンドでユーザが直接そのバッチを強制終了させた場合にこの状態になる．

• DONE…正常終了状態．

3 submit コ マ ン ド の 使 い 方esOOO.
res.
isc.
kyutech.
ac.
jpでバッチを投入するにはフロントエンドプロセッサ rsubmit ジョブクラスシェルスクリプトファイル名

を実行する．ジョブクラスとは，計算時間の上限や，必要メモリの上限を定めたもので省略可能である．省略した場合は最も制限の強い，ジョブクラス ‑SAが仮定される．

ジョブクラスには以下のものがある
逐次処理プログラムの場合
I

ジョブクラス

1

クラス名

‑SA

クラス SA‑SB

クラス SB‑SC

クラス SC‑SDクラス SDI

並列処理プログラム (PVMなど）の場合

68￨ジョブクラス

1

クラス名‑PAnクラス PAのジョブを投入する‑PBn

クラス PBのジョブを投入する‑PC11

クラス PCのジョブを投入する‑PDn

クラス PDのジョプを投入する

nは使用するプロセッサ数で 4から 8 まで．
各ジョブクラスは以下の制限を行なう．
逐次処理プログラムの場合

Iクラス名 ￨cpu制限時間（分） Iメモリ量 I
SA逐次

10分

16MB

SB逐次

60分

32MB

SC逐次

3
60分 (6時間）

64MB

SD逐次

1
440分 (24時間）

96MB

並列処理プログラムの場合

l￨cpu制限団皿りり］

メモリ量

PA並列 (PVM)

10分

16MB/CPU

PB並列 (PVM)

60分

32MB/CPU

PC並列 (PVM)

3
60分 (6時間）

64MB/CPU

PD並列 (PVM)

1
440分 (24時間）

96MB/CPU

1ークラス名

E 要登録

登録値

登録値

クラス PA, PB, PC, PDは PVMを使った並列プログラムのためのクラスである．
ピュータネットワークで並列計算を行なうためのソフトウェアで，セージパッシングを行なう関数などを埋め込んで利用する．

PVMは，コンC や FORTRANのプログラムにメッ

PVMについては

http://www.tobata.isc.kyutech.ac.jp/res‑tebiki/pvm/
や本広報の記事などを参照されたい．
なお，軽い計算のためのクラス SA と PAは他のクラスに比べて優先的に実行される．また並列プログ
ラムの利用を推進するため，並列プログラムは逐次処理プログラムより優先的に実行させるようにしている．

69

クラス E はクラス SDや PDの制限値を越えるようなジョブのためのクラスである．このクラスを利用するためには

http://www.tobata.isc.kyutech.ac.jp/res‑tebiki/how2batch/E‑class.psの申請書に記入して両キャンパス情報科学センター事務室のどちらかに提出していただきたい．
投入されたバッチジョブは，複数台あるバックエンドプロセッサのうち，実行開始時に最も負荷の軽いプロセッサで実行される．
本システムのバッチは UNIXのシェルスクリプトで記述する．例えばユーザが%rm ouput% jikken‑1 <input> output &のようにプログラムを実行していた場合，これをバッチにするためには，#!/bin/sh
rm output
jikken‑1 <input> outputのようなシェルスクリプトを記述する．シェルスクリプトを記述したファイルはchmod 755 ファイル名などを行なって，実行可能な状態にしておく必要がある．

4

その他の関連したコマンド

submitの他に，バッチジョブの状態を表示する bjobs, バッチジョブを強制終了する b
kill, 今までに投histコマンド等を使う事ができる．これらのコマンドの詳しい利用方法につい入したバッチの記録を見る bては manコマンドで参照する事ができる．

5 バッチシステム利用例
以下にバッチシステムの利用例を示す．

70

5.
1 逐次処理プログラムの場合のバッチ投入
以下は， cat コマンドでバッチを表示し，そのバッチを逐次クラス SBで投入する例である。

% cat batch.sh#!/bin/sh
rm output
myobj <input >output% submit ‑SBbatch.sh5.
2 並列処理プログラムの場合のバッチ投入
以下は，

catコマンドでバッチを表示し，そのバッチを 5つの CPU を使って並列クラス PAで投入する例である。

% cat pvmpai#!/bin/sh
rm output
pai̲master 4 100000000 >output% submit ‑PA 5 pvmpai

5.
3 bjobs コマンド
以下は，バッチを投入後， bjobsコマンドを実行した例である。

yamanoue% submit ‑sash2‑news

Job <11074> is submitted to queue <class‑sa>.

yamanoue% bjobs
71

JOBID USERSTAT QUEUE

11074 yamanoue RUNFROM̲HOST

EXEC̲HOST

JOB̲NAMESUBMIT̲TIME

resOOO

res005.res. sh2‑news

Sep 30 17:23

class‑sakillコマンド
5.4 b
以下は，5.
3 を実行後， bkillコマンドで投入したジョブを強制終了させた例である。

yamanoue°/. bkill 11074

Job <11074> is being terminated。bjobs
yamanoueo/.
No unfinished job foundyamanoue% bjobs ‑a

JOBID USERSTAT QUEUE

11074 yamanoue EXIT class‑sa

FROM̲HOST

EXEC̲HOSTJOB̲NAMESUBMIT̲TIME

resOOO

res005.res. sh2‑news

Sep 30 17:23

5.5 bhistによる過去のバッチ投入記録の表示
以下は， bllist コマンドによって，ユーザが最近投入したバッチの履歴を表示させた例である。

yamanoue%bhist ‑allmore
Job Id<101>,Job Name <yama1>, User <yamanoue>, Project <default>, Command <ec
ho 100000001‑/fortran/a.out>
ThuMay 9 1
7:02:
45: Submittedfromhost <resOOO> to Queue <priority>, CWD <$HOME>;
ThuMay 9 1
7:02:
45: Staェtedon<res001.res.isc.kyutech.ac.jp>, Pid <2656>;
72

Thu May 9 17:02:45: Running with execution home </home/hiko/yamanoue>, Executi
on CWD </home/hiko/yamanoue>;
Thu May 9 17:02:46: Exited with exit code 1. The CPU time used is 0.2 seconds.

Summary of time in seconds spent invarious states byThuMay 9 17:02:46 1996
PEND

PSUSP

゜ ゜

RUN

USUSP

SSUSP

UNKWN

TOTAL

10001Job Id <202>, User <yamanoue>, Project <default>, Command <echo 1000000001‑/fortran/a.out >‑/fortran/output>
Thu May 9 17:21:54: Submitted fromhost <resOOO> to Queue <priority>, CWD <$HOME>;
ThuMay 9 17:21:59: Started on <resOOO>, Pid <585>;
ThuMay 9 17:21:59: Running with executionhome </home/hiko/yamanoue>, Executi‑ ‑‑More‑‑

6 おわりに新研究システムの主要な利用法である，バッチ投入について述べた。大型計算機の時代に戻ったような使い方ではあるが，バックエンドプロセッサを計算専用に利用し，研究システムフロントエンドプロセッ
サなどをプログラム開発に利用するようして，コンピュータを使い分ける事によって，快適に研究システムを利用できることを目指している。

参考文献[1] ダイキン工業株式会社電子システム事業部，

73LSF
2.
2ユーザガイド