SCore-D を複数ユーザ環境で起動する

クラスタ用の複数ユーザ環境を構築する場合、scored(8) を scout(1) 環境から起動する必要があります。 scored はユーザプロセスを fork() および exec() します。そのため、scored はユーザプロセスのユーザ ID を設定できるよう root として起動される必要があります。ここでは、四つのコンピュートホスト comp0comp1comp2 および comp3 を含むクラスタグループ 'pcc' 上で複数ユーザ環境を開始するとても簡単な例を示します。scoreboard(8) がホスト 'serv1' 上で動作しているため、環境変数 SCBDSERV を設定する必要があります:
$ /bin/su -
# export SCBDSERV=serv1
# export PATH=$PATH:/opt/score/bin:/opt/score/sbin:/opt/score/deploy
# scout -g pcc
SCOUT: Spawn done.
SCOUT: session started
# scored
SYSLOG: Timeslice is set to 500[ms]
SYSLOG: Cluster[0]: comp0.pccluster.org@0...comp3.pccluster.org@3
SYSLOG:   BIN=linux, CPUGEN=pentium-iii, SMP=1, SPEED=500
SYSLOG:   Network[0]: myrinet/myrinet
SYSLOG: SCore-D network: myrinet/myrinet
SYSLOG: SCore-D server: comp3.pccluster.org:9901
scored のスタートアップが完了するには数秒かかります。コンピュートホストロッククライアント、msgb(1) を起動していれば、msgb ウィンドウ内のノードブロックが青から赤に変わるのが見られます。

SYSLOG 出力の最初の行は、タイムスライスが 500 ミリ秒にセットされたことを示しています。タイムスライスは scored のコマンドラインで -ts time_slice オプションを用いて変更することができます。クラスタの情報がその後に続いています。この場合では、Cluster[0] と呼ばれる 4 つのホストからなるクラスタがあります。comp0.pccluster.org がホスト 0 となり、以下同様に comp3.pccluster.org のホスト 3 まで続きます。 この行の後には、クラスタ内のホストの CPU の情報が表示されます。バイナリタイプは linux、CPU 世代名は pentium-iii となっています。クラスタ内の各ホストは単一プロセッサ (この場合 SMP1 に設定されます) であり、プロセッサの速度は 500 です。これは 500MHz の意味ととれますが、実際の意味は管理者によって決定されます。

Network[0] と呼ばれる Myrinet ネットワークがあります。この場合、SCore-D のデフォルトのネットワークになり得るのはこのネットワークだけです。複数のネットワークがある場合には、デフォルトのネットワークはリスト中の一番最初のものになります。SCore-D サーバは、デフォルトでクラスタ内の一番最後のホストになり、この例では comp3.pccluster.org が SCore-D サーバとなります。

scored がクラスタグループ上で起動されると、ユーザが scrun(1) や mpirun(1) などのコマンドを使ってクラスタ上でジョブを起動させることが可能になります。ユーザプログラムの実行ファイルは scored によってコンピュートホストにコピーされます。実行ファイルがネットワークファイルシステム上に置かれている必要はありませんが、コピーが行えるよう、読み込み可能な状態になっている必要があります。ユーザの実行ファイルはディレクトリ /var/scored 内にコピーされます。ユーザプログラムがチェックポイントを要求した場合、チェックポイントイメージもこのディレクトリ内に収められます。このディレクトリは、これらのファイルを保持するための十分な空き容量があるファイルシステム上に置かれなければなりません。このディレクトリは scored がクラスタホスト上で最初に起動されたときに作成されます。システム管理者がこのディレクトリを他のファイルシステム上におきたい場合、システム管理者は scored を起動する前にシンボリックリンクを作っておく必要があります。ユーザファイルは並列プロセスが終了すると削除されます。

scored ではいくつものオプションが利用できます。完全な詳細については scored(8) man ページを参照してください。 以下の例では、デフォルトのサーバを変える方法と、クラスタ上でのプロセスの排他的スケジューリングを指定する方法を示しています。排他的スケジューリングは、複数ユーザ環境下であってもプログラム実行中のコンピュートホストの排他的な使用を保証し、ユーザがプログラムの性能評価を行うことが可能です:

# scout -g pcc
SCOUT: Spawn done.
SCOUT: session started
# scored -server 0 -exclusive
SYSLOG: Timeslice is set to 5000[ms]
SYSLOG: Cluster[0]: comp0.pccluster.org@0...comp3.pccluster.org@3
SYSLOG:   BIN=linux, CPUGEN=pentium-iii, SMP=1, SPEED=500
SYSLOG:   Network[0]: myrinet/myrinet
SYSLOG: SCore-D network: myrinet/myrinet
SYSLOG: SCore-D server: comp0.pccluster.org:9901
SYSLOG: Exclusive scheduling mode
-server オプションで、SCore クラスタデータベース scorehosts.db(5) 中でノード順序が 0 であるホストが SCore-D サーバになるよう指定しています。上の SYSLOG 出力で SCore-D サーバが comp3.pccluster.org:9901 から comp0.pccluster.org:9901 に変わっているのが分かります。

-exclusive オプションは、並列プロセスの実行が終了するまで他のプロセスがスケジュールされないことを保証します。

関連項目

scout(1), scrun(1), sctop(1), scorehosts.db(5), scoreboard(8), scbcast(8)

CREDIT
This document is a part of the SCore cluster system software developed at PC Cluster Consortium, Japan. Copyright (C) 2003 PC Cluster Consortium.