scored
(8) を scout
(1) 環境から起動する必要があります。
scored はユーザプロセスを fork() および exec() します。そのため、scored はユーザプロセスのユーザ ID を設定できるよう root として起動される必要があります。ここでは、四つのコンピュートホスト comp0
、comp1
、comp2
および 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
となっています。クラスタ内の各ホストは単一プロセッサ (この場合 SMP
が 1
に設定されます) であり、プロセッサの速度は 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
オプションは、並列プロセスの実行が終了するまで他のプロセスがスケジュールされないことを保証します。