SlideShare a Scribd company logo
1 of 49
Download to read offline
Scalable Cooperative File Caching
with RDMA-Based
Directory Management
RDMAベースのディレクトリ管理による
スケーラブルな協調ファイルキャッシング
新井 淳也
コンピュータ科学専攻 石川研究室
修士2年
1
公開にあたり
• 著作権上問題ないことを確認できていない
画像は灰色の枠に置き換えています
2
TiB~PiB単位のデータが
実験や観測で生成されている
3
HPCクラスタ上で大量データの
I/O を効率化したい
• 例えば回折像分類計算[Tokuhisa+ ‘12] の I/O
– 回折像:X線を用いて撮影した分子の像
– 理研(SACLA)と共同研究中の計算処理
4
京コンピュータ
で分類計算
似ている像の集合
大量の回折像
20~数百TiB
回折像分類計算の
アクセスパターンが持つ特徴
1. 読み出し偏重
– I/O のほとんどは読み出し
2. データ再利用
– あるプロセスが利用した回折像を別のプロセスも利用する
3. 低局所性
– 要求される回折像は連続せず、数が多い
4. アクセス集中
– 多数のプロセスがほぼ同時に同じ回折像を要求する
5
回折像分類計算の
I/O 効率化手法候補
• MapReduce [Dean+ ‘04]
• 分散共有メモリ
• 協調キャッシング [Dahlin+ ‘94]
6
分類計算には
不適
採用
MapReduce
× 計算パターンの不整合
× 「京」等ノードにストレージがない環境では効果薄
7
計算 計算 計算 計算
結果
データ
MapReduce で可能な計算 回折像分類計算
結果
計算 計算 計算 計算
計算 計算 計算 計算
徐々に増加
×数万回
・
・
・
データ
デ
ー
タ
・
・
・
・
・
・
・
・
・
・
・
・
分散共有メモリ
○ 他のノードが読んだデータを共有できる
– 低速な I/O の代わりに高速なノード間インタコネクトを活用
× 扱えるデータは全ノード合計メモリ容量まで
8
ノード ノード ノード ノード
データ データ データ データ
高速 高速 高速
ファイルシステム
低速
協調キャッシング
○ ファイルのキャッシュ
ブロックをノード間で共有
– ノード間インタコネクトの活用
– 仮想的なグローバルキャッシュ
を構成
– 巨大ファイルもキャッシュ可能
○ キャッシュに乗り切らなく
ても特別な処置は不要
9
ノード
キャッシュ
キャッシュ
ノード
キャッシュ
キャッシュ
ノード
キャッシュ
キャッシュ
ノード
キャッシュ
キャッシュ
回折像分類計算の
アクセスパターンが持つ特徴
1. 読み出し偏重
– I/O のほとんどは読み出し
2. データ再利用
– あるプロセスが利用した回折像を別のプロセスも
利用する
3. 低局所性
– 要求される回折像は連続せず、数が多い
4. アクセス集中
– 多数のプロセスがほぼ同時に同じ回折像を要求
する
10
こ
れ
が
問
題
既存手法における
アクセス集中時の問題
• 所在の問い合わせ • キャッシュブロック転送
11
ブロック
#3
ブロック ID のハッシュで
振り分けるため分散しない
メッセージポーリング
によるCPU時間消費も
既存手法における
アクセス集中時の問題
• 所在の問い合わせ • キャッシュブロック転送
12
ブロック
#3
ブロック ID のハッシュで
振り分けるため分散しない
メッセージポーリング
によるCPU時間消費も
RDMA
既存手法における
アクセス集中時の問題
• 所在の問い合わせ • キャッシュブロック転送
13
ブロック
#3
ブロック ID のハッシュで
振り分けるため分散しない
メッセージポーリング
によるCPU時間消費も
RDMA
RDMA
+
プロセス
分割
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エンジン
キャッシュ取得にかかる通信時間
(アクセス集中時)
• 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
(提案手法)
本研究の貢献
• 新しい協調キャッシング手法の提案
– 通信は RDMA のみ
• 不可分操作無しで動作
– プロセスをグループへ分割することによる通信分散
– 読み込み専用
• ライブラリ “Anco” としての提案手法の実装
• 「京」と東大の FX10 における性能評価
16
協調ファイルキャッシングライブラリ
Anco
• プログラムを再コンパイルせずに利用可能
– read システムコールをフック
17
計算ノード
プロセス
Anco
ローカルキャッシュ
OS
ファイルシステム
計算ノード
プロセス
Anco
ローカルキャッシュ
OS
計算ノード
プロセス
Anco
ローカルキャッシュ
OS
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
代表
ディレクトリ
代替
ディレクトリ
ローカル
キャッシュ
ディレクトリの分散
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
代表ディレクトリ
代表
ディレクトリ
代替
ディレクトリ
キャッシュブロック取得 (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 を要求
キャッシュブロック取得 (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
キャッシュブロック取得 (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
キャッシュブロック取得 (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
アクセス集中時のブロック取得
(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 を要求
アクセス集中時のブロック取得
(2/7)
• 全プロセスがブロック8の所在を確認
どこにもない
ファイルシステムから読む
25
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
RDMA
アクセス集中時のブロック取得
(3/7)
26
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
ファイルシステム
アクセス集中時のブロック取得
(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
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 読込中 読込中
(他グループの)
読込中プロセス
自グループ内の
読込中プロセス
書き換えない
取
得
時
の
状
態
ブ
ロ
ッ
ク
取
得
元
書
換
後
の
状
態
全体で最初 グループ内で最初 それ以外
アクセス集中時のブロック取得
(5/7)
29
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 8
Block
Rank 3
1
4
10
4
7
10
Block
Block
Rank 5
2
5
11
5
8
11
Block
Block
Group 1
ファイルシステム
• グループ 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
• グループ 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
評価
• 3種類のアクセスパターン
– 連続アクセス
• 回折像分類計算のアクセスパターン「アクセス集中」を反映
– ランダムアクセス
• 回折像分類計算のアクセスパターン「低局所性」を反映
– ストライドアクセス
• HPC アプリケーションでよくみられるアクセスパターン
• POSIX, MPI-IO(ストライドアクセスのみ)と比較
– POSIX:Anco でフックしない read システムコール
– MPI-IO:MPI-IO の collective I/O
32
実験条件
• 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
連続アクセス
• 全プロセスが同時に同じ
ファイルを先頭から読む
– 環境:「京」
– ファイルサイズ: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
ランダムアクセス
• 各プロセスがファイル
全体をランダムに読む
– 環境:FX10 128ノード
– 1MiB毎の読み込み
• 合計キャッシュサイズ
までは帯域幅を維持
できない
– 合計キャッシュサイズ
= 10GiB × 128 =
1280GiB
– 複数プロセスが重複した
キャッシュブロックを所有する
ことがあるため
35
0
50
100
総合帯域幅[GiB/秒]
ファイルサイズ [GiB]
Anco (1 group) POSIX
合計
キャッシュ
容量
ストライドアクセス
• ストライドアクセス:
間隔の空いた飛び飛び
の領域へのアクセス
– HPC アプリケーションに多い
• 多次元配列へのアクセス等
• IOR ベンチマークを
使用して計測
– IOR ブロックサイズに対する性能@FX10
– プロセス数に対する性能@京
– パラメータは明示されているもの以外規定値
36
Block
Block
Block
Rank 0
Rank 1
Rank 2
Block
Block
Block
Block
・・・・・・
File
Rank NProc
・・・
IOR ブロックサイズ
ストライドアクセス
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)
キャッシュ
ブロック
サイズ
ストライドアクセス
プロセス数に対する性能
• 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
関連研究
• スケーラブルな協調キャッシング
– クライアントがキャッシュブロックの所在情報を所有 [Sarkar ‘96]
• 大容量ファイルキャッシング
– ノード毎のローカルストレージにキャッシュする [安井 ’12]
– I/O デリゲートプロセスでキャッシュする [Nisar ‘12]
• 他ノードのメモリの利用(I/O無し)
– スワップ領域として利用 [Liang ‘05]
– 配列を複数ノードに跨って配置:Global Arrays [Nieplocha ‘06]
39
今後の課題
• 書き込みのサポート
– どうやってキャッシュのコヒーレンシを維持するか?
– 限定的なコヒーレンシなら RDMA のみでも提供可能
• 全プロセスがファイルを close すると書き込み内容が見える、など
 NFS で使用される close-to-open cache coherency の集団版
• RDMA・メッセージパッシング併用の検討
– RDMA のみの場合よりも通信回数を減少させられる
– アトミックな操作が可能になる
– メッセージ処理の負荷軽減が課題
• 既存手法との性能比較
40
まとめ
• RDMAのみによる協調キャッシング手法を提案
– アクセス集中時の性能低下が小さい
• RDMA の使用とプロセス分割の効果
– アトミック操作無しで動作
– 読込み専用
• ライブラリ “Anco” として提案手法を実装
– プログラムを再コンパイルせずに利用可能
• 様々な条件下で I/O 性能の向上が見られた
– プロセス毎のアクセス領域が重複していることが重要
41
参考文献
• [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
43
予備スライド
44
アクセス集中時のブロック取得
(8/7)
• 複数プロセスがファイルシステムから読んで
しまう可能性もある
– RDMA にアトミック操作がないため
• しかし実験によるとそれは極めて稀(0.02%)
– 「連続アクセス」実験2096プロセス時 1~64グループ平均
45
Singlet 保護
• Singlet [Dahlin+ ‘94]:グローバル
キャッシュにコピーが1つしかな
いキャッシュブロック
– Singlet を放棄すると次はキャッシュミ
スになる
• Singlet を長く保持するため、
2区間に分かれた LRU で
ローカルキャッシュを管理する
– 共通区間
– Singlet 区間
• 共通区間末尾に達した時点で singlet で
あるブロックのみ singlet 区間へ進む
46
Singlet
区
間
LRU
リスト
新しいキャッシュ
ブロック
共
通
区
間
非 singlet
なら放棄
放棄
代替ディレクトリ
• ブロック放棄時、代わりの
所在を発見するために使用
– 他にブロックのコピーが存在する
ならその所在で置き換える
• (ブロックID×ランク)所在
の対応を保持するハッシュ表
– ハッシュにしないと巨大になり過ぎる
– 全プロセスに分散して格納
• 今までのディレクトリは
「代表ディレクトリ」と呼び換え
47
プロセス
0
4
…
プロセス
1
5
…
ブロックIDの
ハッシュ
ランク 0 ランク 1
0 … …
1 … …
… … …
代替ディレクトリ
0
2
…
1
3
…
代表ディレクトリ
ブロックID 所在
0 (rank, addr)
1 (rank, addr)
… …
代表
ディレクトリ
代替
ディレクトリ
代表として1つ
の所在を登録
キャッシュブロックの転送
• キャッシュブロックにヘッダ情報を与える
– キャッシュブロックID : int
• 後に続くデータのキャッシュブロック ID
– 書換カウンタ : int
• 値が変わらない間は、キャッシュブロックが置かれている
メモリ領域内容が不変
• メモリ内容を変更したときにインクリメント
• 転送開始時にキャッシュブロックIDと
書換カウンタを読む
• 転送終了時に再度キャッシュブロックIDと
書換カウンタを読む
• 開始時と終了時にどちらかの値が
異なる場合は失敗
– 転送中に持ち主のノードがデータを書き換えてしまった
48
キャッシュ
データ
書換カウンタ
ID
ディレクトリのサイズ
• 代表ディレクトリのサイズ
– キャッシュ対象ファイルサイズ: 1PiB
– キャッシュブロックサイズ: 1MiB
– 40000ノード
– 200グループ
20.5 MiB/プロセス
• 代替ディレクトリのサイズ
– 上記パラメータ
– Load factor: 64
64MiB/プロセス
49

More Related Content

What's hot

NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてkawarasho
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価Satoshi Nagayasu
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクションAkio Mitobe
 
Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析shuichi iida
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話Tokoroten Nakayama
 

What's hot (9)

NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用について
 
遊休リソースを用いた 相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた 相同性検索処理の並列化とその評価
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクション
 
Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析
 
Cassandra Summit 2016 注目セッション報告
Cassandra Summit 2016 注目セッション報告Cassandra Summit 2016 注目セッション報告
Cassandra Summit 2016 注目セッション報告
 
RICC update meet34
RICC update meet34RICC update meet34
RICC update meet34
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
Mongodb 紹介
Mongodb 紹介Mongodb 紹介
Mongodb 紹介
 
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
 

Similar to Scalable Cooperative File Caching with RDMA-Based Directory Management

第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッションHiroki Kashiwazaki
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)Panda Yamaki
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaSjunichi anno
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史Insight Technology, Inc.
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)Insight Technology, Inc.
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)Masahiro Nagano
 
SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-Takeshi Yamamuro
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Wataru Fukatsu
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10Yoji Kiyota
 
Cloud os techday_0614
Cloud os techday_0614Cloud os techday_0614
Cloud os techday_0614Takano Masaru
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視npsg
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
公開ミラーサーバの運用
公開ミラーサーバの運用公開ミラーサーバの運用
公開ミラーサーバの運用yoppy3
 

Similar to Scalable Cooperative File Caching with RDMA-Based Directory Management (20)

Kernel ext4
Kernel ext4Kernel ext4
Kernel ext4
 
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
Hokkaido.cap#5 ケーススタディ(ネットワークの遅延と戦う:後編)
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
 
Osc2011 Do
Osc2011 DoOsc2011 Do
Osc2011 Do
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)
 
SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10
 
Cloud os techday_0614
Cloud os techday_0614Cloud os techday_0614
Cloud os techday_0614
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
公開ミラーサーバの運用
公開ミラーサーバの運用公開ミラーサーバの運用
公開ミラーサーバの運用
 

More from Junya Arai

YOU は何して VLDB2020 Tokyo へ? (グラフ編)
YOU は何して VLDB2020 Tokyo へ? (グラフ編)YOU は何して VLDB2020 Tokyo へ? (グラフ編)
YOU は何して VLDB2020 Tokyo へ? (グラフ編)Junya Arai
 
第3回システム系輪講会:IPDPS'17 の機械学習系論文
第3回システム系輪講会:IPDPS'17 の機械学習系論文第3回システム系輪講会:IPDPS'17 の機械学習系論文
第3回システム系輪講会:IPDPS'17 の機械学習系論文Junya Arai
 
IPDPS & HPDC 報告
IPDPS & HPDC 報告IPDPS & HPDC 報告
IPDPS & HPDC 報告Junya Arai
 
Rabbit Order: Just-in-time Reordering for Fast Graph Analysis
Rabbit Order: Just-in-time Reordering for Fast Graph AnalysisRabbit Order: Just-in-time Reordering for Fast Graph Analysis
Rabbit Order: Just-in-time Reordering for Fast Graph AnalysisJunya Arai
 
WWW2014 勉強会 新井担当分
WWW2014 勉強会 新井担当分WWW2014 勉強会 新井担当分
WWW2014 勉強会 新井担当分Junya Arai
 
ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分Junya Arai
 

More from Junya Arai (6)

YOU は何して VLDB2020 Tokyo へ? (グラフ編)
YOU は何して VLDB2020 Tokyo へ? (グラフ編)YOU は何して VLDB2020 Tokyo へ? (グラフ編)
YOU は何して VLDB2020 Tokyo へ? (グラフ編)
 
第3回システム系輪講会:IPDPS'17 の機械学習系論文
第3回システム系輪講会:IPDPS'17 の機械学習系論文第3回システム系輪講会:IPDPS'17 の機械学習系論文
第3回システム系輪講会:IPDPS'17 の機械学習系論文
 
IPDPS & HPDC 報告
IPDPS & HPDC 報告IPDPS & HPDC 報告
IPDPS & HPDC 報告
 
Rabbit Order: Just-in-time Reordering for Fast Graph Analysis
Rabbit Order: Just-in-time Reordering for Fast Graph AnalysisRabbit Order: Just-in-time Reordering for Fast Graph Analysis
Rabbit Order: Just-in-time Reordering for Fast Graph Analysis
 
WWW2014 勉強会 新井担当分
WWW2014 勉強会 新井担当分WWW2014 勉強会 新井担当分
WWW2014 勉強会 新井担当分
 
ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Scalable Cooperative File Caching with RDMA-Based Directory Management

  • 1. Scalable Cooperative File Caching with RDMA-Based Directory Management RDMAベースのディレクトリ管理による スケーラブルな協調ファイルキャッシング 新井 淳也 コンピュータ科学専攻 石川研究室 修士2年 1
  • 4. HPCクラスタ上で大量データの I/O を効率化したい • 例えば回折像分類計算[Tokuhisa+ ‘12] の I/O – 回折像:X線を用いて撮影した分子の像 – 理研(SACLA)と共同研究中の計算処理 4 京コンピュータ で分類計算 似ている像の集合 大量の回折像 20~数百TiB
  • 5. 回折像分類計算の アクセスパターンが持つ特徴 1. 読み出し偏重 – I/O のほとんどは読み出し 2. データ再利用 – あるプロセスが利用した回折像を別のプロセスも利用する 3. 低局所性 – 要求される回折像は連続せず、数が多い 4. アクセス集中 – 多数のプロセスがほぼ同時に同じ回折像を要求する 5
  • 6. 回折像分類計算の I/O 効率化手法候補 • MapReduce [Dean+ ‘04] • 分散共有メモリ • 協調キャッシング [Dahlin+ ‘94] 6 分類計算には 不適 採用
  • 7. MapReduce × 計算パターンの不整合 × 「京」等ノードにストレージがない環境では効果薄 7 計算 計算 計算 計算 結果 データ MapReduce で可能な計算 回折像分類計算 結果 計算 計算 計算 計算 計算 計算 計算 計算 徐々に増加 ×数万回 ・ ・ ・ データ デ ー タ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
  • 8. 分散共有メモリ ○ 他のノードが読んだデータを共有できる – 低速な I/O の代わりに高速なノード間インタコネクトを活用 × 扱えるデータは全ノード合計メモリ容量まで 8 ノード ノード ノード ノード データ データ データ データ 高速 高速 高速 ファイルシステム 低速
  • 9. 協調キャッシング ○ ファイルのキャッシュ ブロックをノード間で共有 – ノード間インタコネクトの活用 – 仮想的なグローバルキャッシュ を構成 – 巨大ファイルもキャッシュ可能 ○ キャッシュに乗り切らなく ても特別な処置は不要 9 ノード キャッシュ キャッシュ ノード キャッシュ キャッシュ ノード キャッシュ キャッシュ ノード キャッシュ キャッシュ
  • 10. 回折像分類計算の アクセスパターンが持つ特徴 1. 読み出し偏重 – I/O のほとんどは読み出し 2. データ再利用 – あるプロセスが利用した回折像を別のプロセスも 利用する 3. 低局所性 – 要求される回折像は連続せず、数が多い 4. アクセス集中 – 多数のプロセスがほぼ同時に同じ回折像を要求 する 10 こ れ が 問 題
  • 11. 既存手法における アクセス集中時の問題 • 所在の問い合わせ • キャッシュブロック転送 11 ブロック #3 ブロック ID のハッシュで 振り分けるため分散しない メッセージポーリング によるCPU時間消費も
  • 12. 既存手法における アクセス集中時の問題 • 所在の問い合わせ • キャッシュブロック転送 12 ブロック #3 ブロック ID のハッシュで 振り分けるため分散しない メッセージポーリング によるCPU時間消費も RDMA
  • 13. 既存手法における アクセス集中時の問題 • 所在の問い合わせ • キャッシュブロック転送 13 ブロック #3 ブロック ID のハッシュで 振り分けるため分散しない メッセージポーリング によるCPU時間消費も RDMA RDMA + プロセス 分割
  • 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 (提案手法)
  • 16. 本研究の貢献 • 新しい協調キャッシング手法の提案 – 通信は RDMA のみ • 不可分操作無しで動作 – プロセスをグループへ分割することによる通信分散 – 読み込み専用 • ライブラリ “Anco” としての提案手法の実装 • 「京」と東大の FX10 における性能評価 16
  • 17. 協調ファイルキャッシングライブラリ Anco • プログラムを再コンパイルせずに利用可能 – read システムコールをフック 17 計算ノード プロセス Anco ローカルキャッシュ OS ファイルシステム 計算ノード プロセス Anco ローカルキャッシュ OS 計算ノード プロセス Anco ローカルキャッシュ OS
  • 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 を要求
  • 25. アクセス集中時のブロック取得 (2/7) • 全プロセスがブロック8の所在を確認 どこにもない ファイルシステムから読む 25 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 RDMA
  • 26. アクセス集中時のブロック取得 (3/7) 26 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 ファイルシステム
  • 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 読込中 読込中 (他グループの) 読込中プロセス 自グループ内の 読込中プロセス 書き換えない 取 得 時 の 状 態 ブ ロ ッ ク 取 得 元 書 換 後 の 状 態 全体で最初 グループ内で最初 それ以外
  • 29. アクセス集中時のブロック取得 (5/7) 29 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 8 Block Rank 3 1 4 10 4 7 10 Block Block Rank 5 2 5 11 5 8 11 Block Block Group 1 ファイルシステム
  • 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
  • 41. まとめ • RDMAのみによる協調キャッシング手法を提案 – アクセス集中時の性能低下が小さい • RDMA の使用とプロセス分割の効果 – アトミック操作無しで動作 – 読込み専用 • ライブラリ “Anco” として提案手法を実装 – プログラムを再コンパイルせずに利用可能 • 様々な条件下で I/O 性能の向上が見られた – プロセス毎のアクセス領域が重複していることが重要 41
  • 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
  • 43. 43
  • 45. アクセス集中時のブロック取得 (8/7) • 複数プロセスがファイルシステムから読んで しまう可能性もある – RDMA にアトミック操作がないため • しかし実験によるとそれは極めて稀(0.02%) – 「連続アクセス」実験2096プロセス時 1~64グループ平均 45
  • 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
  • 49. ディレクトリのサイズ • 代表ディレクトリのサイズ – キャッシュ対象ファイルサイズ: 1PiB – キャッシュブロックサイズ: 1MiB – 40000ノード – 200グループ 20.5 MiB/プロセス • 代替ディレクトリのサイズ – 上記パラメータ – Load factor: 64 64MiB/プロセス 49