More Related Content Similar to Scalable Cooperative File Caching with RDMA-Based Directory Management Similar to Scalable Cooperative File Caching with RDMA-Based Directory Management (20) Scalable Cooperative File Caching with RDMA-Based Directory Management1. Scalable Cooperative File Caching
with RDMA-Based
Directory Management
RDMAベースのディレクトリ管理による
スケーラブルな協調ファイルキャッシング
新井 淳也
コンピュータ科学専攻 石川研究室
修士2年
1
14. Remote Direct Memory
Access (RDMA)
• 通信デバイス間で直接メモリを読み書きする方式
• メッセージパッシングと比較して…
1. 低遅延:CPU を介さず通信デバイスで処理するため高速
2. 低負荷:読み書きの被アクセス側プロセスが通信に関知しない
• 複数の RDMA エンジンを活用した効率化が可能
– 「京」なら1ノードあたり4つの RDMA エンジンがある
14
メモリ
データ
CPU
Read
Write
メモリ
データ
CPU
RDMAエンジン
RDMAエンジン
RDMAエンジン
RDMAエンジン
RDMAエンジン
RDMAエンジン
RDMAエンジン
RDMAエンジン
15. キャッシュ取得にかかる通信時間
(アクセス集中時)
• RDMA は高速
– アクセス集中にも強い
• 実験条件
– 京コンピュータ上
– 通信パターンのみ再現
• vs. N-Chance [Dahlin+ ‘94]
– 1ノード1プロセス
– 全プロセスが同時に同じファイル
の先頭100ブロック分(100MiB)
を読む
– N-Chance では1ノードをサーバ
として利用
15
0
250
500
4 16 64 256 1024 4096
時間[秒]
ノード数
メッセージパッシング
(N-Chance)
RDMA
(提案手法)
18. Anco 全体像
• プロセスをグループに分割
– Rank: プロセスの ID
• いわゆる MPI のランク
• 代表ディレクトリ・代替ディレクトリ:
– キャッシュブロックの所在を保存する
テーブル
– 代替ディレクトリはキャッシュブロック
放棄 (evict) 時に使用される
18
Group 0 Group 1
Rank 0
0
0
6
3
6
9
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
代表
ディレクトリ
代替
ディレクトリ
ローカル
キャッシュ
19. ディレクトリの分散
Block ID … …
0 … …
1 … …
2 … …
3 … …
… … …
19
Rank 0
0
0
6
3
6
9
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
代表ディレクトリ
代表
ディレクトリ
代替
ディレクトリ
20. キャッシュブロック取得 (1/4)
20
Group 0
Rank 0
0
0
6
3
6
9
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
ブロック 2 を要求
21. キャッシュブロック取得 (2/4)
• 代表ディレクトリにある ID 2 の行を読む
ランク3のアドレス1にブロックがあると分かる
• どこにも無い場合はファイルシステムから読む
21
Group 0
Rank 0
0
0
6
3
6
9
Block
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block 2
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
Block
ID
Group 0 Group 1
Rank Addr. Rank Addr.
2 ― ― 3 1
8 ― ― ― ―
RDMA
22. キャッシュブロック取得 (3/4)
• ランク3, アドレス1からブロック2をコピー
22
Group 0
Rank 0
0
0
6
3
6
9
Block
Block 2
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block 2
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
RDMA
23. キャッシュブロック取得 (4/4)
• 取得したブロックの所在を代表ディレクトリに書く
• グループ数が多いほど登録可能所在数が多い
– 通信が分散されスケーラビリティが高まる
– 行単位で読むのでグループが多すぎると転送データが増える
23
Group 0
Rank 0
0
0
6
3
6
9
Block
Block 2
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
プロセス
0
3
9
3
6
9
Block
Block
プロセス
1
4
10
4
7
10
Block
Block 2
プロセス
2
5
11
5
8
11
Block
Block
Group 1Block
ID
Group 0 Group 1
Rank Addr. Rank Addr.
2 0 1 3 1
8 ― ― ― ―
RDMA
24. アクセス集中時のブロック取得
(1/7)
• 全プロセスがブロック 8 を要求
24
Group 0
Rank 0
0
0
6
3
6
9
Block
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
ブロック 2 を要求ブロック 2 を要求ブロック 8 を要求ブロック 2 を要求ブロック 2 を要求ブロック 8 を要求
27. アクセス集中時のブロック取得
(4/7)
• 「読込中」状態の導入と階層的転送により
I/O 集中を避ける
– 「読込中」プロセスがあれば読込完了を待ちそこから読む
27
Group 0
Rank 0
0
0
6
3
6
9
Block
Block
Rank 2
1
1
7
4
7
10
Block
Block
Rank 4
2
2
8
5
8
11
Block
Rank 1
0
3
9
3
6
9
Block
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
Block
ID
Group 0 Group 1
Rank Addr. Rank Addr.
2 0 1 3 1
8 ― ― Rank1読込中
RDMA
28. プロセスが観測した
代表ディレクトリの状態と対応
28
ID Grp. 0 Grp. 1
2 ― 3, 1
8 ― ―
ファイルシステム
ID Grp. 0 Grp. 1
2 ― 3, 1
8 ― 読込中
ID Grp. 0 Grp. 1
2 ― 3, 1
8 ― 読込中
ID Grp. 0 Grp. 1
2 ― 3, 1
8 読込中 読込中
ID Grp. 0 Grp. 1
2 ― 3, 1
8 読込中 読込中
(他グループの)
読込中プロセス
自グループ内の
読込中プロセス
書き換えない
取
得
時
の
状
態
ブ
ロ
ッ
ク
取
得
元
書
換
後
の
状
態
全体で最初 グループ内で最初 それ以外
30. • グループ 1 内とグループ 0 の最もアクセスが
早かったプロセスへ転送
アクセス集中時のブロック取得
(6/7)
30
Group 0
Rank 0
0
0
6
3
6
9
Block
Block
Rank 2
1
1
7
4
7
10
Block
Block
Block 8
Rank 4
2
2
8
5
8
11
Block
Rank 1
0
3
9
3
6
9
Block
Block 8
Block
Rank 3
1
4
10
4
7
10
Block
Block
Block 8
Rank 5
2
5
11
5
8
11
Block
Block
Block 8
Group 1
RDMA
31. • グループ 0 内のプロセスに転送
アクセス集中時のブロック取得
(7/7)
31
Group 0
Rank 0
0
0
6
3
6
9
Block
Block
Block 8
Rank 2
1
1
7
4
7
10
Block
Block
Block 8
Rank 4
2
2
8
5
8
11
Block
Block 8
Rank 1
0
3
9
3
6
9
Block
Block 8
Block
Rank 3
1
4
10
4
7
10
Block
Block
Block 8
Rank 5
2
5
11
5
8
11
Block
Block
Block 8
Group 1
RDMA
32. 評価
• 3種類のアクセスパターン
– 連続アクセス
• 回折像分類計算のアクセスパターン「アクセス集中」を反映
– ランダムアクセス
• 回折像分類計算のアクセスパターン「低局所性」を反映
– ストライドアクセス
• HPC アプリケーションでよくみられるアクセスパターン
• POSIX, MPI-IO(ストライドアクセスのみ)と比較
– POSIX:Anco でフックしない read システムコール
– MPI-IO:MPI-IO の collective I/O
32
33. 実験条件
• Anco の設定
– キャッシュブロック:1MiB
– ローカルキャッシュ領域:
10GiB/プロセス
– ローカルキャッシュの半分
を singlet 領域とする
• 1ノードあたり1プロセス
• 環境
– 共通事項
• カーネル:Linux 2.6.25.8
• ファイルシステム:FEFS
– ほぼ Lustre と同じ
– 京
• 主記憶 16 GB/ノード
• 82,944 計算ノード
+ 5,184 IOノード
– FX10 スーパーコンピュー
タシステム@東大
• 主記憶 32 GB/ノード
• 4,800 計算ノード
+ 300 IOノード
※FX10 は「京」の商用版
33
34. 連続アクセス
• 全プロセスが同時に同じ
ファイルを先頭から読む
– 環境:「京」
– ファイルサイズ:4GB
• Anco は良いスケーラビ
リティを示している
– POSIX に比べ IO ノードへの
アクセスが減少するため
• グループ数が多いほど
スケーラビリティが高い
– ブロック取得元プロセスが
分散する
34
0
100
200
300
400
500
600
32
64
128
256
512
1024
2048
4096
8196
総合帯域幅[GiB/秒]
プロセス数
Anco (1 group) Anco (4 group)
Anco (16 group) Anco (64 group)
POSIX
35. ランダムアクセス
• 各プロセスがファイル
全体をランダムに読む
– 環境:FX10 128ノード
– 1MiB毎の読み込み
• 合計キャッシュサイズ
までは帯域幅を維持
できない
– 合計キャッシュサイズ
= 10GiB × 128 =
1280GiB
– 複数プロセスが重複した
キャッシュブロックを所有する
ことがあるため
35
0
50
100
総合帯域幅[GiB/秒]
ファイルサイズ [GiB]
Anco (1 group) POSIX
合計
キャッシュ
容量
36. ストライドアクセス
• ストライドアクセス:
間隔の空いた飛び飛び
の領域へのアクセス
– HPC アプリケーションに多い
• 多次元配列へのアクセス等
• IOR ベンチマークを
使用して計測
– IOR ブロックサイズに対する性能@FX10
– プロセス数に対する性能@京
– パラメータは明示されているもの以外規定値
36
Block
Block
Block
Rank 0
Rank 1
Rank 2
Block
Block
Block
Block
・・・・・・
File
Rank NProc
・・・
IOR ブロックサイズ
37. ストライドアクセス
IOR ブロックサイズに対する性能
• 小さい IOR ブロックサイズで効果大
• キャッシュブロックの倍数サイズ (1MiB~64MiB) ではプロセス間の
キャッシュ共有が起きず、効果も薄い
– この範囲の性能向上はローカルキャッシュへのヒットによる
37
0
50
100
1KiB
4KiB
16KiB
64KiB
256KiB
1MiB
4MiB
16MiB
64MiB
総合帯域幅[GiB/秒]
IOR ブロックサイズ
64プロセス ストライド
Anco (1 group)
MPI-IO
POSIX
0
1
2
3
4
5
相対総合帯域幅 IOR ブロックサイズ
左グラフの相対値 (POSIX=1)
キャッシュ
ブロック
サイズ
38. ストライドアクセス
プロセス数に対する性能
• 1点を除き Anco が POSIX より高い性能を示した
• グループ数による有意な性能差は読み取れない
– 1つのキャッシュブロックを共有するプロセス数は高々
(キャッシュブロックサイズ)÷(IORブロックサイズ)
38
0
500
1000
64 128 256 512 1024
総合帯域幅[GiB/秒]
プロセス数
IOR ブロックサイズ = 16KiB
0
1000
2000
64 128 256 512 1024
プロセス数
IOR ブロックサイズ = 256KiB
Anco (1 group)
Anco (4 group)
Anco (16 group)
MPI-IO
POSIX
39. 関連研究
• スケーラブルな協調キャッシング
– クライアントがキャッシュブロックの所在情報を所有 [Sarkar ‘96]
• 大容量ファイルキャッシング
– ノード毎のローカルストレージにキャッシュする [安井 ’12]
– I/O デリゲートプロセスでキャッシュする [Nisar ‘12]
• 他ノードのメモリの利用(I/O無し)
– スワップ領域として利用 [Liang ‘05]
– 配列を複数ノードに跨って配置:Global Arrays [Nieplocha ‘06]
39
40. 今後の課題
• 書き込みのサポート
– どうやってキャッシュのコヒーレンシを維持するか?
– 限定的なコヒーレンシなら RDMA のみでも提供可能
• 全プロセスがファイルを close すると書き込み内容が見える、など
NFS で使用される close-to-open cache coherency の集団版
• RDMA・メッセージパッシング併用の検討
– RDMA のみの場合よりも通信回数を減少させられる
– アトミックな操作が可能になる
– メッセージ処理の負荷軽減が課題
• 既存手法との性能比較
40
42. 参考文献
• [Tokuhisa ‘12] A. Tokuhisa et al., “Classifying and assembling two-dimensional X-ray laser diffraction
patterns of a single particle to reconstruct the three-dimensional diffraction intensity function: resolution
limit due to the quantum noise.” Acta crystallographica. Section A, Foundations of crystallography, May
2012.
• [Dahlin ‘94] M. D. Dahlin, R. Y. Wang, T. E. Anderson, and D. A. Patterson, “Cooperative caching: using
remote client memory to improve file system performance,” in Proceedings of the 1st USENIX
conference on Operating Systems Design and Implementation, 1994.
• [Sarkar ‘96] P. Sarkar and J. Hartman, “Efficient cooperative caching using hints,” in Proceedings of the
second USENIX symposium on Operating systems design and implementation, 1996, pp. 35–46.
• [安井 ‘12] 安井隆, 清水正明, 堀敦史, and 石川裕, “ローカルディスクを活用するユーザレベル並列ファイルキャッ
シュシステムの設計,” in 先進的計算基盤システムシンポジウム論文集, 2012, vol. 2012, pp. 100–107.
• [Nisar ‘12] A. Nisar, W. Liao, and A. Choudhary, “Delegation-Based I/O Mechanism for High Performance
Computing Systems,” IEEE Trans. Parallel Distrib. Syst., vol. 23, no. 2, pp. 271–279, 2012.
• [Liang ‘05] S. Liang, R. Noronha, and D. K. Panda, “Swapping to Remote Memory over InfiniBand: An
Approach using a High Performance Network Block Device,” in Cluster Computing, 2005. IEEE
International, 2005, pp. 1–10.
• [Nieplocha ‘06] J. Nieplocha, B. Palmer, V. Tipparaju, M. Krishnan, H. Trease, and E. Aprà, “Advances,
Applications and Performance of the Global Arrays Shared Memory Programming Toolkit,” Int. J. High
Perform. Comput. Appl., vol. 20, no. 2, pp. 203–231, 2006.
• [Lever ‘01] Chuck Lever, “Close-To-Open Cache Consistency in the Linux NFS Client,” 2001,
http://www.citi.umich.edu/projects/nfs-perf/results/cel/dnlc.html
42
46. Singlet 保護
• Singlet [Dahlin+ ‘94]:グローバル
キャッシュにコピーが1つしかな
いキャッシュブロック
– Singlet を放棄すると次はキャッシュミ
スになる
• Singlet を長く保持するため、
2区間に分かれた LRU で
ローカルキャッシュを管理する
– 共通区間
– Singlet 区間
• 共通区間末尾に達した時点で singlet で
あるブロックのみ singlet 区間へ進む
46
Singlet
区
間
LRU
リスト
新しいキャッシュ
ブロック
共
通
区
間
非 singlet
なら放棄
放棄
47. 代替ディレクトリ
• ブロック放棄時、代わりの
所在を発見するために使用
– 他にブロックのコピーが存在する
ならその所在で置き換える
• (ブロックID×ランク)所在
の対応を保持するハッシュ表
– ハッシュにしないと巨大になり過ぎる
– 全プロセスに分散して格納
• 今までのディレクトリは
「代表ディレクトリ」と呼び換え
47
プロセス
0
4
…
プロセス
1
5
…
ブロックIDの
ハッシュ
ランク 0 ランク 1
0 … …
1 … …
… … …
代替ディレクトリ
0
2
…
1
3
…
代表ディレクトリ
ブロックID 所在
0 (rank, addr)
1 (rank, addr)
… …
代表
ディレクトリ
代替
ディレクトリ
代表として1つ
の所在を登録
48. キャッシュブロックの転送
• キャッシュブロックにヘッダ情報を与える
– キャッシュブロックID : int
• 後に続くデータのキャッシュブロック ID
– 書換カウンタ : int
• 値が変わらない間は、キャッシュブロックが置かれている
メモリ領域内容が不変
• メモリ内容を変更したときにインクリメント
• 転送開始時にキャッシュブロックIDと
書換カウンタを読む
• 転送終了時に再度キャッシュブロックIDと
書換カウンタを読む
• 開始時と終了時にどちらかの値が
異なる場合は失敗
– 転送中に持ち主のノードがデータを書き換えてしまった
48
キャッシュ
データ
書換カウンタ
ID