Document

GXP・Phoenixによる
大規模並列情報処理
東京大学
田浦研究室 & 米澤研究室
(発表者:金田憲二)
発表の流れ



我々のプロジェクトの概要
GXP
Phoenix
我々のプロジェクトの概要
背景
PCの価格低下
 ネットワーク技術の進歩
 グリッド環境がより一般的に




高速ネットワークで結合された複数のクラスタ
学校や会社にある数百から数千台の遊休PC
…
プロジェクトの目標

グリッド上での効率的な並列処理の実現
プロジェクトの目標

グリッド上での効率的な並列処理の実現

複数のLANにまたがる
数百から数千の計算機



計算機が頻繁に故障
計算機が動的に増減
計算機間の通信が制限

ファイアウォール、NAT
プロジェクトの目標

グリッド上での効率的な並列処理の実現


高性能
簡便
プロジェクトの目標

グリッド上での効率的な並列処理の実現




科学技術計算
並列トランザクション処理
P2Pシステム
…
設計・実装したシステム

GXP:遠隔ジョブ投入ツール



並列処理を簡便に記述・実行できる
計算機の日常的な管理・運用にも利用できる
Phoenix:並列プログラミングライブラリ

動的に増減する計算機を効率的に扱える
GXP
GXPとは

遠隔ジョブ投入ツール

並列トランザクション処理なども簡便に実行可能
request0
request1
request2
request3
…
実行したい処理のリスト
データベース
利用実績

自然言語処理



1000CPU日程度のタスクを
350CPUを利用して処理
神経系のモデリング&シミュレーション
プログラミングコンテスト

9つのLANにまたがる1000CPUを利用
GXPの提供する機能



並列コマンド実行
ネットワークパイプ
半自動インストール
並列コマンド実行

複数の計算機上でコマンドを並列に実行
> hostname
host0
host1
host2
ローカルマシン
host0
host1
host2
並列コマンド実行

通信制限下でもジョブ投入可能
NAT
インターネット
ローカルマシン
NAT
ネットワークパイプ

cmd1 {{ cmd2 }} cmd3
ローカルマシン
cmd1
cmd3
cmd2
cmd2
cmd2
ネットワークパイプの使用例

典型的な並列処理


問題をばらまく {{ 計算 }} 答えを集計
ファイル転送

cat X {{ cat > Y }}
半自動インストール

最初にログインした計算機のみに
GXPをインストールすれば良い

残りの計算機には自動的にインストールされる
煩雑なインストール・設定作業から
ユーザを解放
まとめ

GXP



並列コマンド実行
ネットワークパイプ
半自動インストール
 並列処理から計算機管理まで
様々な用途に応用可能
Phoenix
Phoenixとは

メッセージパッシングライブラリ


動的に増減する計算機を効率的に扱える
通信制限下でも動作できる
Phoenixの利用例

学校や会社の遊休PCを利用した並列処理


LU分解、流体シミュレーション、…
P2Pシステムの記述

分散ファイル共有システム、…
既存のメッセージパッシング
ライブラリ
例)MPI


各マシンにノードIDを付与
ノードIDでメッセージの送信先を指定
x
send x to 2
ノードID
0
1
recv
2
3
計算機の増減の扱い

問題

今現在どの計算機が計算に参加しているの
かを、ユーザが把握し続ける必要がある
例)不在マシン宛にメッセージを送信しないようにす
る必要がある

解決策

特殊なプログラミングモデルを提供することに
よって、計算機の増減をユーザから隠蔽
Phoenixの提供する
プログラミングモデル


動的にノードIDの割り当てを変更可能
ノードIDの集合を各計算機に割り当て可能

ノードID
ノードID数 > 実マシン数でも構わない
0
1
2
3
プログラミング例 (1/3)


行列の要素とノードIDとを対応付ける
行列データとノードIDとを分割して割り当てる
行列
0
256
512
ノードID空間
768
1024
プログラミング例 (2/3)
行列の600番目の要素に
x を代入したい
ノードID600番宛に x を送信
0
768
256
256
512
512
768
1024
プログラミング例 (3/3)

0
ノードIDの割り当てを計算機の増減に応じて
動的に変更
768
256
256
512
512
768
996
1024
まとめ

Phoenix

動的な計算機の増減を扱うのに適した
メッセージパッシングライブラリ
発表全体のまとめ

大規模並列処理の実現を目指して


GXP
Phoenix
という二つのシステムを開発した
終

もし実務に応用可能でしたら、
是非よろしくお願いいたします
補足情報
プロジェクトメンバー






田浦 健次朗(助教授)
遠藤 敏夫(助手)
横山 大介(助手)
金田 憲二(D3)
鴨志田 良和(D1)
堀田 勇樹(M2)



斉藤 秀雄(M2)
小林 弘勝(M1)
高橋 慧(M1)
プロジェクトのWebページ
http://www.logos.ic.i.u-tokyo.ac.jp/phoenix/
からソフトウェアや論文を取得可能
GXPの実装

Sshのセッションの「木」を構築する

直接ログインできないホストにも、複数段のロ
グインで到達
Phoenixが提供するAPI

メッセージの送信・受信



ph_send(id, msg)
ph_recv()
ノードIDの割り当て・解放


ph_assume(ids)
ph_release(ids)
Phoenixの実装

ノードIDと計算機の対応を動的に計算
中央集権的な管理を必要とせずに
C.f.) ルーティング

Phoenixの性能評価
計算機
追加中
計算機が増減する環境下での
並列レイトレーシング
相対性能
(基準:1CPU時のスループット)

計算機
削除中
80
70
60
50
A
40
30
20
実測値
10
理想値
0
0
50
100
150
経過時間(秒)
200
250
背景

クラスタの目覚ましい普及

並列計算を専門としない一般の人も利用
 非専門家でもクラスタを簡便に利用でき
る ようにすることが重要
目標

Single System Image (SSI)の実現



大域プロセス空間・ファイル空間
並列プログラミング環境
…
SSIを実現するための既存の手
段

分散OS
例)Mosix [A. Barak et al. ’98]

クラスタミドルウェア
例)Score [Y. Ishikawa et al. ’99]
既存システムが抱える問題

利便性の悪さ


インターフェースに習熟するのに手間がかかる
インストールに管理者権限を必要とする
問題解決へのアプローチ

仮想マシンモニタに関する技術を応用する

仮想マシンモニタ = 実マシンと同等の処理が
可能な仮想マシンをソフトウェアでエミュレー
ション
提案システム
~Virtual Multiprocessor ~

複数の分散した計算機上に
SMPを仮想的に構築する仮想マシンモニタ
N台のシングルプロセッサマシン
仮想化
Nプロセッサからなる仮想SMP
利点 (1/2)

共有メモリを仮定した既存のプログラムが
そのまま分散環境上で動く

OS


(タスクが粗粒度な)並列プログラム



Linuxがあたかも分散OSかのように動作
…
スクリプト言語でバッチジョブ投入
makeコマンドでワークフローの記述・実行
利点 (2/2)

仮想マシンなので



チェックポイント・リカバリーが可能
各ユーザが自由に環境をカスタマイズ可能
…
残りの発表の流れ




設計
実装
予備実験
関連研究・まとめと今後の課題
設計
システムの構成

複数のモニタプロセスからなる

基本的には、実プロセッサ一つにつき
モニタプロセスが一つ
モニタプロセス
プロセッサ
メモリ
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
構築される仮想SMP
プロセッサ
プロセッサ
仮想SMP
メモリ
モニタプロセス
プロセッサ
メモリ
ディスク
モニタプロセス
プロセッサ
ディスク
実マシン
メモリ
ディスク
実マシン
対象とするハードウェア・OS

仮想マシン・実マシン共に


プロセッサはIA-32を対象
OSはLinuxを対象
※仮想化を効率良く実現するために、ゲスト
OSの一部を改変する
C.f.) LilyVM [H. Eiraku et al. ’03]
実装
ハードウェアの仮想化の仕組み

基本的にはLilyVM [H. Eiraku et al. ’03]と同様
ゲストOSをNative実行
VMプロセス
実行を捕捉
実行を再開
モニタプロセス
命令などの実行を
エミュレーション
ハードウェアの仮想化の例
…
lgdtl 0xa01002c2
…
シグナル発生
特権命令の実行
(GDTRレジスタ
への書き込み)
シグナル
を捕捉
VMプロセス
仮想マシンの
実行を再開
モニタプロセス
メモリ上に格納している仮想マシンの
GDTRレジスタの値を更新
仮想化を必要とするハードウェ
ア

プロセッサ


メモリ


特権命令、…
ページング機構、メモリ一貫性制御、…
I/Oデバイス

ハードディスク、ネットワークデバイス、…
メモリの一貫性制御とは

あるプロセスが行った書き込み結果を
リモートプロセスに反映させること

IA-32メモリモデルを満たすように
IA-32のメモリモデル

以下の制約を満たすように書き込みを反
映



Processor consistency
Write atomicity
同期命令を提供

一時的にメモリ一貫性を強める命令
Processor Consistency (1/2)

あるプロセッサが行った書き込みは,
同一プロセッサには,すぐに反映される
 異なるプロセッサには,遅れて反映されうる
PU1
PU2
write X to p

=
X
=
read from p
read from p
=
?
read from p
X
Processor Consistency (2/2)

あるプロセッサが行った書き込みは,
同じ順序でリモートプロセッサに反映され
る PU1
PU2
PU3
write X to p
write Y to q
write Z to r
Write Atomicity

書き込みはリモートプロセッサにatomicに
反映される
PU1
write X to p
(アドレスpに対する)
読み書きは,この間に
発生しない
PU2
PU3
同期命令

一時的にメモリ一貫性を強める
例) mfence命令

書き込みがリモートプロセッサに反映されたことを
保障
PU1
write X to p
write Y to q
mfence
PU2
PU3
Processor Consistencyを保障する
一貫性制御アルゴリズム

mfence命令実行時に,書き込み結果を
他の全てのマシンに反映させる
PU1
Write X to p
PU2
Write Y to q
Write Z to r
mfence
p, q, rへの書き込み
結果を送信
書き込み結果を
反映
一貫性制御アルゴリズムの概要
(1/3)
1. 全てのページを書き込み禁止にする
PC1
Memory
Write X to p
Write Y to q
Write Z to r
mfence
PC2
Memory
…
一貫性制御アルゴリズムの概要
(2/3)
2. ページに対して書き込みがあると

そのページのコピー(= twin)を作成する

そのページへの書き込みを許可する
PC1
PC2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
一貫性制御アルゴリズムの概要
(3/3)
3. mfence命令を実行する時に,
 twinと現在のメモリを比較してdiffを作成する
 diffをリモートマシンに送信する
PC1
PC2
Twins
Memory
Memory
Write X to p
Write Y to q
Write Z to r
mfence
p
X
q
Y
r
Z
予備実験
予備実験

以下を測定



シングルプロセッサにおける仮想化のオーバヘッド
デュアルプロセッサにおける並列プログラムの性能
ただし


バグも多く動作が不安定
メモリ一貫性制御も一部Naïveに実装
シングルプロセッサにおける
仮想化のオーバヘッド

getpid() を1000回呼び出すプログラムを実行
実行時間(単位:
秒)
仮想マシン 0.54

0.00098
実マシン
既存の最適化手法の適応が必須
例)“Operating System Support for Virtual Machines”


Samuel T. King, George W. Dunlap, Peter M. Chen
USENIX’03
デュアルプロセッサにおける
並列プログラムの性能

フィボナッチ数を計算するプログラムを2つ
並列に実行
実行時間(単位:秒)
仮想マシン
0.63
実マシン
0.00027
関連研究・
まとめと今後の課題
関連研究

分散環境上にマルチプロセッサマシンを
仮想的に構築する仮想マシンモニタ


vNUMA [M. Chapman’05]
Virtual IronTM [http://www.virtualiron.com]
メモリ一貫性制御が
sequential consistency
詳細は未公開
まとめ

Virtual Multiprocessor


分散環境上にSMPを仮想的に構築する
仮想マシンモニタ
Single System Imageを実現
今後の課題



性能向上
耐故障性
より柔軟な資源の仮想化

資源割り当ての動的変更
終