Cerium による並列処理向け I/O の設計と実装

琉球大学大学院 古波倉 正隆,河野 真治

I/Oを含むアプリケーションの並列化

I/O を含む Task は ディスクかの読み込む時間がかかる。
-> I/O をどうにか速くできないか?

Cerium :
CellおよびLinux、 Mac OS X 上で動く並列プログラミングフレームワーク

mmap 実装と比較して1.5倍の速度を得た

Cerium Task Manager の構造

  1. Taskを生成
  2. 依存関係のチェック
  3. Schedulerに転送
  4. 並列実行

ファイルを読みながら、Word Count や grep などを
並列実行したい

計算よりも読み込みを優先しなければならない。読み込みで待ちが入ってしまうので、IO Thread を追加

Block 単位の読み込みと並列計算


  1. ファイルをある一定の大きさで読み込む
  2. 読み込んだテキストファイルに対して、それぞれ計算を行う
  3. 計算した結果を集計する

mmap の特徴

従来では mmap を使って読み込んでいた
  • mmap は、ファイルを直接メモリ空間に map する。
    アクセスされたメモリ部分を OS が自動的に読み込む。
  • code がシンプルだが、読み込み終わるまで待たされる。

読み込みながら計算を行う



Blocked Read の実装



I/O 専用 thread での Blocked Read の実装


I/O 専用の thread を使用しない場合


実験環境


read mode CPU num ave time(s)
mmap 2 106.2
mmap 12 154.6
一括Read 12 114.9
Blocked Read(SPE_ANY) 12 106.0
Blocked Read(IO_0) (IO) 1 + (Task) 11 99.2

まとめ

今後の課題