2.3 入出力要求数を調整する制御方式
2.3.1 基本方式
本制御方式は,実I/O処理終了後に,要求入出力性能に合わせて遅延処理を実施し,調 整対象プロセスの入出力性能を調整する.さらに,デバイスドライバへの入出力要求数(実 I/O処理を行うプロセス数)を制御する.これにより,調整精度への他プロセスの影響を抑 制する.この制御方式を「入出力要求数を調整する制御方式」と名付ける.入出力要求数を 調整する制御法の基本方式を図2.1に示し,以下に説明する.
第 2 章 入出力性能の調整方式 21
(4) Device driver (1) System-call
(2) Decision to start real I/O
(3) Wait (5) Synchronous (6) Delay T
0T
1T
2T
3OK NG
図 2.1 基本方式
(1)プロセスは入出力システムコールを発行する.
(2)実I/O可否判断規則(詳細は後述)に基づき,実I/O処理を許可するか否か判断する.
許可しない場合,(3)の処理を行う.許可する場合,(4)の処理を行う.
(3)入出力優先度に基づき,プロセスを待ちキューにつないで待ち状態にする.要求入出 力性能が高いものを高入出力優先度とし,同入出力優先度はLRUで管理する.同期処理か らの同期により,入出力優先度が最も高いプロセスを再起動する.
(4)デバイスドライバを介して外部記憶装置に入出力要求を発行する.
(5)待ち処理に同期を送信する.
(6)要求入出力性能から算出する理想の調整後の入出力時間(以降,理想の入出力時間と 呼ぶ)になるまで遅延処理を実施する.
本制御方式をOSカーネル内に実現することにより,デバイスドライバに共通的な機能と して組み込むことができ,(要件2)を満足できる.また,制御したい外部記憶装置ごとに本 制御方式を実現する.ここで,入出力要求から外部記憶装置の情報を取得することにより,
ひとつのデバイスドライバが複数の外部記憶装置を管理する場合においても,外部記憶装置 ごとに制御でき,(要件1)を満たす.なお,他プロセスによる調整精度への影響および個々 の入出力処理における調整精度については,評価において定量的に考察する.
第 2 章 入出力性能の調整方式 22
2.3.2 課題と対処
課題
本制御方式における課題を以下に示す.
(課題1)実I/O可否判断規則
デバイスドライバ内で実I/O開始待ちが発生しないように入出力中のプロセス数を1つに 制限すれば,実I/O開始時刻と終了時刻を高精度で把握でき,調整精度は向上する.一方,
この制限を行うと,デバイスドライバ内に入出力要求が複数存在しなくなる.このとき,実 I/O処理完了の割り込み処理において,次の実I/O処理を開始できず,外部記憶装置の使用 効率は低下し,入出力スループットが低下する.したがって,調整精度と入出力スループッ トのバランスを考慮した実I/O可否判断規則を明らかにする必要がある.
(課題2)遅延処理方式
遅延処理の方式には,大きく2つある.1つはシステムクロックを監視して待つ方式(以 降,loop方式と呼ぶ)であり,もう1つは休眠と覚醒により行う方式(以降,wait方式と呼 ぶ)である.loop方式は,システムクロックの最小単位で遅延時間を調整できる.しかし,
遅延処理においてプロセッサを使用するため,他プロセスに影響を与えてしまう.このため,
wait方式を採用する.
wait方式では,実効単位と実効精度が問題である.ここで,実効単位は,実際にプロセス を停止できる単位である.つまり,実効単位が10ミリ秒の場合,プロセスの停止は10ミリ 秒の倍数で行われる.例えば,要求停止時間が端数(10ミリ秒よりも小さい部分)のとき,
この端数を減算した値(以降,依頼停止時間と呼ぶ)でプロセスの停止を依頼することにな る.この結果,調整精度は低下する.一方,実効精度は,プロセスを停止した際の精度であ る.プロセスを停止する際,依頼停止時間と実際の停止時間(以降,実停止時間と呼ぶ)は 等しいことが望まれる.しかし,wait方式の処理はタイマ割込を利用するため,依頼停止時 間と実停止時間に差が生じ,調整精度は低下する.したがって,実効単位と実効精度による 影響を抑制する必要がある.
(課題3)実I/O時間の計測法
遅延処理では,実I/O時間を利用して遅延時間TSを算出する.一方,(要件2)より,デバ イスドライバに変更を加えない.したがって,実I/O時間の測定をデバイスドライバ外(OS
第 2 章 入出力性能の調整方式 23
内)で行う必要がある.
(課題4)プロセッサ割り当て待ち法
待ち状態のプロセスを再起動する際,実行可能状態となってからプロセッサを割り当てら れるまでの間に待ち時間(以降,プロセッサ割り当て待ち時間と呼ぶ)が発生する.このプ ロセッサ割り当て待ち時間が大きくなると,調整精度が低下する.したがって,プロセッサ 割り当て待ち時間を短縮する必要がある.
実I/O可否判断規則
調整精度を低下させないように,デバイスドライバに入出力要求を発行するプロセス数を 制限する.具体的には,調整対象プロセスの実I/O処理が要求入出力性能から算出する理想 の入出力時間内に終了するように,入出力要求の発行数の最大値(以降,許容値と呼ぶ)を 決定する.
最初に,調整対象プロセスが1個のみ存在する場合について,許容値の決定式を述べる.
理想の入出力時間には,外部記憶装置が当該プロセスの実I/O処理を実行する時間(実I/O 時間と呼ぶ)が含まれる.このため,理想の入出力時間から1回分の実I/O時間を差し引い た時間のみ,他プロセスの実I/O処理を待つことができる.したがって,この時間内に外部 記憶装置が処理できる入出力要求数を許容値にする.例えば,要求入出力性能が20%の場 合,理想の入出力時間は実I/O時間の5倍である.自身の実I/O時間を除いた時間内に,入 出力要求を4個処理できるため,許容値は4である.なお,他プロセスの入出力要求を発行 できなくなることを防ぐため,許容値は少なくとも1である.以上より,要求入出力性能P の調整対象プロセスが1個のみ存在するときの許容値は以下である.
M AX(1,100
P −1) (2.1)
次に,調整対象プロセスが複数存在する場合について述べる.許容値の決定に利用する要 求入出力性能について,以下に留意する.
(1)同期型と非同期型の扱い
同期型の入出力処理の場合,プロセスは入出力処理の終了を待つため,既に実I/O要求を 行っている調整対象プロセスの要求入出力性能を考慮する必要はない.一方,非同期型の入
第 2 章 入出力性能の調整方式 24
出力処理の場合は上記と異なる.しかし,UNIX系OSに代表される多くの既存OSでは,入 出力処理を同期型としている.したがって,ここでは入出力処理が同期型であると仮定する.
(2)保証する調整対象プロセス数
次に,調整対象プロセスが複数存在する場合を述べる.全ての調整対象プロセスに対して,
理想の入出力時間内に実I/O処理が完了することを保証するには,許容値の決定において全 ての調整対象プロセスを考慮する必要がある.しかし,要求入出力性能が低い調整対象プロ セスを考慮しなくても良い場合がある.例えば,要求入出力性能が20%と10%の調整対象 プロセスが1個ずつ存在する場合を述べる.要求入出力性能10%の調整対象プロセスを考 慮しない場合,許容値はmax(1,10020 −1) = 4になる.ここで,要求入出力性能20%の調整 対象プロセスの入出力要求は,要求入出力性能10%の調整対象プロセスよりも優先される.
この結果,要求入出力性能20%の調整対象プロセスの待ち時間は最長で実I/O時間の4倍 となり,理想の入出力時間(実I/O時間の5倍)までに実I/O処理を完了できる.一方,要 求入出力性能10%の調整対象プロセスの待ち時間は最長で実I/O時間の9倍となり,こち らも理想の入出力時間(実I/O時間の10倍)までに実I/O処理を完了できる.
上記の留意点をもとに,許容値の決定において,要求入出力性能が高い上位k番目までの 要求入出力性能の和を利用する.以降,このkを許容係数と呼ぶ.実I/O要求を行っていな い調整対象プロセスの上位i番目の要求入出力性能をPiとし,許容値を以下のようにする.
M AX(1, 100
∑k
i=1Pi −1) (2.2)
ここで,許容係数は求められる調整精度に応じて設定される.例えば,求められる調整精度 があまり高くない場合,入出力スループット低下を抑制するには,許容係数を小さくするこ とが望ましい.一方,多くの調整対象プロセスについて入出力性能の調整精度を高めるには,
許容係数は大きい方が良い.
遅延処理方式
実I/O処理終了後のプロセスの再起動を遅延させることで,調整対象プロセスのシステム コールの終了時刻を調整する.遅延時間は,理想の入出力時間から入出力処理に要した時間 (T1−T0)を減算して求める.遅延時間TSの算出式を以下に示す.