局所性を考慮した共有メモリ並列計算機上の並列 bibop アロケータ

23
局局局局局局局局局局局局局局局局局局局局局局 BIBOP 局局局局局 局局局局 Joint work with 局局局局局 , 局局 局局 (JSPP2001 局局局 )

Upload: lev

Post on 19-Mar-2016

68 views

Category:

Documents


6 download

DESCRIPTION

局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ. 遠藤敏夫 Joint work with 田浦健次朗, 米澤明憲 ( JSPP2001 投稿中). 並列プログラムのメモリ管理. 既存のアプローチ 逐次アロケータ + 排他制御 Libc malloc などをそのまま使うと遅すぎる 各システム独自のアロケータ Ex. Apache サーバ, Cilk, KLIC。 プログラマの負担大 汎用並列アロケータ (本研究のアプローチ) [ Larson ら98] [ Vee ら99] …スケーラビリティ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロ

ケータ

遠藤敏夫Joint work with 田浦健次朗 , 米澤明

憲(JSPP2001 投稿中 )

Page 2: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

並列プログラムのメモリ管理

既存のアプローチ 逐次アロケータ + 排他制御

Libc malloc などをそのまま使うと遅すぎる 各システム独自のアロケータ

Ex. Apache サーバ , Cilk, KLIC 。プログラマの負担大 汎用並列アロケータ ( 本研究のアプローチ )

[Larson ら 98] [Vee ら 99] … スケーラビリティ [Berger ら 00] … スケーラビリティ + 消費量DSM での局所性への言及はまだない

Page 3: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

分散共有メモリ (DSM) マシン

共有メモリマシンの一種Origin 2000 では、 リモート / ローカルメモリの

アクセスコスト差は 3 倍程度

各ページは最初にアクセスしたプロセッサにとってローカル

CPU CPU CPU

Mem Mem Mem

DSM(Origin など )

CPU CPU CPU

Mem Mem Mem

SMP(Enterprise など )

Page 4: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

並列アロケータが達成すべき目標

局所性  (Origin 2000 などの DSM) 背景 : ローカル / リモートメモリのアクセスコスト差 (3

倍 ) 確保者にとってローカルなメモリを使わせたい

メモリ消費量 アロケータによる消費量≧プログラムによる利用量 多すぎると他プログラムに悪影響

スケーラビリティ 背景 : プログラムによっては CPU あたり 100K malloc/s 確保処理が並列にできる必要

Page 5: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

3 条件を満たすためには

空き領域の管理方法に注目 空き領域をスレッド独立に管理すると

○ 局所性、スケーラビリティ× 消費量

空き領域をスレッド間共有すると× 局所性、スケーラビリティ○ 消費量

予告 : スレッド独立 +steal あり の方法を提案

Page 6: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

メモリ消費量 v.s. 局所性

局所性を最優先させると、メモリ消費量増大の可能性 (B) で、必ずローカルメモ

リを確保すると消費量 2m (B) で、消費量 m に抑える

とスレッド 2 は全てリモートメモリ最悪スレッド数倍の消費

t

u1thread 1

t

u2thread 2

(A)

m

m

t

u1thread 1

t

u2thread 2

(B)

m

m

Page 7: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

本研究の貢献

BIBOP(big bag of pages) 型アロケータの並列化方式 LPS(locality-aware page shared) の提案 / 実装 局所性 ⇔ 消費量間のトレードオフを自由に調整可

許容消費定数 k の導入 スケーラブル

48 プロセッサ (R10000 195MHz) で 18M malloc/s… 1 プロセッサ時 (750K malloc/s) の 24 倍

Page 8: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

発表の概要

BIBOP 素朴な並列化方式 提案方式 LPS メモリ消費量解析 ( 簡単に ) 性能評価 まとめ

Page 9: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

BIBOP アロケータの概要

広まっているアロケータの一つ ヒープは固定サイズページから成

り立つ ページは同サイズオブジェクトを

含む 空き領域は、

フリーオブジェクトリスト ( サイズ毎 ) フリーページリスト

で管理

freepage list

freeobj list

Page 10: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

素朴な並列化になっていない (1/3)

All shared(AS) 空き領域を全て共有

× 非スケーラブル○ 消費量最小× 局所性悪

AS は以降出てきません

All-shared(AS)

free obj list

free   page listOS

threads

Page 11: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

素朴な並列化 (2/3)

All local(AL) 空き領域をスレッド個別管理

○ スケーラブル× 消費量大

最悪、最小値のスレッド数倍

○ 局所性良必ずローカルメモリを確保

All-local(AL)

free obj list

free   page listOS

threads

Page 12: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

素朴な並列化 (3/3)

Page shared(PS) 空きオブジェクト : スレッド個

別 空きページ : 共有

○ スケーラブル○ 消費量小 ←以降の話の標準

× 局所性悪空きページを任意のスレッドが再利用

Page-shared(PS)

free obj list

free   page listOS

threads

Page 13: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

PS, AL 方式の性能 (1/2)

Malloc 回数のスループット計測 PS … 13.5M 回 /s( 逐次の 18.5 倍 ) AL … 21.2M 回 /s( 逐次の 28.5 倍 )

両者とも IRIX libc malloc よりはるかにスケーラブル

0510152025

0 20 40 60#threads

mega malloc ops/sec

PSALlibc

○←

 →

×

Origin 2000(blue1)並列木作成ベンチマーク•GC あり、同期•GC/free 時間省く

Page 14: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

PS, AL 方式の性能 (2/2)

AL はメモリ消費が激しい 最悪 PS の 12 倍

PS は局所性が悪い 空ページが別スレッドに再利用される率 = 約 0.9

00.20.40.60.81

0 2 4 6 8 10 12# allocator threads

remote ratio

PSAL

×← 

→○

×← 

→○

0

50

100

150

200

250

0 2 4 6 8 10 12# allocator threads

consum

ption

 (MB) Origin 2000(chorus)

擬似サーバベンチ•常に 12 スレッド•GC あり、非同期•使用量 : 約 20MB•横軸 :v= 同時にメモリ利用するスレッド数

Page 15: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

提案方式 LPS の外部仕様

Locality-aware page shared (LPS)○ スケーラブル○ 消費量 : PS の k 倍以下かつ、 AL 以下

○ 局所性 : 上の条件内で最大限に

ユーザは k( 許容消費倍率 , k 1)≧ によってトレードオフの調節可

Page 16: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

LPS の内部仕様 (1/2)

空き領域をスレッド独立 まず自リストを探索

→ 同スレッドによって再利用されやすい

その次は、 消費量を抑えたいとき、他リス

トを探索 局所性を上げたいとき、 OS か

ら確保

Locality-aware page-

shared(LPS)

free obj list

free   page listOS

threads

Page 17: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

LPS の内部仕様 (2/2)

a … アロケータによる消費ページ数

l … 前回の GC で生き残ったページ数

max l … これまでの l の最大値k … 許容消費倍率

空きオブジェクトリスト探索

成功

自分の空きページリスト探索

成功

a < k max l ?

他人の空きページリスト探索

成功No

OS から確保または GC

Yes

Page 18: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

LPS の消費量について

(1) k が小さいときは PS 並(2) k max l までは消費(3) 性質上 AL は超えない

以上より、どの k に対しても LPS 消費量は

PS 消費量の k 倍 (#) 以下 AL 消費量以下

消費

k

特定のプログラムに対する消費量

PS

AL

1

max l

LPS

(1)

(2)

(3)(#)

Page 19: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

LPS 方式の性能 (1/2)

LPS(k=1) のスケーラビリティは PS と AL の中間 17.8M 回 /s( 逐次の 24 倍 )

0510152025

0 20 40 60#threads

mega malloc ops/sec

PSALlibcLPS(1)

Page 20: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

LPS 方式の性能 (2/2)

消費量 : v 小 (左 ) でも PS のほぼ k 倍に抑えられている 局所性 : k 大になるにつれ、 remote 確保率小

k=1 は、 PS と変わらず→ バランスなプログラムでさえ、局所性を得るためには約 2 倍の

消費が必要

050100150200250

0 2 4 6 8 10 12# allocator threads

consumption (M

B) PSALLPS(1)LPS(2)LPS(3)LPS(4)

00.20.40.60.81

0 2 4 6 8 10 12# allocator threads

remote ratio

PSALLPS(1)LPS(1.5)LPS(2)LPS(3)LPS(4)LPS(8)

Page 21: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

まとめ

並列 BIBOP アロケータ方式 LPS を提案 ゴールは

スケーラビリティ メモリ消費量 局所性

ユーザは許容消費倍率の調節によって、トレードオフを自由に調節可

メモリ消費量解析、実験による性能評価

トレードオフ

Page 22: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

関連研究

ローカルヒープを用いたスケーラブルな並列アロケータ(G) は GC あり、 (E) は明示 free [市吉ら 94](G) … スレッドローカル GC 。 KLIC 言語と密着 [Larson ら 98](E) [Vee ら 99](E) … 共有ヒープへのアクセス頻度解析 [Berger ら 00](E) … BIBOP, メモリ消費量解析 [Boehm00](G) … BIBOP, 空きオブジェクトリストの一部のみ

スレッドローカルいずれも DSM の局所性には言及せず

Page 23: 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ

今後の予定

実用アプリでの実験 局所性の解析 GC スケジューリングとの関係の研究 許容消費倍率の自動選択 ?