My Reserches
INDEX †
Introduction and I/O Software Stacks †
I/Oシステムで必要なもの †
- データのマッピングとストレージの抽象化
- 複数プロセスからのアクセス管理
- 複数のI/Oデバイスを単一のI/Oスペースとして抽象化
パラレルI/Oで必要なもの †
- パラレルI/Oのためのソフトウェア
- 複数のI/Oデバイスを単一のI/Oスペースとして抽象化
- ストライピング
- ネットワークリンクのleverage
- 単純なバイトストリームファイルモデル
- バイト単位でファイルの処理は困難。
- 他のソフトウェアによる抽象化が必要
I/O for Computational Science †
Parallel file system(PFS)レイヤ †
- 論理空間の管理、ストライピングなどのデータへの効率的なアクセスの提供
- ミドルウェアに効率的なインタフェースの提供
- 例)PVFS, GPFS, Lustre
Middleware layerレイヤ †
- 複数プロセスからのアクセスを管理
- ミドルウェアの命令とPFSの命令の効率的なマッピング
- スケーラブルなファイル名の名前解決
- 例) MPI-IO, UPC-IO
High level I/O libraryレイヤ †
- domainとマッチしたファイルフォーマットの抽象化
- ミドルウェアのためのインタフェース
- ミドルウィアレイヤでできない最適化
- 変数の属性のキャッシング
- データセットのChunking
- 例) HDF5, Parallel netCDF
Parallel File System †
- ストライピングを行う
- concurrent I/O operationだけでなく、serialなoperationでもパフォーマンス向上
- アクセス管理(同期)
- coherenceのためには、これによるボトルネックはやむを得ない
- ほとんどのファイルシステムではsequential consistencyを用いているらしい。
Parallel Fle System Architectures †
Shared Storage Architectures †
- 物理/仮想ディスクブロックへ直接アクセスできる
- クライアントはブロック単位で処理
Parallel File/Object Server Architectures †
- ファイルデータを複数のサーバへ分散
- クライアントはファイル単位で処理
- それぞれのサーバ(IOS)は自分のストレージ上のデータの構造を把握している
- ロックの管理はたいてい他のサーバが行う
Block-Oriented VS Region-Oriented Access Mechanisms †
クライアントのデータをサーバ上のディスクへ保存する場合、2つのアプローチが存在
Block-Oriented Access †
- ネットワークを介してread-modify-writeをする必要がある
Region-Oriented Access:こちらのほうが柔軟でオーバヘッドが小さい †
- read-modify-writeのような処理はサーバー側で処理される
Example Parallel File Systems †
- 共通点(PVFS, GPFS, Lustre)
- High performance & Scalabilityを実現する設計
- グローバルネームスペースの提供
- 耐障害性
- 数GB/sec
- クラスターやクラスターをまたいだ環境で使用
PVFS(Parallel Virtual File System) †
概要 †
- File-based storage model
- ファイルを分割し分散して保存
- byte-rangeで同期
- Single server type also stores metadata
- Servers assigned roles: metadata, data, or both
PVFS Architecture †
- TCP/IP, InfiniBand?, Myrinet上で動作
- サーバーはローカルのファイルシステム上でデータを保存
- カーネル空間とユーザ空間をMix
ストレージ管理 †
- ストレージはdataspaceと呼ばれるエンティティを持つ
- Handle: ファイルシステム上のユニークな参照
- byte granulatirtyでアクセス
- keyword/value pair space
ファイルとディレクトリ †
- ディレクトリはMetafileへのHandleをもつ
- Metafileは以下をもつ
- Permission,ownerr,extended attributes
- データを持つDataspaces(Datafiles)への参照
- Distribution Functionのためのパラメータ
- Datafileは実際のデータを持つ(たいていは、サーバー上で分散している)
- DestributionfunctionはDatafileと論理ファイルのマッピングを決定
Consistency †
- writesとreadはアトミックには行わず他のソフトウェアに管理をゆだねる
- Metadataに対する操作はアトミックに行う。
File Creation †
- File Writeにおける同期は別のレイヤのソフトウェアに任せる
- クライアント側でメタデータのキャッシュする
GPFS(IMB's General Paralles File System) †
概要 †
- Tiger Shark multimedia file systemから発展
- ブロック単位で行う
- Asymmetricな実装
- Symmetric: 全てのノードが同一のタスクを行う
- Asymmetric: 役割を分担
Architecture †
- VSD(Virtual Shard Disk)やNetwork Shared Disk(NSD)によりサーバへのアクセスが可能
- RAIDはリンクの冗長性により障害を隠蔽
ストレージ管理 †
- RAIDにより並列アクセス
- それぞれのRAID loopは二つのI/Oサーバーからアクセス可能
Consistency †
- ファイルシステムへPOSIX1インタフェースを提供
- 分散byte-rangeロックがデータのコンシステンシーを提供
- トークンはToken Managerによって管理
- node1:0...EOF→node2:1024-2048のロックをリクエスト→node1:1024-EOFを解放
- メタデータの一貫性はディレクトリレベルで行う
Client Caching †
- Page Poolがクライアント側のキャッシュを助ける
- データをスイッチを介して転送しないのでパフォーマンスの向上
Lustre †
概要 †
- Linuxクラスタ上で動作
- オブジェクト指向パラレルファイルシステム
- データストレージはオブジェクトで構成
- このオブジェクトはバイトストリームとしてアクセスや操作が可能
Lustre Architecture †
- OSDと共有ストレージが結びつきOSDのFail Overが可能
- 既存のネットワークを使用
- Fail Overのために二つ目のMDSが存在する。
オブジェクト指向パラレルファイルシステム †
- I/Oとメタデータ操作の分離
- I/Oをネットワーク上のOSDに任せる
- Low-level allocationや同期は保存されるデバイスによって処理される
- 高い並列性を提供
- OSから独立したパラレルファイルシステム
メタデータ †
- 単一のMDSがメタデータを管理
- MDSがネームスペースを管理
- name, owner, permission. locks, OSD上のlocation
- Fileのメタデータ(attributes, status)とデータ(content)は独立に保存/
操作される
- MDSはメタデータをクライアントへ提供するだけで、その他の処理をOSDに任せる
ストレージ管理 †
- MDSがファイルの場所を教える
- データはOSDを介してストライピングされる
- デフォルト: 4-way
- 自分の環境に合わせて手動で設定する必要あり
Consistencyとロック †
- データやメタデータのロック
- OSD: オブジェクト(ファイル)のロックを管理
- MDS: メタデータのロックを管理
- intent-basedロックを使用
- byte-rangeロックを提供
POSIX I/O Interface †
概要 †
- OSとのインタフェースを提供
- アプリケーションがOSの基本的なサービスを容易に利用できるようにするためのもの
- 集団I/Oのための機能はない
- クラスタ共有ファイルのためのPOSIXの保障はvery expensive
Reading, Writing †
Cライブラリ fcntl.h unistd.h
- open(file, status)
- read(fd, buf, num)
- write(fd, buf, num)
- close(fd)
IOR Access Patterns for Shard Files †
IOR POSIX Segmented Results †
結論 †
- 基本的なI/Oでは有用
- しかしパラレルI/Oでは力不足
- パフォーマンスを上げるなら、並列アプリケーションで使用すべきではない
最新の20件
2007-04-28
2007-11-30
2007-12-02
2007-10-21
2007-12-03
2007-11-30
2008-02-29
2008-05-11
2008-03-09
2008-02-29
2008-01-21
2007-10-20
2008-05-17
2007-10-03
2007-06-26
2008-05-18
2007-10-26
2007-12-02
2008-05-17
今日の2件
- counter: 118
- today: 1
- yesterday: 0
- online: 1