Catwalk Tutorial	Catwalk Tutorial	
東京大学	
堀 敦史

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

1!

Catwalk Tutorial	

ファイルステージング	• ファイルサーバ上のファイルを計算ノード間でコピー	Stage-IN 		
サーバ -> 計算ノード	
Stage-OUT	
計算ノード -> サーバ	• 短所	‒ ジョブスクリプトに記述 - 間違えるとジョブ失敗	
‒ 遅い	
• 多くの場合，バックグラウンド処理なので速度の考慮なし	
• 計算時間にステージングの時間がプラス	• 長所	
‒ それほど強力なファイルサーバは必要ない	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

2!

Catwalk Tutorial	

ファイルステージングの例	
• JAXA さんの例	
#!/bin/sh	#PBS ・・・	
#F_FF10I=/data/input_file#F_FF20O=/data/output_file#F_FF30IO=/data/inoutput_file./a.out	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

入力ファイル			出力ファイル	入出力ファイル		3!

Catwalk Tutorial	Catwalk	• 従来のステージングの欠点を改良	
‒ より並列ファイルシステムに近い使い易さ	
‒ より高性能なファイルステージング	
• 並列ファイルシステムの欠点も改良	
‒ 強力なファイルサーバの必要性	
‒ システム依存性をなくし，可搬性を向上	
• 協調的なシステム	
‒ 既存の分散／並列ファイルシステムとの共存，使い分けが可能	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

4!

Catwalk Tutorial	Catwalk の概要	• ふたつの Catwalk‒ Catwalk	• オンデマンドファイルステージング	• ステージングの記述が不要なので、記述を間違えない	• NFS と比肩できる性能	

‒ Catwalk-ROMIO	• MPI-IO に特化した Catwalk	• 並列ファイルシステムと比肩できる（or それ以上）の性能	

• １台のファイルサーバのみをサポート	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

5!

Catwalk Tutorial	Catwalk の特長	• インストールに root 権限不要	
‒ ビルドして PATH に登録するだけ	
‒ 独自の設定ファイルなし	
• 特別なハードは不要	‒ ファイルサーバ 	
普通のディスクとネットワーク	‒ 計算ノード 		
普通のディスクとネットワーク	
‒ ネットワーク 		
Ethernet (GbE) で十分	• 対象となるファイルは普通のファイル	‒ 変換やコピーの必要なし	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

6!

Catwalk Tutorial	Catwalk のモデル	
• ファイルサーバにあるファイルを計算ノードからアクセスできる	‒ プログラムからは Catwalk の存在は見えない	• 必要に応じて計算ノードのディスクにキャッシュを生成する	
‒ キャッシュはプログラムの終了時に自動的に削除	
• 計算ノードに書込まれたファイルはファイル最終的にファイルサーバ上に書込まれる	
‒ MPI-IO で生成しても通常のファイルとして生成	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

7!

Catwalk Tutorial	Catwalk の使い方モデル	
• 個人が使っている PC あるいはログインサーバ上のファイルを，クラスタから直接アクセス（しているように見せかける）!
• 陽にクラスタファイルシステムにコピー不要!
• Catwalk の性能は並列／分散ファイルシステムに負けない!
（どっちが良いかはケースバイケース）

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

並列／分散ファイルシステム
ではない	8!

Catwalk Tutorial	Catwalk の内部	リング分散プロセス構造!
並列アクセスを出来るだけ逐次アクセスに!
!→ シークを減らして高速化!
• Stage-IN!
– 対象ファイルを全てローカルディスクにコピー!
• Stage-OUT!
– 逐次全体コピー!
• MPI-IO Read!
– Stage-IN と同じ!
• MPI-IO Write!
– 並列書込要求を逐次書込に変換

2010年2月19日

第９回 PCクラスタ ワークショップ@京都9!

Catwalk Tutorial	

アジェンダ	
• ふたつの Catwalk	‒ 逐次／並列プログラム 	‒ 並列プログラム（MPI-IO）		
Catwalk		Catwalk-ROMIO	

• それぞれについて	
‒ 使い方の詳細	
‒ 現版の制限事項	

• 性能	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都10!

Catwalk Tutorial	

How to Use	Catwalk	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

11!

Catwalk Tutorial	Catwalk の使い方 – 基本	% catwalk -nh 2 mpirun -np 4 catwalk a.out!
!nh : ノード（ホスト）数 !プロセス数ではない！!
• Stage-IN!： a.out 内で read-open したファイルがa.out のカレントディレクトリにコピー!
• Stage-OUT： a.out がwrite-open したファイルがプログラム終了後にファイルサーバにコピー!

2010年2月19日

第９回 PCクラスタ ワークショップ@京都12!

Catwalk Tutorial	

計算ノードの対象ファイル	• Stage-IN，Stage-OUT 共通	
‒ ファイル名は "/" なしでなければならない	
‒ プログラム中でカレントディレクトリ変更可能	
‒ カレントが NFS 等の場合の動作保証なし	

• Stage-IN 	‒ カレントディレクトリに同名ファイルがない事	

• Stage-OUT	
‒ カレントディレクトリのファイルをサーバへ	
‒ いったん作ったファイルを消した場合，対象外	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

13!

Catwalk Tutorial	

サーバの対象ファイル	• Stage-IN		% catwalk ‒nh 32 ‒path A:B:C mpirun catwalk a.out		
a.out で read-open したファイル名をサーバのディレクト
リ A,B,C の順で探し，あればコピー．	
• Stage-OUT	
% catwalk -path X:Y:Z mpirun catwalk a.out	
% catwalk -dir X mpirun catwalk a.out	
a.out で write-open したファイルをサーバ上のディレク
トリ X にコピー（移動）	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

14!

Catwalk Tutorial	Catwalk の使用例- read	% cat > DIR/foo.dat		
適当なファイル foo.dat がサーバにあるとして	% mpirun ‒np 1 wc DIR/foo.dat	
wc: DIR/foo.dat: No such file or directory		
計算ノードには foo.dat というファイルが無くても	% catwalk -nh 1 -dir DIR mpirun -np 1 catwalk wc foo.dat		Catwalk を使うことで計算ノード上でサーバ上のファイ
ル DIR/foo.dat を読むことができる	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都15!

Catwalk Tutorial	Catwalk の使用例 - write	% catwalk –nh 2 mpirun –np 2 catwalk touch X!
% ls!
X@comp0 !
!X@comp1!
% catwalk –nh 2 mpirun –np 2 catwalk touch X!
% ls!
X@comp0 X@comp1 X@comp0#1 X@comp1#1!
% catwalk –nh 2 mpirun –np 2 catwalk touch X!
% ls!
X@comp0 X@comp1 X@comp0#1 X@comp1#1!
X@comp0#2 X@comp1#2!
%!
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

16!

Catwalk Tutorial	Catwalk の制限事項	
• Dynamic Link Program!
• サポートしている glibc 関数!
creat(2), open(2), fopen(3), stat(2), access(2), !
exec() 系列!

• サポートしているコンパイラ!
GNU（g77は除く），Intel，PGI 他!

• セキュリティな環境で使うことが前提!

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

17!

Catwalk Tutorial	

How to Use	
Catwalk-ROMIO	
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

18!

Catwalk Tutorial	Catwalk-ROMIO 基本操作	
% catwalk -mpi mpirun catwalk a.out!
!a.out で MPI_File_open( "catwalk:/xxx/yyy" ) とするとサーバ上の /xxx/yyy がアクセスされる!
% catwalk -mpi mpirun catwalk -dir ZZZ a.out!
!Catwalk-ROMIO の一時ファイルを計算ノードのディレク
トリ ZZZ に生成する!

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

19!

Catwalk Tutorial	Catwalk-ROMIO 応用編	• ssh-agent 風な使い方!
必ずセキュアな環境で使う事！!
% catwalk –mpi!
export XXX=YYY ...!
!メッセージが表示される!
% export XXX=YYY ... !それをコピペする!
% mpirun catwalk a.out!
!...!
% catwalk –kill!
!デーモンプロセスを kill!
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

20!

Catwalk Tutorial	Catwalk-ROMIO SSH (1)	server% catwalk –mpi –SSH comp32!
!Catwalk 環境と SSH port forwarding を設定し!
!comp32 に ssh でログイン!
comp32% mpirun catwalk a.out!
!server 上のファイルを MPI-IO でアクセス．!
!複数ホップも OK!
comp32% catwalk –SSH comp78!
comp78% mpirun catwalk a.out!
2010年2月19日

第９回 PCクラスタ ワークショップ@京都

21!

Catwalk Tutorial	Catwalk-ROMIO SSH (2)	server% catwalk –mpi bash!
!Catwalk 環境下の bash を生成!
!セキュアな環境でのみ使う事！!
server% catwalk –SSH comp345!
!Catwalk 環境を引き継いで comp345 へ!
comp345% mpirun catwalk a.out!
!SSH を経由して server のファイルを MPI-IO!

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

22!

Catwalk Tutorial	

共通オプション	• Catwalk 及び Catwalk-ROMIO 共通オプション!
ネットワークインターフェイスの指定!
!% catwalk -net <IF名> ....!
!IF 名は /sbin/ifconfig で表示されるネットワークイン
ターフェイスの名前．!
!例えば eth0, myri0, ib0, ...	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

23!

Catwalk Tutorial	Catwalk-ROMIO の制限	• Catwalk（非ROMIO）と同時に動かない!
• SCore 付属の MPICH でしか動かない!
• MPI-IO の atomic モードには対応していない	
• MPI-IO を使った１プロセス１ファイルのアクセス性能は低い!

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

24!Catwalk Tutorial	

性能比較	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都25!

Catwalk Tutorial	Catwalk vs. NFS (1)	• ひとつのファイルを各プロセスが 1/N 読む	
NFS				 Catwalk	
2x12x164x48x1

8x1616x42x12x164x48x1

8x1616x42x44x1

4x16

8x416x1

16x162x44x1

4x168x4

16x1

16x16

20
Aggregate Bandwidth [MB/sec]

Aggregate Bandwidth [MB/sec]

20
16128
400.8 110File Size [1000MB]

2010年2月19日

2016128400.8 11020File Size [1000MB]

第９回 PCクラスタ ワークショップ@京都26!

Catwalk Tutorial	Catwalk vs. NFS (2)	• 4x16 の各プロセスが 1GB のファイルを書込む際のサーバの負荷				Catwalk	

120

30
8 Minutes
Insensitive
Zone

2060

15

Load Average (Left Y-Axis)
time cat /proc/loadavg (Right Y-Axis)

200

1006001200

2010年2月19日

1800Time [Sec.]

2400

3000

53600

0

Load Average (1 Min.)

25

80

40

1.2

Load Average (Left Y-axis)"time cat /proc/loadavg" [Sec.]

Load Average (1 Min.)

100

3
2.5

120.8

1.50.6

Stage-OUT Phase

10.4

time cat /proc/loadavg (Right Y-Axis)
0.5
00.20600

1200

第９回 PCクラスタ ワークショップ@京都

18002400

3000

3600

"time cat /proc/loadavg" [Sec.]NFS	

0Time [Sec.]

27!

Catwalk Tutorial	Catwalk-ROMIO vs. PVFS2	
• Catwalk-ROMIO
サーバ１台
Ethernet (1 Gb/s)• PVFS2
サーバ４台
Myri10G (10 Gb/s)
nodes=16x16	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都28!

Catwalk Tutorial	BT-IO ベンチマーク	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

29!

Catwalk Tutorial	Catwalk-ROMIO and Lustre	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

30!

Catwalk Tutorial	

Q&A	

2010年2月19日

第９回 PCクラスタ ワークショップ@京都

31!