先進的計算基盤システムシンポジウム sacsis2009 slide suzaki
DESCRIPTION
LoopBack Content Addressable Storage による仮想ディスクの性能評価 @ SACSIS 先進的計算基盤システムシンポジウム2009 広島 http://www.hpcc.jp/sacsis/2009/ 須崎有康[1], ,八木豊志樹[1] ,飯島賢吾[1],渡辺義人[2] [1] 独立行政法人産業技術総合研究所 [2] 株式会社アルファシステムズTRANSCRIPT
1
LoopBack Content Addressable Storageによる仮想ディスクの性能評価
@ SACSIS 先進的計算基盤システムシンポジウム2009 広島
http://www.hpcc.jp/sacsis/2009/
須崎有康[1], ,八木豊志樹[1] ,飯島賢吾[1],渡辺義人[2]
[1] 独立行政法人 産業技術総合研究所
[2] 株式会社 アルファシステムズ
2
概要• LBCASとはLoopBackとCAS(Content Addressable Storage)を組
みわせたネットワーク透過仮想ディスク– LoopBack
• ブロックデバイスの仮想化– ブロックデバイス → ファイル
– CAS• アクセス方法の仮想化(間接アドレスシング)
– 番地によるアドレスシング→ 内容による検索
• OS配信のために開発– OS Circular
• 本発表は性能評価が主題
3
発表内容
• LBCAS(ネットワーク透過ディスク)の詳細– CASとは– Storage Cache と Memory Cache
• LBCASの性質– ディスクプリフェッチ(readahead)の影響
– データ、分割サイズ、ネットワークレイテンシの影響
• OS起動に対する 適化– ファイルシステムのデータブロックの再配置
• ext2optimizer
– ネットワークに対する 適化
• まとめ
4
CASとは• ブロック内容による間接アドレッシングを行うストレー
ジ管理技術• 基本的アイデアはPlan9のVenti [FAST’02]と同じ
• ハッシュ値によるブロック管理
– 同一コンテンツのブロックは同一ハッシュ値で管理(重複)される。0クリ
アされたブロックの総容量を削減できる。
• ハッシュの衝突困難性を利用し、ブロックは追加のみ。古いイメージにも戻ることができ、永続アーカイブとして利用可能。
File System
Address SHA-10000000-0003FFF 4ad36ffe8…0004000-0007FFF 974daf34a…0008000-000BFFF 2d34ff3e1…000C000-000FFFF 974daf34a…… …
CAS Storage Archive
Indexing
専用Protocol
重複
read 8000
新しいSHA-1で追加Indexの書換え
5
LBCAS: Loopback CASの実装• 専用のCASストレージアーカイバによるブロック管理ではなく、ファイルに
よるブロック管理– 小さい“ブロックファイル”からLoopbackファイル(仮想ディスク)を再構成– ブロックファイル名はSHA-1値
– ブロックファイルは容量削減且つ、ダウンロードの高速化のため圧縮
• 間接アドレッシングもファイル(Mapping Table)で管理– クライアントではドライバがMapping Table からLoopback ファイルとして再構
成• SHA-1値によるファイル内容検証が可能
CAS StorageArchive
Mapping Table File
4ad36ffe8…
974daf34a…
2d34ff3e1…
…
Block File
Address SHA-10000000-0003FFF 4ad36ffe8…0004000-0007FFF 974daf34a…0008000-000BFFF 2d34ff3e1…000C000-000FFFF 974daf34a…… …
LBCASdriver
File System
Loopbakファイル(仮想ディスク)
Loopbackすることで通常のディスクとしてマウント
Loopbackファイルに再構成
ファイルとして抽象化
6
Block Device
256KB
…
4KB Page
ext2
…
…
…
Mapping Table and block files
…
map01.idx4ad36ffe8…974daf34a…2d34ff3e1…3310012a……
HTTP Server (original) Client A
VM
On DemandDownload
ブロックファイル作成とネットワーク透過仮想ディスク
7
• Storage Cache– ダウンロードの抑制
• 必要なブロックファイルがあればネットワーク不要になる
• Memory Cache– ファイル読出し,圧縮展開の抑制
LBCASの実装
8
発表内容
• LBCAS(ネットワーク透過ディスク)の詳細– CASとの違い– Storage CacheとMemory Cache
• LBCASの性質– ディスクプリフェッチ(readahead)の影響
– データ、分割サイズ、ネットワークレイテンシの影響
• OS起動に対する 適化– ファイルシステムのデータブロックの再配置
• ext2optimizer
– ネットワークに対する 適化
• まとめ
9
LBCASの問題点(オーバーヘッド)• データおよびアクセスパターンによる性能差
– 静的特性:• データの性質から来るブロックファイルの重複率や圧縮率の違い
– 動的特性:• I/Oリクエスト(サイズと数)や参照局所性による性能差
• LBCASサイズによる性能差
– 1 I/Oリクエストが1ファイルダウンロードにならない
– ブロックファイル内の有効データ(充足率)の低下により、容量のロスより性能効率の低下が問題となる
10
readaheadとLBCAS
current_window ahead_window
start ahead_start I/O
sequential read from application
current_window
sequential read from application
ahead_window
Expand to “max_readahead”
LBCASDownload block files Map to loopback device
I/O
LBCASCached
BA2C1… D3E14…
D3E14…
3B441… 2A121…
• readaheadはLinux kernelのディスク先読み機構。– 先読みサイズはキャッシュヒット率に依存。– 先読みサイズを大きくすることでI/O回数を減らすことができる。
11
LBCASの振る舞い、および性能解析• LBCASとデータ特性
– LBCASサイズ (64KB, 128KB, 256KB, 512KB)– 8.5GBに下記のデータを保存
• zero clear• random• ext3(Ubuntu 3.5GB )• NTFS(WindowsXP 8.4GB)
• アクセスパターンベンチマーク– 読出し専用ディスクに負荷をかけるアクセス
• 解析– LBCASサイズの影響– ネットワークレイテンシの影響
ファイルの一部全ファイルの全内容全ブロック特徴
ランダムランダムシーケンシャルパターン
仮想計算機経由ファイルシステム経由ブロックレベルアクセスレベル
boottardd
12
ベンチマークの違い
• LBCAS内でのブロックファイルアクセスの違い– I/Oリクエストサイズの違いにより複数のブロックファイルに跨る場合がある
1.249 (634KB)15,57846,746512KB
1.499 (384KB)31,15731,167256KB
1.999 (256KB)62,3159128KB
2.999 (192KB)62,3151864KB
平均3ファイル2ファイル1ファイルext2/dd
1.063 (554KB)5,91387,519512KB
1.128 (324KB)11,83881,541256KB
1.255 (161KB)23,74069,286128KB
1.510 (97KB)15,23516,79060,71264KB
平均3ファイル2ファイル1ファイルext2/tar
アクセスパターン
I/O リクエスト
dd tar
Av. 128KB Av. 37KB
13
ベンチマークに対するLBCASの振る舞い
59,327
55,955
52,012
47,286
MemoryCache
33,518
36,527
39,694
42,989
StorageCache
40,018
49,222
64,754
92,711
Uncompress
6,500
12,695
25,060
49,772
Download
93,432512KB
93,379256KB
93,026128KB
92,99164KB
Requests(Av: 37KB)
tar ext2(3.5GB)
70,498
79,264
96,788
131,802
MemoryCache
343
353
407
745
Storage Cache
7,404
14,217
27,851
55,153
UncompressD+S=U
7,061
13,862
27,444
54,408
Download
62,324512KB
62,324256KB
62,324128KB
62,32464KB
Requests(Av: 128KB)
dd ext2(8.4GB)
効果少
非効率(細かい離散アクセス)
ほぼ同数
倍以上
効果大
効果大
140
100
200
300
400
500
600
700
64KB 128KB 256KB 512KB 64KB 128KB 256KB 512KB
etc
uncompress
file
download
LBCASの消費時間
0
100
200
300
400
500
600
700
64KB 128KB 256KB 512KB 64KB 128KB 256KB 512KB
etc
uncompress
file
download
LBCAS-HTTP LBCAS-SSD
LBCAS-HTTP LBCAS-SSD
Second
Second
④無駄な展開の抑制が重要
②書込みオーバーヘッドを少なくした方が有利
①ダウンロードのオーバーヘッドが大きい
③Storage Cacheでは差が小さい
ddの内訳
tarの内訳
15
レイテンシの影響(ext3 tar)
Throughput / FileRed 64KBBlue 128KBGreen 256KBPurple 512KB
700
4000
7000
14000
3.5Mbps
2.5Mbps
5.0Mbps
12Mbps
ファイルサイズによる差が拡大
3,1074,3547,00912,111100msec 海外
1,8862,4453,8096,44750msec
1,2001,5002,2203,69025msec 国内
5514394576420msec LAN
512KB(6,500)
256KB(12,695)
128KB(25,060)
64KB(49,722)
LBCASサイズ(ファイル数)
終了時間(second)
• Internetではレイテンシの影響は大きく、LBCASサイズが大きくダウン
ロードファイル数が少ないほど有利– レイテンシ長いほど差が拡大
0ms
25ms
50ms
100ms
16
LBCASの特徴
• LBCASサイズとI/Oリクエストの関係
ファイル数 少
展開ロス 大スループット 大
ファイル数 多展開ロス 少スループット 小
サイズ 小回数 多
サイズ 大
回数 少
ネットワークで有利Storage Cacheで有利
LBCASサイズ 少 LBCASサイズ 大
OSからのI/Oリクエスト
LBCAS内の処理
• Internetで効率的にするにはLBCASを大きくする必要がある– ファイルシステムのデータブロックを再配置することで、I/Oサイズの拡大
(回数の減少)、および展開ロスの低減を図る
データの特徴の改善
アクセスパターンの改善
17
発表内容
• LBCAS(ネットワーク透過ディスク)の詳細– CASとの違い– Storage Cacheと Memory Cache
• LBCASの性質– ディスクプリフェッチ(readahead)の影響
– データ、分割サイズ、ネットワークレイテンシの影響
• OS起動に対する 適化– ファイルシステムのデータブロックの再配置
• ext2optimizer
– ネットワークに対する 適化
• まとめ
18
LBCASから起動するための 適化
• 起動時のFSアクセスに対する 適化– アクセスプロファイルに従ったブロック再配置
(ext2optimizer)により参照局所性を高め、ページキャッシュヒット率を上げる
• ネットワークに対する 適化– 起動プロファイルによる先行ダウンロード(DLAHEAD)
• 比較対象– 転送されるOS (4GB LBCAS)
• Linux(KNOPPIX4.0.2 kernel 2.6.12)– クライアント ThinkPAD X60, KVM-60
19
アクセスプロファイルによる再配置
VFS
File System Driver (ext2/3)
Profiler
Page Cache (Memory)
Access Profile(via /proc/ )
App
Kernel
User
ext2optimizer
Page Cache (Memory)
VFS
File System Driver (ext2/3)
App
Reallocate
Block Driver (Loopback)
Block Driver (Loopback)
readaheadの拡大I/O回数の低減
20
ブロック再配置:ext2optimizer [LinuxKongress06]
Triple Indirect
Double Indirect
Indirect Blocks
Direct Blocks
Timestamps
Size
Owner info
Mode
• アクセスプロファイルに従ってi-nodeのデータブロックアドレスの付け替えのみ– ドライバの変更不要
– ファイルから見るとフラグメンテーションを起こす場合がある
– キャッシュヒット率が上がり、readaheadのサイズが大きくなる
Triple Indirect
Double Indirect
Indirect Blocks
Direct Blocks
Timestamps
Size
Owner info
Mode
21
DAVL (Disk Allocation Viewer for Linux)によるext2opt解析
Original Fragmentation 0.09%
Ext2optFragmentation 0.27%
システムブロック
連続ブロック
非連続ブロック
起動で使われるブロック
集約することで少ないLBCASブロック数になる
22
起動時の読出し位置
• ext2optimzerでの 適化効果
Address (GB)
Tim
e (s
)
0 1.0 2.0 3.0 4.0
赤:normal青:ext2opt
参照の局所化
23
ext2optimizerが及ぼすI/Oへの影響ext2optNormal
182MB(freq:5500, size:33KB)
101MB
126MB(file:3,636 size:28KB)
112MB(freq:1700,size:67KB)
I/OリクエストReadaheadによる先読みを含む(数,平均I/Oサイズ)
101MB読出し要求データ総量
126MB(file:3,636 size:28KB)
読出しファイル総量(数,平均ファイルサイズ)
39.5(140),80.4%, [267]142(457), 39.7%, [871]512KB
38.3(127),88.5%, [485]107(342), 53.2%, [1,303]256KB
37.4(120),93.4%, [914]85.1(270), 67.2%,[2,063]128KB
37.0(115),97.5%, [1,761]72.5(228), 80.0%, [3,477]64KB
ext2optNormal
• ダウンロード総量MB(展開後MB)、ブロックファイル内の有効データ割合%、[ファイル数]
2/31/31/2
高い有効データ割合少ないファイル数
1/2 以下
24
LBCASの消費時間
0
5
10
15
20
25
30
35
40
45
50
64KB 128KB 256KB 512KB 64KB 128KB 256KB 512KB
etc
uncompress
file
download
0
10
20
30
40
50
60
70
80
90
100
64KB 128KB 256KB 512KB 64KB 128KB 256KB 512KB
Boot
LBCAS
38.7% 39.8% 43.1% 49.8% 21.3% 20.1% 22.3% 26.3%
76.5% 72.3% 62.4% 41.0% 73.7% 68.9% 64.5% 56.1%
19.3% 23.6% 32.4% 41.0%
21.7% 26.4% 30.7% 35.5%
• 起動時間に対するLBCAS
• LBCAS内の内訳
Normal Ext2Opt
Normal Ext2Opt
Time (s)
Time (s)
512KBでは効率の
悪い展開が増大
レイテンシが長くなると小さいLBCASサイズは影響が大きい。
Storage Cache後の展開オーバーヘッドも考慮して256KBを
標準として採用。
25
レイテンシに対する対処
• 先行ダウンロード– DLAHEAD
• 起動のプロファイルから必要なブロックファイルを先行してStorage Cacheにダウンロードする機能
• デフォルトで4並列のストリームダウンロード
• LBCASのデバイス設定時に開始
26
LBCASの消費時間
0
50
100
150
200
250
300
350
400
450
Norm
al(6
2%)
Ext2
Opt
(65%
)
Norm
alDL(
0.9%
)
Ex2O
ptDL
(34%
)No
rmal
(88%
)
Ext2
Opt
(89%
)
Norm
alDL(
34%)
Ex2O
ptDL
(49%
)No
rmal
(93%
)
Ext2
Opt
(93%
)
Norm
alDL(
29%)
Ex2O
ptDL
(31%
)Nor
mal
(96%
)
Ext2
Opt
(96%
)
Norm
alDL
(58%
)
Ex2O
ptDL
(47%
)
etc
uncompress
storage
download
• 起動時間に対するLBCAS
• LBCASの内訳
0
50
100
150
200
250
300
350
400
450
Boot
LBCAS
Latency 0ms 25ms 50ms 100ms
Latency 0ms 25ms 50ms 100ms
Time (s)
Time (s)
DLAHEADを使えば、normal,ext2optで起動時間が変わらない
DLAHEADが一部間に合わない
DLAHEADを適用すれば起動時
のレイテンシは隠ぺいできるNormalでも50msecまで隠
ぺい
27
展開• 任意のOSをインストールなしでネットワークから起
動させる “OS Circular”
28
Our target
Stream download
COW of VMwareCollective [NSDI’05]Ventana [NSDI’06]
Virtual MachineReal Machine
LivePC of Moka5streaming
Lightweight virtualizationMobiDesk[MobiCom’04]
(Display, NIC only)
Internet Suspend/ResumeCAS [USENIX’06]
PeabodyCAS[IEEE MSS’03]
LiveCD
SBUML [JSSST]streaming
Ondemanddownload
Virtual Disk file for QEMU[OS Zoo Project]
Staleless Linux of RedHat
Bulkdownload
SFS-KNOPPIX[IEEE-NCA’06]
関連研究
29
まとめ
• LBCASの性質をデータの特徴、アクセスパターン、LBCASサイズ、レイテンシなどを変えて解析した。
– Storage Cache, Memory Cacheの重要性確認
– LBCASサイズと展開ロス、およびディスクプリフェッチの効率
の重要性確認
• OS起動に適用するためにext2ファイルシステムのデータ再配置(ext2optimzer)を開発し、ブロック数の削減(半分以下)と高速起動を確認した。
• ネットワークレイテンシはDLAHEADにより隠ぺいでき、50msec程度なら影響がでないことを確認した。