ユーザレベルでのディスク帯域制御機構

1
ユーザレベルでのディスク帯域制御機構
山 田 浩 史†
河
野
健
二††
アプリケーションの多様化に伴い,OS に要求される資源管理ポリシーも多様化してきている.し
かし,資源管理ポリシーはカーネル内にハードコードされているため,そのポリシーの変更は容易で
はない.また,カーネルの変更を要する資源管理ポリシーは転用が難しく,広く展開しにくい.そこ
で,ユーザレベルでの資源管理機構の実現を目指し,本論文では,ディスク帯域の制御機構を提案す
る.本機構は,OS の動作を推測しながらファイル I/O を制限することで,ディスク帯域の制御を
実現している.また本機構は,ユーザレベルで実現されているので,ポリシー変更や転用が容易であ
る.本機構のプロトタイプを Linux2.4.27 上に実装し,実験を行ったところ,±2.0%以下の精度で
ディスク帯域を制御できることがわかった.また,実際のアプリケーションのディスク帯域も閾値以
下に制限することができた.
1. は じ め に
の技術を他の OS に転用することは容易ではない.
ユーザレベルでの柔軟な資源管理機構の実現を目指
アプリケーションの多様化に伴い,オペレーティン
し,本論文ではユーザレベルでのディスク帯域制御機
グシステム (OS) に要求される資源割当てポリシー
構を提案する.本機構は,ユーザレベルで OS の動作
も多様化している.SETI@home1) などに代表される
を推測しながら,プロセスのファイル読み書き (ファ
PC グリッド環境では,個人の所有する計算機資源を
イル I/O) サイズを制限することで,ディスク読み書
貸し出すため,貸し出す資源の配分をユーザが適切に
き (ディスク I/O) の帯域幅制御を実現している.ファ
制御できることが望ましい.たとえば,CPU 時間 10
イル I/O の制限は,Rate-Windows8) という機構を用
%,ディスク帯域 3 MB/s まで,ネットワーク帯域 5
いて実現する.本機構は,カーネルやアプリケーショ
MB/s までといった制限が可能であることが望まれる.
ンの変更を必要とせず,広く展開できることが期待さ
また,ウィルススキャンやバックアップなど重要度
れる.
の低いアプリケーションも,ユーザが適切に資源配分
本機構のプロトタイプを Linux2.4.27 上 に実装し
を調整できることが要求される.なぜなら,これらの
た.また,プロセスの発行したファイル I/O サイズと
アプリケーションは,ユーザの作業を妨げる可能性が
ディスク I/O サイズを測定できるように Linux2.4.27
あるからである.
を拡張し,実験を行った.実験より,ディスク帯域を
1 台の計算機を仮想的に複数のホストとして利用す
閾値の ±2 %の範囲内に制限できることがわかった.
る仮想ホスティング環境でも,資源配分を柔軟に制御
さらに,実際のアプリケーションのディスク帯域制御
できることが望ましい.なぜなら,ホスティング・サー
も行えることを確認した.
ビスの契約内容に応じ,各仮想ホストが利用できる資
以下,2 章ではディスク帯域を制御する困難さにつ
源配分は異なることが多く,仮想ホストごとに利用で
いて述べ,3 章で本機構の設計,4 章では実装を示す.
きる資源量を適切に制御できることが望まれているか
5 章で実験結果を示し,6 章では関連研究について述
らである.
べ,7 章で本論文をまとめる.
従来の OS の多くは,公平性を重視した資源割当て
ポリシーを採用しており,そのポリシーもカーネル内
2. ディスク帯域制御の困難さ
にハードコードされているため,資源割当てポリシー
2.1 ファイル I/O とディスク I/O の違い
を変更することは容易ではない.Solaris9 などの商用
ディスク帯域制御は,プロセスの発行するファイル
OS では仮想ホスティングのための資源管理機構2) を
I/O を制御するだけでは行えない.なぜなら,ファイ
備えているが,カーネル内で実現されているため,そ
ル I/O とディスク I/O では,発行量やタイミングが
異なるからである.たとえば,ファイルを読み込んで
† 電気通信大学大学院 電気通信学研究科 情報工学専攻
†† 電気通信大学 電気通信学部 情報工学科
も,ディスク読み込みが起きない,またはファイル読
み込みサイズと同サイズのディスク読み込みが必ずし
2
も起きるわけではない.また,ファイルにデータを書
する.
き込んでも,すぐにそのデータはディスクに書き込ま
プロセスのディスク帯域を制御するには,2.1 節で
れるわけではない.これは以下に列挙する OS の動作
述べたファイル I/O とディスク I/O との違いを考慮
に起因する.
する必要がある.そこで,RW ではファイル I/O に
• ディスクキャッシュ: ディスクキャッシュに存在
するファイルを読み込むときには,ディスク I/O
は発行されない.
• ブロック単位のディスクアクセス: ファイルを
読み込むときには,ファイル読み込みサイズをブ
ロックサイズに丸め上げたサイズのディスク読み
対するディスク I/O の比率を設定し,この比率を用
いて発行されるディスク I/O を推測する.たとえば,
この比率が 0.5 であれば,RW は,100KB のファイ
ル I/O を 50 KB のディスク I/O とみなす.比率の更
新は,プロセスがファイル I/O を発行する度に行う.
2.2.2 Rate-Windows の問題点
込みが起こる.そのため,ファイル読み込みサイ
RW のディスク帯域の制御法には問題点がある.RW
ズと実際に起こるディスク読み込みサイズとの間
では,ファイル I/O に対するディスク I/O の比率を
にズレが生じる.
• ファイル先読み : ファイルを読み込むときには,
算出するために,プロセスの発行したディスク I/O サ
イズを取得する必要がある.しかし,ユーザレベルで
ファイルの先読みが行われる.そのため,この場
はシステム全体で発行されたディスク I/O サイズし
合にも,ファイル読み込みサイズと実際に起こる
か取得できない.そのため,複数のプロセスを同時に
ディスク読み込みサイズとの間にズレが生じる.
制御すると正しく比率が定まらず,ディスク帯域を適
• 非同期書き込み : OS は汚れバッファが一定数を
切に制御できなくなる.
越えたときに,まとめてディスクに書き込む.そ
これを具体的に示すために,RW をユーザレベルに
のため,ファイル書き込みを発行しても連動して
実装して実験を行った.5 章に示す実験と同じ環境を用
ディスク書き込みが起きない.
意し,同時に 2 つのアプリケーションを起動して,そ
2.2 既存の手法の問題
れぞれディスク帯域を制限した.用意したアプリケー
ディスク帯域を制御する手法として,Rate-Windows8)
ションは以下のとおりで,図 1 に示すようなファイル
(RW) が提案されている.RW は,プロセス単位でファ
I/O,ディスク I/O を発行する.
イル I/O を制限できる.さらに,ディスク帯域の制
• tar : 200MB の tar ファイルを展開する.ファイ
御も行う.RW は,カーネルモジュールとして実装す
ル I/O に対するディスク I/O の比率は約 1.0 で
る手法だが,容易にユーザレベルへと移植できる.以
下,RW の仕組みとその問題点を述べる.
2.2.1 Rate-Windows
RW では,ファイル I/O スループットがあらかじ
め定めた閾値を越えないようにプロセスを制御する.
RW は,プロセスがファイル I/O を発行する度に 2
ある.
• make : apache をコンパイルする.ファイル I/O
に対するディスク I/O の比率は約 0.4 である.
それぞれディスク帯域を 10MB/s,400MB/s で制
限した.また,過去 1 秒間のデータを元にスループッ
トを計算した.
種類の値を記録する.1 つは,ファイル I/O サイズで
結果を図 2 に示す.縦軸にスループット,横軸に
ある.もう 1 つは,前回プロセスがファイル I/O を
経過時間をとっている.元々,make の使用するディ
発行してから経過した時間である.これらの記録を用
スク帯域幅はほぼ閾値以下であるにもかかわらず (図
いて,スループットを計算する.この値は,あらかじ
1(b)),RW でディスク帯域を制御すると,make の
め決められた期間,たとえば 1 秒間,5 秒間という期
ファイル I/O に無駄な制限がかかっていることがわ
間のデータを元に算出される.
かる (図 2(b)).これは,tar の I/O サイズが make
たとえば,閾値を R KB/s とし,T 秒間のデータ
のそれに比べて極めて大きく,ファイル I/O に対す
を元にスループットを計算しているとする.今,過去
るディスク I/O の 比率がほぼ tar の動作によって決
T 秒間内のファイル I/O サイズは B KB であった.
まるからである.これにより,make の ファイル I/O
≤ R であれば,何もしない.そうでなけ
ここで, B
T
に対するディスク I/O の比率が正しく定まらず,正
れば,つまり,スループットが閾値を越えていたなら
しくディスク I/O を推測できない.
− T 時間だけ,プロセスの実行を停止する.停
ば, B
R
止を行うことで,過去 T 秒間の平均スループットが
R KB/s となる.このように,RW はプロセスを制御
3. ディスク帯域制御機構
2.1 節で述べたように,ディスク帯域を制御するに
3
35000
2500
File I/O
Disk I/O
30000
File I/O
Disk I/O
Bandwidth [KB/s]
Bandwidth [KB/s]
2000
25000
20000
15000
10000
1500
1000
500
5000
0
0
0
10
20
30
40
Elapsed Time [sec]
50
0
20
40
(a) tar
160
制限なし
2500
File I/O
Disk I/O
File I/O
Disk I/O
2000
Throughput [KB/s]
10000
Throughput [KB/s]
140
(b) make
図1
12000
60
80 100 120
Elapsed Time [sec]
8000
6000
4000
1500
1000
500
2000
0
0
0
10
20
30
40
50
60
Elapsed Time [sec]
70
80
90
0
(a) tar(10MB/s で制限)
50
100
150 200 250 300
Elapsed Time[sec]
350
400
450
(b) make(400KB/s で制限)
図2
RateWindows で制限
は,ファイル I/O とディスク I/O の違いを考慮する
必要がある.
RW では,システム全体のディスク I/O を見て,
サイズ間にズレが生じるので,それを補整する.
• 非同期書き込み : OS は汚れバッファが一定数を
越えると,1 度にデータをディスクに書き込む.
個々のファイル I/O からどれだけのディスク I/O が
そのため,指定した間隔での平均ディスク I/O ス
発行されるかを推測する.これに対して,本機構では,
ループットが閾値を越えてしまう可能性がある.
個々のファイル I/O が ディスク I/O を伴うかどう
そこで,ディスク書き込みが起こる間隔での平均
かを判定する.これにより,複数プロセスの制御が可
ディスク I/O スループットが閾値を越えないよ
能になる.
うにファイル I/O を制限する.
本機構では,次のように OS の動作にあわせてファ
本機構では,プロセスがファイルを読み込むときに
イル I/O を制御することで,ディスク帯域の制御を
キャッシュ判定という判定を行う.キャッシュ判定は,
達成する.ファイル I/O の制御には,RW を用いる.
ファイルがディスクキャッシュ内に存在するか否かを
• ディスクキャッシュ : ディスクキャッシュ内に存
判定する.この判定でファイルがディスクキャッシュに
在するファイルの読み込みは,ディスク読み込み
存在しないと判定したときにだけ,RW を用いてファ
が起きないので制御を行わない.逆に,ディスク
イル読み込みを制御する.
キャッシュに存在しないファイルの読み込みを制
御するようにする.
ファイル読み込みの制御を行うときには,丸め上げ
とチェックウィンドウというファイル読み込みサイズ
• ブロック単位のディスクアクセス,ファイル先読
とディスク読み込みサイズ間のズレを補整する手法を
み : ファイル読み込みサイズとディスク読み込み
用いる.丸め上げはブロック単位のディスクアクセス
4
いる.
5MB
1.25
2.5
3.75
FILE
4.1 ラッパー
ラッパーは,動的リンクライブラリとして実装し,
read
read
read
環境変数 LD PRELOAD を用いてフックを実現して
read
図3
キャッシュ判定
いる.これにより,既存のアプリケーションを変更す
ることなく,ディスク帯域を制御できる.
によるズレを,チェックウィンドウはファイル先読み
4.2 Rate-Windows
によるズレを補正する.この 2 つの手法を用いて,実
ラッパーは,プロセスが発行したと推測されるディ
際に起こるディスク読み込みサイズを算出する.ファ
スク I/O サイズをモニタプロセスに TCP 通信で通
イル書き込みは,そのままディスク書き込みとして制
知する.モニタプロセスは通知を受けると,2.2.1 節
御を行う.
で示した計算を行い,適切な停止時間を算出する.そ
3.1 キャッシュ判定
して,その停止時間をラッパーに通知する.ラッパー
ユーザレベルでキャッシュ判定を行う手法として,
は通知された時間だけ sleep する.
OS の内部状態を推測する gray-box3) という手法を
4.3 チェックウィンドウ
用いる.この手法は,ファイルの読み込みにかかる時
Linux2.4 系はファイル先読みを行う.Linux2.4 系
間をもとにキャッシュ判定を行う.ファイルを 1 バイト
のファイル先読み機構は,同期的な先読みと非同期的
読み込む時間を計測し,短時間で読み込めれば,ファ
な先読みとに分かれている.プロトタイプでは,同期
イルはディスクキャッシュに存在すると判定する.そ
的な先読み部分のみを実装した.
うでなければ,存在しないと判定する.
本機構ではこの手法を利用する.まず,ファイル読
同期的な先読みでは,ファイル読み込みが起こると
1 ページ分の先読みを行う.なので,チェックウィンド
み込みが起こると,読み込む地点から 5MB のファイ
ウは読み取りサイズを 4KB(ページサイズ) で丸め上
ルデータ領域を図 3 のように 4 等分する.そして,分
げ,さらに +4KB のディスク読み込みが発行される
割してできた領域についてキャッシュ判定を行う.こ
とみなす.そして,このように算出したディスク I/O
れは,部分的にディスクキャッシュに存在する可能性
サイズをモニタプロセスに通知する.
があるので,それを検出するために行う.
本機構の判定手法を用いると,たとえば,短時間で
5. 実
験
読み込めた地点が 1.25MB,3.75MB 目であれば,0∼
本機構を用いて,ディスク帯域の制御を確認するた
1.25MB 目,2.5∼3.75MB 目の領域はディスクキャッ
めに実験を行った.実験は,表 1 の性能を持つ PC/AT
シュ内に存在すると判定する.
互換機上で行った.互換機上では,プロセスごとにファ
3.2 ズレの補整
イル I/O サイズ,ディスク I/O サイズを測定できる
丸め上げは,OS のブロック単位のディスクアクセ
よう改良した Linux2.4.27 が稼働している.また,過
スによるズレを補正する手法である.丸め上げは,プ
去 1 秒間のデータを元にスループットを計算している.
ロセスがファイルを全て読み込むと,ファイルサイズ
5.1 Micro-Benchmark
をブロックサイズで丸め上げた値を計算し,その値を
以下のようなファイル I/O を発行するジョブを用
実際のディスク読み込みサイズとする.
チェックウィンドウは,OS のファイル先読みによ
るズレを補正する手法である.チェックウィンドウは,
ファイル先読みをエミュレートし,実際のディスク読
み込みサイズを計算する.
4. 実
装
意し,ディスク帯域を 5MB/s に制限した.
• sequential read : 200MB のファイルをシーケン
シャルに読む.
• stride read : 5 個の 200MB のファイルを 12KB
おきに 1 バイト読む.
• random read : 10 個の 200MB のファイルをラ
表1
本機構のプロトタイプを Linux2.4.27 上に実装し
実験環境
た.本機構は RW を改良した機構であり,モニタプロ
構成要素
構成
セスと,read() と write() のラッパーから構成される.
CPU
メモリ
HDD
AthlonXP 1.4GHz
512MB
60GB,7200rpm,UltraATA100
Linux2.4 系では,ページサイズ単位でディスクから
ファイルデータを読み込むので,4KB で丸め上げて
5
7000
7000
File I/O
Disk I/O
Throughput [KB/s]
Throughput [KB/s]
6000
File I/O
Disk I/O
6000
5000
4000
3000
2000
5000
4000
3000
2000
1000
1000
0
0
0
10
図4
20
30
Elapsed Time[sec]
40
0
50
20
図7
sequential read の制御
7000
File I/O
Disk I/O
6000
40
60
80
100
Elapsed Time[sec]
ファイル生成の制御
File I/O
Disk I/O
12000
Throughput [KB/s]
Throughput [KB/s]
10000
5000
4000
3000
2000
8000
6000
4000
2000
1000
0
0
0
20
40
60
80
100
120
140
0
10
20
Elapsed Time[sec]
図5
図8
stride read の制御
120000
40
50
60
70
80
tar の制御 (10MB/s)
2500
File I/O
Disk I/O
100000
File I/O
Disk I/O
2000
Bandwidth [KB/s]
Throughput [KB/s]
30
Elapsed Time[sec]
80000
60000
40000
1500
1000
500
20000
0
0
0
50
図6
100
150
Elapsed Time[sec]
200
250
random read の制御
ンダムに読む.
0
50
図9
100
150
Elapsed Time[sec]
200
tar の制御 (10MB/s)
で実現していることによる精度上の誤差であると考え
• ファイル生成 : 400MB のファイルを生成する.
られる.実験より,本機構は +1.5%,−1.4%の精度
結果を図 4∼7 に示す.縦軸にスループット,横軸
でディスク帯域を制御することがわかった.
に経過時間をとり,閾値をプロットしている.図より,
本機構が,設定した閾値以下にディスク帯域を制限し
ているのがわかる.
また,ディスク帯域は,閾値の +1.5%,−1.4%の
間で制御されている.これは,本機構をユーザレベル
5.2 Macro-Benchmark
実際のアプリケーションのディスク帯域を,本機構
を用いて制御した.制御したアプリケーションは次の
とおりである.
• tar : 200MB の tar ファイルを展開する.
6
5000
File I/O
Disk I/O
Throughput [KB/s]
4000
3000
2000
1000
0
0
20
40
60
80
Elapsed Time[sec]
100
120
図 10 grep の制御 (3MB/s)
2500
File I/O
Disk I/O
12000
2000
Throughput [KB/s]
10000
Throughput [KB/s]
File I/O
Disk I/O
8000
6000
4000
1500
1000
500
2000
0
0
0
10
20
30
40
50
60
Elapsed Time [sec]
70
80
90
0
(a) tar(10MB/s で制限)
50
100
150
Elapsed Time[sec]
200
250
(b) make(400KB/s で制限)
図 11 本機構で制限
• make : apache をコンパイルする.
• grep : Linux 2.4.27 のカーネルソースツリーか
ら hoge という文字列を探す.
6. 関 連 研 究
近年のアプリケーションの多様化に伴い,さまざまな
tar,make,grep のディスク帯域を 10MB/s,400KB/s, 資源管理方式が提案されている.Proportional-Share
3MB/s で制限した.結果を,図 9∼10 に示す.図 9
資源管理方式として,lottery scheduling11) を拡張し,
∼10 より,実際のアプリケーションのディスク帯域も
チケットのやりとりで資源を柔軟に管理する手法が提
閾値以下に制限されているのがわかる.実験より,本
案されている9) .他にも,lottery scheduling の資源
機構を用いれば,実際のアプリケーションのディスク
分配の精度を上げる stride scheduling10) や素早くス
帯域を制御できることがわかった.
ケジューリングを行う VRTT7) などがある.以上の
5.3 同 時 制 御
手法は,カーネルの変更を要するので,本手法とは異
tar と make の同時制御を本機構でも行った.結果
なる.
を図 11 に示す.図 11(b) より,RW に比べて,無駄
文献 4) では,資源を制限するサンドボックスをユー
な制限をせずにディスク帯域を制御していることがわ
ザレベルで実装する手法が提案されている.提案サン
かる.実験より,本機構は同時に複数プロセスのディ
ドボックスでは,CPU 時間,メモリ,ネットワーク
スク帯域を制御できることがわかった.
帯域を制限できるが,ディスク帯域は制限できない.
MS Manners5) では,プロセスの進捗度を元に,プ
ロセスをスケジューリングする手法が提案されている.
7
MS Manners では,制限する資源を指定できないた
め,本手法のようにディスク帯域のみを制限すること
は難しい.
文献 6) では,ユーザレベルで CPU スケジューラ
を実現する手法が提案されている.本手法と組み合わ
せることで,CPU 時間とディスク帯域をユーザレベ
ルで制御することが可能になる.
7. お わ り に
ユーザレベルでの資源管理機構を目指し,本論文で
はディスク帯域の制御機構を提案し,その実現方法を
示した.提案機構は,OS の動作を推測しながらファ
イル I/O を制限する.また提案機構は,カーネルや
アプリケーションを変更せず,ポリシー変更や転用も
容易である.本機構のプロトタイプを Linux2.4.27 上
に実装し,実際にプロセスのディスク帯域を制限でき
ることを確認した.
今後は,提案機構のオーバーヘッドを調べ,有用性
を確かめたい.
参
考
文
献
1) The Search for Extraterrestrial Intelligence.
http://setiathome.ssl.berkeley.edu/.
2) Solaris 9 Resource Manager (White Paper).
http://jp.sun.com/products/wp/solaris9/srm.pdf,
2002.
3) Andrea C. Arpaci-Dusseau and Remzi H.
Arpaci-Dusseau. Information and Control in
Gray-Box Systems. In Proceedings of the 18th
ACM Symposium on Operating Systems Principles (SOSP ’01), pp. 43–56, October 2001.
4) Fangzhe Chang, Ayal Itzkovitz, and Vijay
Karamcheti. User-level Resource-constrained
Sandboxing. In Proceedings of 4th USENIX
Windows System Symposium (WSS 2000), pp.
25–36, August 2000.
5) John R. Douceur and William J. Bolosky.
Progress-based regulation of low-importance
processes. In Proceedings of the 17th ACM
Symposium on Operating Systems Principles
(SOSP ’99), pp. 247–260, December 1999.
6) Travis Newhouse and Joseph Pasquale. A
User-Level Framework for Scheduling within
Service Execution Environments. In IEEE International Conference on (SCC ’04), pp. 311–
318, September 2004.
7) Jason Nieh, Chris Vaill, and Hua Zhong.
Virtual-Time Round-Robin : An O(1) Proportional Share Scheduler. In Proceedings of
2001 USENIX Annual Technical Conference,
pp. 245–259, June 2001.
8) Kyung D. Ryu, Jeffery K. Hollingsworth, and
Peter J. Keleher. Efficient Network and I/O
Throttling for Fine-Grain Cycle Stealing. In
Proceedings of the ACM/IEEE SC2001 Conference (SC ’01), November 2001.
9) David G. Sullivan and Margo I. Saltzer. Isolation with Flexibility: A Resource Management
Framework for Central Servers. In Proceedings
of 2000 USENIX Annual Technical Conference,
pp. 337–350, June 2000.
10) Cart A. Waldpurger and William E. Weihl.
Stride Scheduling: Deterministic ProportionalShare Resource Managemet. Technical report,
MIT/LCS/TM-528, Massachusetts Institute of
Technology, 1995.
11) Carl A. Waldspurger and William E. Weihl.
Lottery Scheduling: Flexible ProportionalShare Resource Management. In Proceedings
of the First Symposium on Operating System
Design and Implementation, pp. 1–12, November 1994.