Download - 局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロケータ
局所性を考慮した共有メモリ並列計算機上の並列 BIBOP アロ
ケータ
遠藤敏夫Joint work with 田浦健次朗 , 米澤明
憲(JSPP2001 投稿中 )
並列プログラムのメモリ管理
既存のアプローチ 逐次アロケータ + 排他制御
Libc malloc などをそのまま使うと遅すぎる 各システム独自のアロケータ
Ex. Apache サーバ , Cilk, KLIC 。プログラマの負担大 汎用並列アロケータ ( 本研究のアプローチ )
[Larson ら 98] [Vee ら 99] … スケーラビリティ [Berger ら 00] … スケーラビリティ + 消費量DSM での局所性への言及はまだない
分散共有メモリ (DSM) マシン
共有メモリマシンの一種Origin 2000 では、 リモート / ローカルメモリの
アクセスコスト差は 3 倍程度
各ページは最初にアクセスしたプロセッサにとってローカル
CPU CPU CPU
Mem Mem Mem
DSM(Origin など )
CPU CPU CPU
Mem Mem Mem
SMP(Enterprise など )
並列アロケータが達成すべき目標
局所性 (Origin 2000 などの DSM) 背景 : ローカル / リモートメモリのアクセスコスト差 (3
倍 ) 確保者にとってローカルなメモリを使わせたい
メモリ消費量 アロケータによる消費量≧プログラムによる利用量 多すぎると他プログラムに悪影響
スケーラビリティ 背景 : プログラムによっては CPU あたり 100K malloc/s 確保処理が並列にできる必要
3 条件を満たすためには
空き領域の管理方法に注目 空き領域をスレッド独立に管理すると
○ 局所性、スケーラビリティ× 消費量
空き領域をスレッド間共有すると× 局所性、スケーラビリティ○ 消費量
予告 : スレッド独立 +steal あり の方法を提案
メモリ消費量 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
本研究の貢献
BIBOP(big bag of pages) 型アロケータの並列化方式 LPS(locality-aware page shared) の提案 / 実装 局所性 ⇔ 消費量間のトレードオフを自由に調整可
許容消費定数 k の導入 スケーラブル
48 プロセッサ (R10000 195MHz) で 18M malloc/s… 1 プロセッサ時 (750K malloc/s) の 24 倍
発表の概要
BIBOP 素朴な並列化方式 提案方式 LPS メモリ消費量解析 ( 簡単に ) 性能評価 まとめ
BIBOP アロケータの概要
広まっているアロケータの一つ ヒープは固定サイズページから成
り立つ ページは同サイズオブジェクトを
含む 空き領域は、
フリーオブジェクトリスト ( サイズ毎 ) フリーページリスト
で管理
freepage list
freeobj list
素朴な並列化になっていない (1/3)
All shared(AS) 空き領域を全て共有
× 非スケーラブル○ 消費量最小× 局所性悪
AS は以降出てきません
All-shared(AS)
free obj list
free page listOS
threads
素朴な並列化 (2/3)
All local(AL) 空き領域をスレッド個別管理
○ スケーラブル× 消費量大
最悪、最小値のスレッド数倍
○ 局所性良必ずローカルメモリを確保
All-local(AL)
free obj list
free page listOS
threads
素朴な並列化 (3/3)
Page shared(PS) 空きオブジェクト : スレッド個
別 空きページ : 共有
○ スケーラブル○ 消費量小 ←以降の話の標準
× 局所性悪空きページを任意のスレッドが再利用
Page-shared(PS)
free obj list
free page listOS
threads
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 時間省く
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= 同時にメモリ利用するスレッド数
提案方式 LPS の外部仕様
Locality-aware page shared (LPS)○ スケーラブル○ 消費量 : PS の k 倍以下かつ、 AL 以下
○ 局所性 : 上の条件内で最大限に
ユーザは k( 許容消費倍率 , k 1)≧ によってトレードオフの調節可
LPS の内部仕様 (1/2)
空き領域をスレッド独立 まず自リストを探索
→ 同スレッドによって再利用されやすい
その次は、 消費量を抑えたいとき、他リス
トを探索 局所性を上げたいとき、 OS か
ら確保
Locality-aware page-
shared(LPS)
free obj list
free page listOS
threads
LPS の内部仕様 (2/2)
a … アロケータによる消費ページ数
l … 前回の GC で生き残ったページ数
max l … これまでの l の最大値k … 許容消費倍率
空きオブジェクトリスト探索
成功
自分の空きページリスト探索
成功
a < k max l ?
他人の空きページリスト探索
成功No
OS から確保または GC
Yes
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)(#)
LPS 方式の性能 (1/2)
LPS(k=1) のスケーラビリティは PS と AL の中間 17.8M 回 /s( 逐次の 24 倍 )
0510152025
0 20 40 60#threads
mega malloc ops/sec
PSALlibcLPS(1)
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)
まとめ
並列 BIBOP アロケータ方式 LPS を提案 ゴールは
スケーラビリティ メモリ消費量 局所性
ユーザは許容消費倍率の調節によって、トレードオフを自由に調節可
メモリ消費量解析、実験による性能評価
トレードオフ
関連研究
ローカルヒープを用いたスケーラブルな並列アロケータ(G) は GC あり、 (E) は明示 free [市吉ら 94](G) … スレッドローカル GC 。 KLIC 言語と密着 [Larson ら 98](E) [Vee ら 99](E) … 共有ヒープへのアクセス頻度解析 [Berger ら 00](E) … BIBOP, メモリ消費量解析 [Boehm00](G) … BIBOP, 空きオブジェクトリストの一部のみ
スレッドローカルいずれも DSM の局所性には言及せず
今後の予定
実用アプリでの実験 局所性の解析 GC スケジューリングとの関係の研究 許容消費倍率の自動選択 ?