(57)【要約】      （修正有）【課題】所定の時間内に全てのプロセスがディスクアクセスを少なくとも１回実行するという条件の下で、スループットを大きくする。【解決手段】Ｉ／Ｏスケジューラは、複数のプロセスからのアクセス要求のスケジューリングを行う。スケジューリングは、（Ａ）アクセス対象ファイルを示すプロセス特性情報及びファイル位置情報を読み出すステップと、（Ｂ）アクセス要求を待ちキューに格納するステップと、（Ｃ）プロセス特性情報及びファイル位置情報を参照し、アクセス対象ファイルがディスク上の並び順でアクセスされるように待ちキューの順番を決定するステップと、（Ｄ）所定の時間内に全プロセスが少なくとも１回ディスクアクセスを行うように、それぞれの待ちキューから取り出されるアクセス要求の数を決定するステップと、（Ｅ）決定された順番及び数に従って、待ちキューからアクセス要求を取得しディスクに送るステップと、を含む。【選択図】図７
2009199367.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスがディスクにアクセスする際に、前記複数のプロセスのそれぞれから発行されるディスクアクセス要求のスケジューリング処理をコンピュータに実行させるＩ／Ｏスケジューラであって、
前記スケジューリング処理は、
（Ａ）前記複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及び前記ディスクに記録されているファイルの位置を示すファイル位置情報を、記憶装置から読み出すステップと、
（Ｂ）前記複数のプロセスからのディスクアクセス要求を、複数の待ちキューのそれぞれに格納するステップと、
（Ｃ）前記プロセス特性情報及び前記ファイル位置情報を参照し、前記アクセス対象ファイルが前記ディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される前記複数の待ちキューの順番を決定するステップと、
（Ｄ）所定の時間内に前記複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、前記所定の時間内に前記複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定するステップと、
（Ｅ）前記決定された順番及び数に従って、前記複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求を前記ディスクに送るステップと
を含む
Ｉ／Ｏスケジューラ。
【請求項２】
請求項１に記載のＩ／Ｏスケジューラであって、
前記（Ａ）ステップは、更に、前記ディスク上のシーク距離とシーク時間との対応関係を示すシーク時間情報を前記記憶装置から読み出すステップを含み、
前記（Ｄ）ステップは、
（Ｄ１）前記ファイル位置情報を参照し、前記決定された順番で前記アクセス対象ファイルに対してアクセスが発生した場合の前記アクセス対象ファイル間のシーク距離を算出するステップと、
（Ｄ２）前記シーク時間情報を参照して、前記算出されたシーク距離に対応するシーク時間を算出するステップと、
（Ｄ３）前記算出されたシーク時間を前記所定の時間から引くことにより、残り時間を算出するステップと、
（Ｄ４）前記残り時間を前記複数のプロセス間で分配することによって、前記残り時間内に前記複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定するステップと
を含む
Ｉ／Ｏスケジューラ。
【請求項３】
請求項２に記載のＩ／Ｏスケジューラであって、
前記（Ｄ４）ステップにおいて、前記ディスクアクセス要求の数は前記複数のプロセス間で均等になるように決定される
Ｉ／Ｏスケジューラ。
【請求項４】
請求項２に記載のＩ／Ｏスケジューラであって、
前記プロセス特性情報は、更に、前記複数のプロセスのそれぞれに要求されるスループットの重み付けを指定する重み付けパラメータを示し、
前記（Ｄ４）ステップにおいて、前記重み付けが前記複数のプロセスのそれぞれに関するスループットに反映されるように、前記ディスクアクセス要求の数が決定される
Ｉ／Ｏスケジューラ。
【請求項５】
請求項４に記載のＩ／Ｏスケジューラであって、
前記重み付けパラメータは、前記複数のプロセスのそれぞれに要求されるスループット間の比率を含み、
前記（Ｄ４）ステップにおいて、前記比率が前記複数のプロセスのそれぞれに関するスループットに反映されるように、前記ディスクアクセス要求の数が決定される
Ｉ／Ｏスケジューラ。
【請求項６】
請求項４に記載のＩ／Ｏスケジューラであって、
前記複数のプロセスは、要求されるスループットが優先的に与えられる優先プロセスと、要求されるスループットがベストエフォートで与えられるベストエフォートプロセスとを含み、
前記重み付けパラメータは、前記複数のプロセスの各々が前記優先プロセスか前記ベストエフォートプロセスかを示すクラスを含み、
前記（Ｄ４）ステップは、
（Ｄ４１）前記優先プロセスに関して、前記要求されるスループットが得られるように、前記複数の待ちキューのうち対応するものから取り出されるディスクアクセス要求の数を決定するステップと、
（Ｄ４２）前記決定された数のディスクアクセス要求の処理に必要な時間を前記残り時間から引くことによって、前記残り時間を更新するステップと、
（Ｄ４３）前記更新後の残り時間を前記ベストエフォートプロセス間で分配することによって、前記ベストエフォートプロセスに関して、前記複数の待ちキューのうち対応するものから取り出されるディスクアクセス要求の数を決定するステップと
を含む
Ｉ／Ｏスケジューラ。
【請求項７】
請求項６に記載のＩ／Ｏスケジューラであって、
前記重み付けパラメータは、更に、前記ベストエフォートプロセスのそれぞれに要求されるスループット間の比率を含み、
前記（Ｄ４３）ステップにおいて、前記比率が前記ベストエフォートプロセスのそれぞれに関するスループットに反映されるように、前記ディスクアクセス要求の数が決定される
Ｉ／Ｏスケジューラ。
【請求項８】
請求項１に記載のＩ／Ｏスケジューラであって、
前記プロセス特性情報は、更に、前記複数のプロセスのそれぞれに要求されるスループットの重み付けを指定する重み付けパラメータを示し、
前記（Ｄ）ステップにおいて、前記所定の時間内に前記複数のプロセスの全てが少なくとも１回ディスクアクセスを行い、且つ、前記重み付けが前記複数のプロセスのそれぞれに関するスループットに反映されるように、前記所定の時間内に前記複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数が決定される
Ｉ／Ｏスケジューラ。
【請求項９】
複数のプロセスがディスクにアクセスする際に、前記複数のプロセスのそれぞれから発行されるディスクアクセス要求のスケジューリング処理を行うＩ／Ｏスケジューリング方法であって、
（Ａ）前記複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及び前記ディスクに記録されているファイルの位置を示すファイル位置情報を、記憶装置から読み出すステップと、
（Ｂ）前記複数のプロセスからのディスクアクセス要求を、複数の待ちキューのそれぞれに格納するステップと、
（Ｃ）前記プロセス特性情報及び前記ファイル位置情報を参照し、前記アクセス対象ファイルが前記ディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される前記複数の待ちキューの順番を決定するステップと、
（Ｄ）所定の時間内に前記複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、前記所定の時間内に前記複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定するステップと、
（Ｅ）前記決定された順番及び数に従って、前記複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求を前記ディスクに送るステップと
を含む
Ｉ／Ｏスケジューリング方法。
【請求項１０】
ディスクと、
前記ディスクにアクセスする複数のプロセスを実行する処理装置と、
前記処理装置により実行され、前記複数のプロセスのそれぞれから発行されるディスクアクセス要求のスケジューリング処理を行うＩ／Ｏスケジューラと、
前記複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及び前記ディスクに記録されているファイルの位置を示すファイル位置情報が格納される記憶装置と
を備え、
前記Ｉ／Ｏスケジューラは、
前記複数のプロセスからのディスクアクセス要求を、複数の待ちキューのそれぞれに格納し、
前記プロセス特性情報及び前記ファイル位置情報を参照し、前記アクセス対象ファイルが前記ディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される前記複数の待ちキューの順番を決定し、
所定の時間内に前記複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、前記所定の時間内に前記複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定し、
前記決定された順番及び数に従って、前記複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求を前記ディスクに送る
計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関する。特に、本発明は、計算機システムにおいて、ディスクへのアクセス要求をスケジューリングするＩ／Ｏスケジューリング技術に関する。
【背景技術】
【０００２】
計算機システムにおいて、ＣＰＵが実行する多くのプロセスは、ディスクへのアクセス処理（データ読み込み、データ書き込み）を必要とする。従って、ディスクアクセス処理を高速化することは、計算機システムの高速化のために重要な課題の一つである。ディスクアクセス処理を高速化するためには、多くのプロセスからのディスクアクセス要求をそのままディスクに渡すのではなく、ディスクへ送られるディスクアクセス要求の順番を適切に調整することが重要である。そのような調整（調停）を行うことは、「スケジューリング」と呼ばれる。複数のプロセスからのディスクアクセス要求のスケジューリングを行うのが、ＯＳ内の「Ｉ／Ｏスケジューラ」である。
【０００３】
特許文献１には、複数のコンピュータで共有される外部記憶装置が開示されている。その外部記憶装置は、データを格納する複数の記憶ディスク部と、外部記憶制御部とを備える。記憶ディスク部は、データに対する読み出し／書き込みコマンドをキューイング可能である。外部記憶制御部は、コンピュータからのコマンドを受入キューに蓄え記憶ディスク部に順次発行することによって、コンピュータと記憶ディスク部との間のデータ入出力処理を制御する。より詳細には、外部記憶制御部は、予測処理時間生成手段と、送出キューと、処理時間予測手段と、コマンドキューイング手段と、コマンドバッチ生成手段とを含む。予測処理時間生成手段は、コマンドの処理に要すると予測される時間であるコマンド処理時間予測値を生成する。送出キューは、コマンドの待ち行列である。送出キューには、コマンド処理時間予測値の和が所定の処理タイムスライスに応じた値となる個数だけ、受入キュー内のコマンドが所定のタイミングで格納される。処理時間予測手段は、予測処理時間生成手段に基づいて、各記憶ディスク部別の処理時間を予測する。コマンドキューイング手段は、予測された処理時間が最大となる記憶ディスク部に対するコマンドを送出キューから取り出して、対応する記憶ディスク部にキューイングする。コマンドバッチ生成手段は、各送出キューが空になると、受入キュー内のコマンドを送出キューに格納する。
【０００４】
【特許文献１】特開平９−２５８９０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年、ＣＰＵ性能は急速に向上しているが、ディスク性能はＣＰＵほど急速には向上していない。そのため、ディスクアクセス要求の発行からレスポンスを受け取るまでの待ち時間が非常に長くなるプロセスやＣＰＵが発生し得る。待ち時間が長くなったり、頻繁に待ち状態が発生したりすると、システム全体の効率が低下してしまう。従って、Ｉ／Ｏスケジューラは、待ち時間が短くなるように、複数のプロセスからのディスクアクセス要求をスケジューリングすることが好適である。
【０００６】
また、ディスクアクセス処理を高速化するために、ディスクとＣＰＵとの間の単位時間あたりのデータ転送速度であるディスク帯域幅（スループット）を向上させることも重要である。よって、Ｉ／Ｏスケジューラは、スループットが向上するように、複数のプロセスからのディスクアクセス要求をスケジューリングすることが好適である。
【０００７】
しかしながら、一般的に、「待ち時間の短縮」と「スループットの向上」とは互いに相反する関係にある。そのことを、図１で示される例を参照して説明する。
【０００８】
図１において、プロセスＰ１〜Ｐ４が、ディスクに記録されているファイルＦ１〜Ｆ４のそれぞれへアクセスを行うとする。Ｉ／Ｏスケジューラは、プロセスＰ１〜Ｐ４のそれぞれから発行されるディスクアクセス要求をどのような順番でディスクへ送るかを決定する。より詳細には、Ｉ／Ｏスケジューラは、ディスクアクセス要求を一時的に保持しておく待ちキューＱ１〜Ｑ４を有している。待ちキューはプロセス毎に割り当てられており、図１の例では、待ちキューＱ１〜Ｑ４がそれぞれプロセスＰ１〜Ｐ４に割り当てられている。つまり、プロセスＰ１〜Ｐ４からのディスクアクセス要求は、待ちキューＱ１〜Ｑ４のそれぞれに一旦格納される。リクエスト選択部は、“所定の規則”に従って、待ちキューＱ１〜Ｑ４からディスクアクセス要求を取り出し、取り出したものを順次ディスクへ送る。
【０００９】
ここで、その所定の規則としては、（１）それぞれの待ちキューからディスクアクセス要求を１個ずつ順番に取り出す、あるいは、（２）１つの待ちキューに格納されている全てのディスクアクセス要求を取り出した後、次の待ちキューへ移る、が考えられる。これら２つの規則はそれぞれ長所と短所を有している。
【００１０】
規則（１）の場合、リクエスト選択部は、ある待ちキューから１個のディスクアクセス要求を取り出した後、すぐに次の待ちキューへ移る。その結果、あるプロセスがディスク上のあるファイルにアクセスした後、すぐに別のプロセスがディスク上の別のファイルにアクセスすることになる。従って、それぞれのプロセスが短い待ち時間で次々とディスクアクセスすることが可能となる。待ち時間が極端に長くなるプロセスが無いので、タイムアウトは発生せず、また、各プロセスの処理効率が向上する。その一方で、ディスク上のアクセス対象のファイルが次々と切り換わるため、ディスクヘッドは頻繁に移動する必要があり、ファイル間のシークに時間がとられてしまう。ファイル間のシーク時間が増大すると、ある一定の期間のうちに各ファイルから読み出せる（あるいは書き込める）データ量が必然的に少なくなってしまう。このことは、単位時間あたりのデータ伝送速度であるスループットが低下することを意味する。このように、規則（１）の場合、待ち時間は短縮されるが、スループットが低下する。
【００１１】
規則（２）の場合、リクエスト選択部は、１つの待ちキューに格納されている全てのディスクアクセス要求を取り出した後、次の待ちキューへ移る。そのため、アクセス対象のファイルが頻繁に切り換わることがない。また、一般的に、同一プロセスがアクセスするデータはディスク上の近い位置に存在している。従って、ディスクヘッドのシーク時間が短くなり、その分、単位時間あたりのデータ転送速度であるスループットが増加する。その一方で、あるプロセスからの全てのディスクアクセス要求の処理が終了するまで、次のプロセスは待機する必要がある。つまり、後のプロセスほど待ち時間は長くなり、タイムアウトが発生する可能性が高くなる。この傾向は、同時に動作するプロセスの数が多くなるほど、また、１つのプロセスが発行するディスクアクセス要求の数が多くなるほど、強くなる。このように、規則（２）の場合、スループットは向上するが、待ち時間が長くなる。
【００１２】
本願発明者は次の点に着目した。実際のシステム運用においては、各プロセスの待ち時間は最小である必要はなく、多くの場合、各プロセスは予め定められた時間（例えば、アプリケーションのタイムアウトが発生しない時間）内に処理を開始すればよい。つまり、所定の時間内に、各プロセスは少なくとも１回ディスクアクセスを行えばよい。このような条件の下で、スループットを可能な限り大きくすることが望まれる。
【００１３】
本発明の１つの目的は、所定の時間内に全てのプロセスがディスクアクセスを少なくとも１回実行するという条件の下で、スループットをできるだけ大きくすることができるスケジューリング技術を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の観点において、Ｉ／Ｏスケジューラが提供される。Ｉ／Ｏスケジューラは、複数のプロセスがディスクにアクセスする際に、それぞれのプロセスから発行されるディスクアクセス要求のスケジューリング処理をコンピュータに実行させる。そのスケジューリング処理は、（Ａ）複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及びディスクに記録されているファイルの位置を示すファイル位置情報を、記憶装置から読み出すステップと、（Ｂ）複数のプロセスからのディスクアクセス要求を、複数の待ちキューのそれぞれに格納するステップと、（Ｃ）プロセス特性情報及びファイル位置情報を参照し、アクセス対象ファイルがディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される複数の待ちキューの順番を決定するステップと、（Ｄ）所定の時間内に複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、当該所定の時間内に複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定するステップと、（Ｅ）上記決定された順番及び数に従って、複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求をディスクに送るステップと、を含む。
【００１５】
本発明の第２の観点において、複数のプロセスがディスクにアクセスする際に、それぞれのプロセスから発行されるディスクアクセス要求のスケジューリング処理を行うＩ／Ｏスケジューリング方法が提供される。そのＩ／Ｏスケジューリング方法は、（Ａ）複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及びディスクに記録されているファイルの位置を示すファイル位置情報を、記憶装置から読み出すステップと、（Ｂ）複数のプロセスからのディスクアクセス要求を、複数の待ちキューのそれぞれに格納するステップと、（Ｃ）プロセス特性情報及びファイル位置情報を参照し、アクセス対象ファイルがディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される複数の待ちキューの順番を決定するステップと、（Ｄ）所定の時間内に複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、当該所定の時間内に複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定するステップと、（Ｅ）上記決定された順番及び数に従って、複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求をディスクに送るステップと、を含む。
【００１６】
本発明の第３の観点において、計算機システムが提供される。計算機システムは、ディスクと、そのディスクにアクセスする複数のプロセスを実行する処理装置と、Ｉ／Ｏスケジューラと、記憶装置とを備える。記憶装置には、複数のプロセスのそれぞれがアクセスするアクセス対象ファイルを示すプロセス特性情報、及びディスクに記録されているファイルの位置を示すファイル位置情報が格納される。Ｉ／Ｏスケジューラは、処理装置によって実行され、複数のプロセスのそれぞれから発行されるディスクアクセス要求のスケジューリング処理を行う。より詳細には、Ｉ／Ｏスケジューラは、複数のプロセスからのディスクアクセス要求を複数の待ちキューのそれぞれに格納する。Ｉ／Ｏスケジューラは、プロセス特性情報及びファイル位置情報を参照し、アクセス対象ファイルがディスク上の並び順で順番にアクセスされるように、ディスクアクセス要求が取り出される複数の待ちキューの順番を決定する。Ｉ／Ｏスケジューラは、所定の時間内に複数のプロセスの全てが少なくとも１回ディスクアクセスを行うように、所定の時間内に複数の待ちキューのそれぞれから取り出されるディスクアクセス要求の数を決定する。そして、Ｉ／Ｏスケジューラは、決定された順番及び数に従って、複数の待ちキューからディスクアクセス要求を取得し、取得したディスクアクセス要求をディスクに送る。
【発明の効果】
【００１７】
本発明のスケジューリング技術によれば、所定の時間内に全てのプロセスがディスクアクセスを少なくとも１回実行するという条件の下で、スループットをできるだけ大きくすることが可能となる。
【発明を実施するための最良の形態】
【００１８】
添付図面を参照して、本発明の実施の形態に係る計算機システム及びＩ／Ｏスケジューラを説明する。
【００１９】
１．計算機システム
図２は、本発明の実施の形態に係る計算機システム（コンピュータシステム）１の構成の一例を示している。計算機システム１は、処理装置２、記憶装置３、ディスク４、入力装置５及び出力装置６を備えている。処理装置２は、１つあるいは複数のＣＰＵを含んでいる。記憶装置３は例えばＲＡＭ（Random Access Memory）である。ディスク４は例えば複数のファイルが記録されたＨＤＤ（Hard Disk Drive）である。ディスク４は、ネットワークを介して複数の計算機システム１で共有されていてもよい。入力装置５は例えばキーボードやマウスである。出力装置６は例えばディスプレイである。計算機システム１は、仮想化技術によって構築されていてもよい。
【００２０】
処理装置２は、ＯＳの他、様々なアプリケーションを実行する。このとき、処理装置２は、ＯＳやアプリケーション等により発生するプロセスを実行する。多くのプロセスは、ディスク４へのアクセス処理（データ読み込み、データ書き込み）を必要とし、ディスクアクセス要求をＯＳ内のＩ／Ｏスケジューラ１０に発行する。Ｉ／Ｏスケジューラ１０は、処理装置２によって実行されるプログラムの一種であり、複数のプロセスのそれぞれから発行されるディスクアクセス要求のスケジューリング処理を行う。尚、ＯＳやＩ／Ｏスケジューラ１０は、ディスク４やコンピュータ読み取り可能な記録媒体に記録されている。そして、ＯＳやＩ／Ｏスケジューラ１０は、記憶装置３に読み出され、処理装置２によって実行される。
【００２１】
後に詳しく説明されるように、本実施の形態に係るＩ／Ｏスケジューラ１０は、所定の時間内に全てのプロセスがディスクアクセスを少なくとも１回実行するという条件の下で、スループットができるだけ大きくなるようにスケジューリング処理を行う。そのために、Ｉ／Ｏスケジューラ１０は、プロセス特性情報ＰＲＯＣ、ファイル位置情報ＬＯＣ、シーク時間情報ＳＥＫ、アクセス時間情報ＡＣＳ等を利用する。それらプロセス特性情報ＰＲＯＣ、ファイル位置情報ＬＯＣ、シーク時間情報ＳＥＫ及びアクセス時間情報ＡＣＳは、記憶装置３に格納される。まず、各情報の詳細を説明する。
【００２２】
（プロセス特性情報ＰＲＯＣ）
図３は、プロセス特性情報ＰＲＯＣの一例を示している。プロセス特性情報ＰＲＯＣは、それぞれのプロセスがアクセスするディスク４上のファイル（アクセス対象ファイル）を示している。例えば図３の例では、プロセス特性情報ＰＲＯＣは、複数のプロセスＰ１〜Ｐ４がそれぞれ複数のファイルＦ１〜Ｆ４へアクセスすることを示している。プロセス特性情報ＰＲＯＣは、プロセス（Ｐ１〜Ｐ４）とアクセス対象ファイル（Ｆ１〜Ｆ４）との対応関係を示しているとも言える。このプロセス特性情報ＰＲＯＣを参照することによって、Ｉ／Ｏスケジューラ１０は、各プロセスがディスク４上のどのアクセス対象ファイルにアクセスするか把握することができる。
【００２３】
（ファイル位置情報ＬＯＣ）
図４Ａ及び図４Ｂは、ファイル位置情報ＬＯＣの例を示している。ファイル位置情報ＬＯＣは、ディスク４に記録されているファイルの位置を示す情報である。図４Ａの例では、ファイル名、開始位置及び終了位置の対応関係がファイル毎に示されている。図４Ｂの例では、ファイル名、開始位置及びファイルサイズの対応関係がファイル毎に示されている。図４Ｂの場合、各ファイルの終了位置は、開始位置とファイルサイズから求めることができる。このファイル位置情報ＬＯＣを参照することによって、Ｉ／Ｏスケジューラ１０は、ディスク４上のファイルの配置関係及びファイル間の距離を計算することができる。尚、図４Ａ及び図４Ｂで示された例では、ファイル位置を表す単位として、ディスク４の先頭からのバイト数が用いられているが、それに限られない。ファイル位置は、ディスク４の先頭からのシリンダ数などで表されてもよい。
【００２４】
（シーク時間情報ＳＥＫ）
図５Ａ及び図５Ｂは、シーク時間情報ＳＥＫの例を示している。シーク時間情報ＳＥＫは、ディスク４上でヘッドが移動する距離である「シーク距離」とその移動時間である「シーク時間」との対応関係を示す情報である。図５Ａは、その対応関係ｙ＝ｆ（ｘ）を示すグラフである。図５Ａにおいて、横軸はシーク距離ｘを表し、縦軸はシーク時間ｙを表している。あるいは、図５Ｂに示されるように、シーク時間情報ＳＥＫは、シーク距離とシーク時間との対応関係をテーブル形式で与えてもよい。図５Ｂによれば、例えば、シーク距離が０．５ＧＢｙｔｅのときにシーク時間は８．０ミリ秒であり、シーク距離が６４ＧＢｙｔｅのときにシーク時間は１７．５ミリ秒であることがわかる。テーブルのエントリに直接示されていないシーク距離に対応するシーク時間は、エントリ間を補間すること等によって算出することができる。尚、シーク距離は、バイト数だけでなくシリンダ数でも表され得る。
【００２５】
（アクセス時間情報ＡＣＳ）
図６Ａ及び図６Ｂは、アクセス時間情報ＡＣＳの例を示している。アクセス時間情報ＡＣＳは、アクセスされるデータサイズとそのアクセスに要する時間の関係を示す情報である。ディスクアクセスにはデータ読み出しとデータ書き込みがあり、それぞれに対してアクセス時間情報ＡＣＳが定義され得る。例えばデータ読み出しの場合、アクセス時間情報ＡＣＳは、「読み出しデータサイズ」とその読み出し動作に要する「読み出し時間」との対応関係を示す。図６Ａは、その対応関係ｙ＝ｇ（ｘ）を示すグラフである。図６Ａにおいて、横軸は読み出しデータサイズｘを表し、縦軸は読み出し時間ｙを表している。あるいは、図６Ｂに示されるように、アクセス時間情報ＡＣＳは、読み出しデータサイズと読み出し時間との対応関係をテーブル形式で与えてもよい。図６Ｂによれば、例えば、読み出しデータサイズが４ｋＢのときに読み出し時間は０．１０ミリ秒であり、読み出しデータサイズが１２８ｋＢのときに読み出し時間は３．２ミリ秒であることがわかる。テーブルのエントリに直接示されていない読み出しデータサイズに対応する読み出し時間は、エントリ間を補間すること等によって算出することができる。
【００２６】
２．Ｉ／Ｏスケジューラ
本実施の形態に係るＩ／Ｏスケジューラ１０は、上述の情報を適宜利用することによって、スケジューリング処理を行う。このスケジューリング処理において、次の点が留意される。第一に、本実施の形態では、プロセスのディスクアクセスに対して所定のレスポンスタイム（以下、「要求ピリオドＴｐｒｄ」と参照される）が要求される。全てのプロセスは、その要求ピリオドＴｐｒｄ内に少なくとも１回ディスクアクセスを行うことが要求される。要求ピリオドＴｐｒｄは、システム効率が劣化しない範囲でユーザにより適宜設定され得る。例えば、要求ピリオドＴｐｒｄは、計算機システム１が実行するアプリケーションのタイムアウト時間以下に設定される。第二に、それぞれのプロセスのディスクアクセスに関するスループットの合計ができるだけ大きくなるように、スケジューリングが行われる。すなわち、本実施の形態に係るＩ／Ｏスケジューラ１０は、要求ピリオドＴｐｒｄ内に全てのプロセスがディスクアクセスを少なくとも１回実行するという条件の下で、スループットができるだけ大きくなるようにスケジューリング処理を行う。
【００２７】
２−１．概要
図７に示されるように、複数のプロセスＰ１〜Ｐ４がＩ／Ｏスケジューラ１０を介してディスクアクセスを行う場合を考える。複数のプロセスＰ１〜Ｐ４は、ディスク４に記録された複数のファイルＦ１〜Ｆ４のそれぞれにアクセスする。このとき、それぞれのプロセスＰ１〜Ｐ４はディスクアクセス要求をＩ／Ｏスケジューラ１０に発行する。Ｉ／Ｏスケジューラ１０は、プロセスＰ１〜Ｐ４のそれぞれから発行されるディスクアクセス要求のスケジューリング処理を行う。
【００２８】
Ｉ／Ｏスケジューラ１０は、ディスクアクセス要求を一時的に保持しておく複数の待ちキューＱ１〜Ｑ４を有している。待ちキューはプロセス毎に割り当てられており、図７の例では、待ちキューＱ１〜Ｑ４がそれぞれプロセスＰ１〜Ｐ４に割り当てられている。つまり、プロセスＰ１〜Ｐ４からのディスクアクセス要求は、待ちキューＱ１〜Ｑ４のそれぞれに一旦格納される。
【００２９】
更に、Ｉ／Ｏスケジューラ１０は、プロセスモニタ部２０、スケジューリング決定部３０、及びリクエスト選択部４０を有している。プロセスモニタ部２０は、動作中のプロセスをモニタし、プロセスの情報を取得する機能を有する。スケジューリング決定部３０は、ディスクアクセス要求が取り出される待ちキューの順番や、各待ちキューから取り出すべきディスクアクセス要求の数を決定する機能を有する。リクエスト選択部４０は、決定された順番及び数に従って、待ちキューからディスクアクセス要求を取得し、取得したものを順次ディスク４へ送る機能を有する。
【００３０】
図８は、本実施の形態に係るスケジューリング処理を示すフローチャートである。図７及び図８を参照して、本実施の形態に係るスケジューリング処理を説明する。
【００３１】
（ステップＳ１０）
スケジューリング決定部３０は、プロセス特性情報ＰＲＯＣ、ファイル位置情報ＬＯＣ、シーク時間情報ＳＥＫ及びアクセス時間情報ＡＣＳを、記憶装置３から読み出す。また、ＯＳは、予め設定されている要求ピリオドＴｐｒｄの情報をスケジューリング決定部３０に与える。要求ピリオドＴｐｒｄは、全てのプロセスＰ１〜Ｐ４で共通であるとする。
【００３２】
（ステップＳ２０）
Ｉ／Ｏスケジューラ１０は、プロセスＰ１〜Ｐ４のそれぞれからのディスクアクセス要求を、待ちキューＱ１〜Ｑ４のそれぞれに一旦格納する。また、プロセスモニタ部２０は、動作中のプロセスＰ１〜Ｐ４をモニタし、それらプロセスＰ１〜Ｐ４の情報を取得する。取得する情報としては、プロセス番号やプロセス名が挙げられる。例えば、ＯＳがＬｉｎｕｘの場合、ｐｓコマンドを利用することによって、プロセス番号やプロセス名を取得することができる。
【００３３】
（ステップＳ３０）
スケジューリング決定部３０は、要求ピリオドＴｐｒｄ内のスケジューリング規則を示す「スケジューリングパラメータ」を決定する。スケジューリングパラメータには、ディスクアクセス要求が取り出される待ちキューＱ１〜Ｑ４の順番や、要求ピリオドＴｐｒｄ内に待ちキューＱ１〜Ｑ４のそれぞれから取り出すべきディスクアクセス要求の数Ａｉが含まれる。ここで、添え字ｉは、待ちキューＱ１〜Ｑ４、すなわち、プロセスＰ１〜Ｐ４のそれぞれを示す。本実施の形態によれば、スケジューリング決定部３０は、要求ピリオドＴｐｒｄ内に全プロセスＰ１〜Ｐ４が少なくとも１回ディスクアクセスを行い、且つ、プロセスＰ１〜Ｐ４のそれぞれに関するスループットの合計ができるだけ大きくなるように、スケジューリングパラメータを決定する。その詳細は後述される。
【００３４】
（ステップＳ４０）
リクエスト選択部４０は、スケジューリング決定部３０によって決定されたスケジューリングパラメータに従って、それぞれの待ちキューＱ１〜Ｑ４からのディスクアクセス要求の選択及び出力を行う。つまり、リクエスト選択部４０は、スケジューリングパラメータで示される順番に従って待ちキュー（ｉ＝Ｑ１〜Ｑ４）を１つずつ選択し、且つ、選択中の１つの待ちキューｉからはスケジューリングパラメータで示される数Ａｉだけディスクアクセス要求を取り出す。そして、リクエスト選択部４０は、取り出したディスクアクセス要求を順次ディスク４に送る。
【００３５】
ディスクアクセス要求に応答して、ディスク４ではアクセス対象ファイルに対するデータ読み出しあるいはデータ書き込みが行われる。そして、その結果が、当該ディスクアクセス要求を発行したプロセスに返される。本実施の形態では、要求ピリオドＴｐｒｄの間に、全てのプロセスＰ１〜Ｐ４が少なくとも１回ディスクアクセスを行う。
【００３６】
要求ピリオドＴｐｒｄ毎に、ステップＳ４０は繰り返される。いずれかの待ちキューに蓄積されたディスクアクセス要求が無くなると、処理はステップＳ２０に戻る。また、上述のプロセスモニタ部２０は、動作中のプロセスのモニタを継続している。動作中のプロセスが増減すると、処理はステップＳ２０に戻る。
【００３７】
２−２．スケジューリングパラメータの決定（ステップＳ３０）
次に、上述のステップＳ３０を詳しく説明する。図９は、本実施の形態におけるスケジューリングパラメータの決定方法を示すフローチャートである。
【００３８】
（ステップＳ３１０）
まず、スケジューリング決定部３０は、要求ピリオドＴｐｒｄにおいてディスクアクセス要求が取り出される待ちキューの順番を決定する。要求ピリオドＴｐｒｄにおけるスループットを増加させるためには、その要求ピリオドＴｐｒｄ中でアクセス対象ファイル間のシークにとられる時間をできるだけ削減することが望ましい。そのためには、要求ピリオドＴｐｒｄにおけるアクセス対象ファイル間のシーク距離の合計をできるだけ小さくすることが望ましい。よって、スケジューリング決定部３０は、アクセス対象ファイル間のシーク距離の合計がなるべく小さくなるように順番を決定する。
【００３９】
スケジューリング決定部３０は、プロセスモニタ部２０から動作中のプロセスＰ１〜Ｐ４の情報（例：プロセス名）を受け取る。そして、スケジューリング決定部３０は、プロセス特性情報ＰＲＯＣを参照することにより、動作中のプロセスＰ１〜Ｐ４のそれぞれがアクセスするアクセス対象ファイルＦ１〜Ｆ４を把握する。更に、スケジューリング決定部３０は、ファイル位置情報ＬＯＣを参照することにより、アクセス対象ファイルＦ１〜Ｆ４のディスク４上での配置関係を把握する。そして、スケジューリング決定部３０は、アクセス対象ファイルＦ１〜Ｆ４がディスク４上の“並び順（配置順）”で順番にアクセスされるように、ディスクアクセス要求が取り出される待ちキューＱ１〜Ｑ４の順番を決定する。
【００４０】
例えば、図４Ａ及び図４Ｂで示されたファイル位置情報ＬＯＣの例の場合、アクセス対象ファイルＦ１〜Ｆ４は、ディスク４の先頭から「Ｆ１、Ｆ２、Ｆ３、Ｆ４」の順番で配置されている。従って、図１０Ａに示されるように、アクセス対象ファイルＦ１〜Ｆ４が「Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ１」の順番でアクセスされる場合に、シーク距離の合計が最も小さくなる。しかしながら、図１０Ｂに示されるように、アクセス対象ファイルＦ１〜Ｆ４が「Ｆ１、Ｆ４、Ｆ２、Ｆ３、Ｆ１」といった順番でアクセスされると、シーク距離の合計は大きくなってしまう。上述の通り、スループットを大きくするためには、アクセス対象ファイルＦ１〜Ｆ４間のシーク距離の合計はなるべく小さいことが望ましい。従って、アクセス対象ファイルＦ１〜Ｆ４のアクセス順としては、図１０Ａで示されたような順番が好適である。あるいは、図１０Ａと逆の順番「Ｆ４、Ｆ３、Ｆ２、Ｆ１、Ｆ４」であっても同じである。いずれにせよ、アクセス対象ファイルＦ１〜Ｆ４のアクセス順としては、ディスク４上の“並び順（配置順）”に沿っていることが望ましい。
【００４１】
スケジューリング決定部３０は、要求ピリオドＴｐｒｄにおいて図１０Ａで示されたようなアクセス順が再現されるように、ディスクアクセス要求が取り出される待ちキューＱ１〜Ｑ４の順番を決定する。すなわち、本例では、取り出し順は、「Ｑ１、Ｑ２、Ｑ３、Ｑ４」あるいは「Ｑ２、Ｑ３、Ｑ４、Ｑ１」あるいは「Ｑ３、Ｑ４、Ｑ１、Ｑ２」あるいは「Ｑ４、Ｑ３、Ｑ２、Ｑ１」と決定される。これにより、要求ピリオドＴｐｒｄ中でアクセス対象ファイルＦ１〜Ｆ４間のシークに割かれる時間が極力抑えられ、データ読み出しあるいはデータ書き込みに割り当て可能な時間が増えることになる。このことは、要求ピリオドＴｐｒｄにおけるスループットの合計が増加することを意味する。
【００４２】
尚、例えば図１０Ａに示されるように、アクセス対象ファイルＦ１〜Ｆ４に対するアクセスは、要求ピリオドＴｐｒｄでちょうど一巡する。図１０Ａの例では、１回の要求ピリオドＴｐｒｄにおいて、ディスクヘッドはファイルＦ１の位置からファイルＦ４の位置まで順次移動した後、最初のファイルＦ１の位置まで戻る。つまり、アクセス対象ファイルＦ１〜Ｆ４に対するアクセスは循環的に行われ、要求ピリオドＴｐｒｄ毎に同じ動作が繰り返される。
【００４３】
（ステップＳ３２０）
次に、スケジューリング決定部３０は、ステップＳ３１０で決定された順番でディスクアクセス要求が取り出された場合の、アクセス対象ファイルＦ１〜Ｆ４間のシーク距離（ファイル間シーク距離）を算出する。つまり、スケジューリング決定部３０は、要求ピリオドＴｐｒｄにおいて上記決定順でアクセス対象ファイルＦ１〜Ｆ４にアクセスが発生した場合の、ファイル間シーク距離を算出する。プロセスＰ１〜Ｐ４のそれぞれのアクセス対象ファイルＦ１〜Ｆ４はプロセス特性情報ＰＲＯＣに示されており、それらアクセス対象ファイルＦ１〜Ｆ４のディスク４上の位置はファイル位置情報ＬＯＣに示されている。従って、その情報を参照することによりファイル間シーク距離を計算することができる。
【００４４】
各ファイルはディスク４上でファイルサイズ分の幅を有しているため、ファイル間シーク距離の算出にあたって、各ファイルの代表位置を決定する必要がある。その代表位置としては、各ファイルの開始位置、終了位置、あるいは開始位置と終了位置との中間位置などが挙げられる。例えば中間位置が代表位置として用いられる場合、あるファイルの中間位置と次にアクセスされるファイルの中間位置との間の距離が、ファイル間シーク距離として算出される。
【００４５】
図１０Ａで示された例の場合を考える。この場合、要求ピリオドＴｐｒｄにおけるアクセス順は「Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ１」である。従って、ファイルＦ１とＦ２の間のシーク距離Ｌ１２、ファイルＦ２とＦ３の間のシーク距離Ｌ２３、ファイルＦ３とＦ４の間のシーク距離Ｌ３４、及びファイルＦ４とＦ１の間のシーク距離Ｌ４１が算出される。
【００４６】
（ステップＳ３３０）
次に、スケジューリング決定部３０は、シーク時間情報ＳＥＫ（図５Ａ、図５Ｂ参照）を参照することによって、ステップＳ３２０で算出されたファイル間シーク距離に対応するファイル間シーク時間を算出する。図５Ａで示されたような関数ｙ＝ｆ（ｘ）が用いられる場合、変数ｘにファイル間シーク距離を代入することによって、対応するファイル間シーク時間ｙを得ることができる。図５Ｂで示されたようなテーブルが用いられる場合、エントリ間を補間することによって、ファイル間シーク距離に対応するファイル間シーク時間を得ることができる。
【００４７】
図１０Ａで示された例の場合、上述のファイル間シーク距離Ｌ１２、Ｌ２３、Ｌ３４及びＬ４１のそれぞれに対応するファイル間シーク時間Ｔ１２、Ｔ２３、Ｔ３４及びＴ４１が算出される。算出されたファイル間シーク時間は、要求ピリオドＴｐｒｄ中でアクセス対象ファイルＦ１〜Ｆ４間のシークに割かれる時間に相当する。ステップＳ３１０で説明された順番決めの工夫の結果、ファイル間シーク時間の総和（Ｔ１２＋Ｔ２３＋Ｔ３４＋Ｔ４１）は最小限に抑えられている。その分、各ファイルでのデータ読み出しあるいはデータ書き込みに割り当て可能な時間が増えることになる。このことは、要求ピリオドＴｐｒｄにおけるスループットの合計が増加することを意味する。
【００４８】
（ステップＳ３４０）
次に、スケジューリング決定部３０は、ステップＳ３３０で算出されたファイル間シーク時間のそれぞれを要求ピリオドＴｐｒｄから引くことによって、「残り時間Ｔｒｓｔ」を算出する。図１０Ａで示された例の場合、残り時間Ｔｒｓｔは、Ｔｐｒｄ−（Ｔ１２＋Ｔ２３＋Ｔ３４＋Ｔ４１）と算出される。この残り時間Ｔｒｓｔは、アクセス対象ファイルでのデータ読み出しあるいはデータ書き込みに利用可能な時間に相当する。上述の通り、ファイル間シーク時間の総和は最小限に抑えられているため、残り時間Ｔｒｓｔとして最大限の時間が確保される。
【００４９】
ステップＳ３４０の処理は、データ読み出しあるいはデータ書き込みに割り当て可能な残り時間Ｔｒｓｔを見積もることだけでなく、要求ピリオドＴｐｒｄ中で全てのファイル間シーク動作に必要な時間をあらかじめ確保しておくことにも相当する。全てのファイル間シーク動作に必要な時間が確保されることは、全てのプロセスＰ１〜Ｐ４が要求ピリオドＴｐｒｄ内に少なくとも１回ディスクアクセスを行うことが可能となることを意味する。言い換えれば、ステップＳ３４０によって、全てのプロセスＰ１〜Ｐ４が要求ピリオドＴｐｒｄ内に少なくとも１回ディスクアクセスを行うことが保証される。
【００５０】
（ステップＳ３５０）
以上に説明されたように、ステップＳ３１０での順番決めにより、要求ピリオドＴｐｒｄにおけるスループットの合計の向上が期待される。また、ステップＳ３４０での残り時間Ｔｒｓｔの算出により、全てのプロセスＰ１〜Ｐ４が要求ピリオドＴｐｒｄ内に少なくとも１回ディスクアクセスを行うことが保証される。後は、スケジューリング決定部３０が、残り時間ＴｒｓｔをプロセスＰ１〜Ｐ４間で適宜分配すればよい。それぞれのプロセスＰ１〜Ｐ４に分配される時間に基づいて、残り時間Ｔｒｓｔ（すなわち要求ピリオドＴｐｒｄ）内にそれぞれの待ちキューＱ１〜Ｑ４から取り出すことができるディスクアクセス要求の数Ａｉを決定することができる。その方法としては様々考えられる。
【００５１】
＜第１の例＞
例えば、ディスクアクセス要求の取得数Ａｉは複数のプロセスＰ１〜Ｐ４間で均等になるように決定される。そのために、スケジューリング決定部３０は例えば次のような処理を行う。ディスクアクセスがデータ読み出しの場合を例示するが、データ書き込みの場合も同様である。
【００５２】
あるプロセスｉが１回のディスクアクセス要求によってアクセス対象ファイルから読み出すデータサイズはＤａｃｓ＿ｉであるとする。この１回の読み出しデータサイズＤａｃｓ＿ｉは、ユーザによって与えられてもよいし、システムで予め決まっていてもよい。また、読み出しデータサイズＤａｃｓ＿ｉは、プロセス間で同じであってもよいし異なっていてもよい。
【００５３】
スケジューリング決定部３０は、アクセス時間情報ＡＣＳ（図６Ａ、図６Ｂ参照）を参照することによって、１回の読み出しデータサイズＤａｃｓ＿ｉに対応する読み出し時間Ｔａｃｓ＿ｉを算出する。図６Ａで示されたような関数ｙ＝ｇ（ｘ）が用いられる場合、変数ｘに読み出しデータサイズＤａｃｓ＿ｉを代入することによって、対応する読み出し時間Ｔａｃｓ＿ｉを得ることができる。図６Ｂで示されたようなテーブルが用いられる場合、エントリ間を補間することによって、読み出しデータサイズＤａｃｓ＿ｉに対応する読み出し時間Ｔａｃｓ＿ｉを得ることができる。また、スケジューリング決定部３０は、シーク時間情報ＳＥＫ（図５Ａ、図５Ｂ参照）を参照することによって、アクセス対象ファイルの中で読み出しデータ間を移動するのに要するファイル内シーク時間Ｔｓｅｋ＿ｉを算出する。このファイル内シーク時間Ｔｓｅｋ＿ｉは、１回の読み出しデータサイズＤａｃｓ＿ｉに対応する１回のシーク時間である。
【００５４】
上記読み出し時間Ｔａｃｓ＿ｉ及びファイル内シーク時間Ｔｓｅｋ＿ｉの和（Ｔａｃｓ＿ｉ＋Ｔｓｅｋ＿ｉ）は、あるプロセスｉからの１回のディスクアクセス要求の処理に必要な時間に相当する。従って、各プロセスｉに関して、残り時間Ｔｒｓｔ内に待ちキューから取り出すことができるディスクアクセス要求の数Ａｉは、次の式（１）で与えられ得る。
【００５５】
【数１】
2009199367.tif 000003
【００５６】
式（１）において、Ｎは動作中のプロセスＰ１〜Ｐ４の全体を意味する。よって、式（１）の分母は、全てのプロセスＰ１〜Ｐ４からのディスクアクセス要求を１回ずつ処理するのに必要な時間の総和を表す。残り時間Ｔｒｓｔをその総和で割ることによって、各プロセスｉに関するディスクアクセス要求の取得数Ａｉを算出することができる。この場合、取得数ＡｉはプロセスＰ１〜Ｐ４間で等しくなる。尚、実際には取得数Ａｉは整数である必要があるため、式（１）により求まる値の小数点以下を切り捨てることにより取得数Ａｉが決定される。
【００５７】
＜第２の例＞
プロセスＰ１〜Ｐ４のそれぞれに要求されるスループットに対して“重み”が与えられている場合を考える。この場合、得られるスループットにその重み付けが反映されるように、ディスクアクセス要求の取得数Ａｉを決定することが可能である。プロセスＰ１〜Ｐ４のそれぞれに要求されるスループットの重み付けを指定するパラメータは、以下「重み付けパラメータ」と参照される。重み付けパラメータは、例えばプロセス特性情報ＰＲＯＣに含まれる。
【００５８】
図１１は、本例におけるプロセス特性情報ＰＲＯＣを示している。図１１において、プロセス特性情報ＰＲＯＣは、プロセスＰ１〜Ｐ４のそれぞれに関するアクセス対象ファイルＦ１〜Ｆ４に加えて、重み付けパラメータを示している。本例では、重み付けパラメータは、要求スループットの「重み係数」である。重み係数は、それぞれのプロセスＰ１〜Ｐ４に要求されるスループット間の比率である。例えば、プロセスＰ１、Ｐ２に指定された重み係数がそれぞれ１と２である場合、プロセスＰ２にはプロセスＰ１の２倍のスループットが要求されている。
【００５９】
スケジューリング決定部３０は、この重み係数に応じて残り時間Ｔｒｓｔを分配し、得られるスループットにその重み係数が反映されるようにディスクアクセス要求の取得数Ａｉを決定する。具体的には、既出の第１の例と同様に、スケジューリング決定部３０は、１回あたりの読み出し時間Ｔａｃｓ＿ｉ及びファイル内シーク時間Ｔｓｅｋ＿ｉを算出する。また、スケジューリング決定部３０は、プロセス特性情報ＰＲＯＣを参照し、それぞれのプロセスＰ１〜Ｐ４に指定された重み係数Ｗｉを取得する。この場合、ディスクアクセス要求の取得数Ａｉは、次の式（２）で与えられる。
【００６０】
【数２】
2009199367.tif 000004
【００６１】
実際には取得数Ａｉは整数である必要があるため、式（２）により求まる値の小数点以下を切り捨てることにより取得数Ａｉが決定される。尚、式（２）により求まる値が１未満となるプロセスがある場合、そのプロセスに関する取得数を１とし、代わりに他のプロセスに関する２以上の取得数から１だけ減算する。減算対象として取得数が最大であるプロセスを選択すると、当該プロセスに割り当てられるスループットの減少率が小さいため、影響を小さく抑えることができる。このような処理によっても全てのプロセスに関する取得数が１以上にならない場合、Ｉ／Ｏスケジューラ１０はエラーを管理者に通知することもできる。
【００６２】
＜第３の例＞
要求スループットの重み付けは、上記重み係数に限られない。例えば、プロセスＰ１〜Ｐ４の中に、要求スループットが優先的に与えられる「優先プロセス」と、要求スループットがベストエフォートで与えられる「ベストエフォートプロセス」が混在する場合を考える。この場合、優先プロセスかベストエフォートプロセスかの区分けが、要求スループットの重み付けに相当することになる。
【００６３】
図１２は、本例におけるプロセス特性情報ＰＲＯＣを示している。図１２において、プロセス特性情報ＰＲＯＣは、プロセスＰ１〜Ｐ４のそれぞれに関するアクセス対象ファイルＦ１〜Ｆ４に加えて、重み付けパラメータを示している。本例では、重み付けパラメータは、各プロセスが優先プロセスかベストエフォートプロセスかを示す「クラス」と、優先プロセスに関する「要求スループット」と、ベストエフォートプロセスに関する要求スループットの「重み係数」とを含んでいる。優先プロセスに関する要求スループットは、優先的に確保されるべきスループットである。重み係数は、ベストエフォートプロセスのそれぞれに要求されるスループット間の比率である。
【００６４】
スケジューリング決定部３０は、この重み付けパラメータに応じて残り時間Ｔｒｓｔを分配し、得られるスループットにその重み付けパラメータが反映されるようにディスクアクセス要求の取得数Ａｉを決定する。図１３を参照して、本例におけるステップＳ３５０の処理を詳しく説明する。
【００６５】
（ステップＳ３５１）
スケジューリング決定部３０は、プロセス特性情報ＰＲＯＣを参照し、まず優先プロセスｋに関してディスクアクセス要求の取得数Ａｋを決定する。ここで、添え字ｋは、プロセスＰ１〜Ｐ４に含まれる優先プロセスを示す。図１２の例の場合、プロセスＰ１、Ｐ２が優先プロセスｋである。プロセス特性情報ＰＲＯＣにおいて、優先プロセスｋに指定された要求スループットはＢｋであるとする。また、優先プロセスｋが１回のディスクアクセス要求によってアクセス対象ファイルから読み出すデータサイズはＤａｃｓであるとする。この１回の読み出しデータサイズＤａｃｓは、ユーザによって与えられてもよいし、システムで予め決まっていてもよい。この場合、スケジューリング決定部３０は、次の式（３）に従って、優先プロセスｋに関する取得数Ａｋを算出する。
【００６６】
【数３】
2009199367.tif 000005
【００６７】
式（３）において、分子は、要求ピリオドＴｐｒｄ内に優先プロセスｋが要求するデータ量を表す。この要求データ量を１回の読み出しデータサイズＤａｃｓで割ることにより、要求スループットＢｋを実現するために必要な取得数Ａｋを算出することができる。つまり、スケジューリング決定部３０は、優先プロセスｋに関して、要求スループットＢｋが得られるようにそれぞれの待ちキューからの取得数Ａｋを決定する。尚、実際には取得数Ａｋは整数である必要があるため、式（３）により求まる値の小数点以下を切り捨てることにより取得数Ａｋが決定される。
【００６８】
（ステップＳ３５２）
次に、スケジューリング決定部３０は、上記ステップＳ３５１で決定された取得数Ａｋに基づいて、その取得数Ａｋのディスクアクセス要求の処理に必要な時間を算出する。そして、スケジューリング決定部３０は、算出された時間を残り時間Ｔｒｓｔから引くことによって、新たな残り時間Ｔｒｓｔ’を算出する。具体的には、新たな残り時間Ｔｒｓｔ’は、次の式（４）で与えられる。
【００６９】
【数４】
2009199367.tif 000006
【００７０】
式（４）において、Ｔａｃｓ＿ｋ及びＴｓｅｋ＿ｋはそれぞれ、優先プロセスｋに関する１回あたりの読み出し時間及びファイル内シーク時間である。１回あたりの読み出し時間Ｔａｃｓ＿ｋ及びファイル内シーク時間Ｔｓｅｋ＿ｋは、既出の第１の例と同様に、アクセス時間情報ＡＣＳとシーク時間情報ＳＥＫを参照することによって算出可能である。
【００７１】
式（４）で示された処理によって、取得数Ａｋのディスクアクセス要求の処理に必要な時間があらかじめ確保される。すなわち、要求ピリオドＴｐｒｄにおいて優先プロセスｋの要求スループットＢｋを実現するために必要な時間があらかじめ確保される。スケジューリング決定部３０は、優先プロセスｋ用の時間をあらかじめ確保することにより、残り時間Ｔｒｓｔを更新していると言える。そして、更新後の残り時間Ｔｒｓｔ’が、ベストエフォートプロセスに割り当て可能な時間となる。
【００７２】
（ステップＳ３５３）
後は、スケジューリング決定部３０が、プロセス特性情報ＰＲＯＣを参照して、更新後の残り時間Ｔｒｓｔ’をベストエフォートプロセスｊ間で分配すればよい。ここで、添え字ｊは、プロセスＰ１〜Ｐ４に含まれるベストエフォートプロセスを示す。図１２の例の場合、プロセスＰ３、Ｐ４がベストエフォートプロセスｊである。ベストエフォートプロセスＰ３、Ｐ４に分配される時間に基づいて、残り時間Ｔｒｓｔ’内にそれぞれの待ちキューＱ３、Ｑ４から取り出すことができるディスクアクセス要求の数Ａｊを決定することができる。
【００７３】
例えば図１２に示されるように、ベストエフォートプロセスに対して要求スループットの重み係数が指定されている場合を考える。この場合、スケジューリング決定部３０は、この重み係数に応じて残り時間Ｔｒｓｔ’を分配し、得られるスループットにその重み係数が反映されるように取得数Ａｊを決定する。具体的には、既出の第１の例と同様に、スケジューリング決定部３０は、１回あたりの読み出し時間Ｔａｃｓ＿ｊ及びファイル内シーク時間Ｔｓｅｋ＿ｊを算出する。また、スケジューリング決定部３０は、プロセス特性情報ＰＲＯＣを参照し、ベストエフォートプロセスｊに指定された重み係数Ｗｊを取得する。この場合、ベストエフォートプロセスｊに関する取得数Ａｊは、次の式（５）で与えられる。
【００７４】
【数５】
2009199367.tif 000007
【００７５】
式（５）は、既出の式（２）における残り時間Ｔｒｓｔを更新後の残り時間Ｔｒｓｔ’で置換し、対象をベストエフォートプロセスｊだけに限定したものに相当する。尚、実際には取得数Ａｊは整数である必要があるため、式（５）により求まる値の小数点以下を切り捨てることにより取得数Ａｊが決定される。
【００７６】
このように、スケジューリング決定部３０は、残り時間Ｔｒｓｔを優先プロセスとベストエフォートプロセスのそれぞれに別々に分配し、取得数Ａｋ、Ａｊを別々に算出する。取得数Ａｋ、Ａｊに従えば、優先プロセスｋに要求されるスループットが実現され、ベストエフォートプロセスｊに指定された要求スループットの比率が実現される。すなわち、それぞれのプロセスに関して得られるスループットに重み付けが反映されるように、取得数Ａｋ、Ａｊが決定されている。
【００７７】
以上に説明されたように、ステップＳ３５０では、スケジューリング決定部３０は、残り時間ＴｒｓｔをプロセスＰ１〜Ｐ４間で適宜分配することによって、それぞれのプロセスＰ１〜Ｐ４に関するディスクアクセス要求の取得数Ａｉを決定することができる。
【００７８】
ステップＳ３１０で決定された「順番」とステップＳ３５０で決定された「取得数Ａｉ」が、要求ピリオドＴｐｒｄ内のスケジューリング規則を示す「スケジューリングパラメータ」となる。スケジューリング決定部３０は、要求ピリオドＴｐｒｄ内に全プロセスＰ１〜Ｐ４が少なくとも１回ディスクアクセスを行い、且つ、プロセスＰ１〜Ｐ４のそれぞれに関するスループットの合計ができるだけ大きくなるように、スケジューリングパラメータを決定することができている。重み付けパラメータが与えられている場合には、スケジューリング決定部３０は、それぞれのプロセスＰ１〜Ｐ４に関するスループットにその重み付けが反映されるようにスケジューリングパラメータを決定することができる。
【００７９】
決定されたスケジューリングパラメータに従えば、全てのプロセスは所定の要求ピリオドＴｐｒｄ内に少なくとも１回ディスクアクセスを実行することができ、且つ、与えられた条件下でスループットは最大限大きくなる。つまり、アプリケーションのタイムアウト等の発生を防止しつつ、スループットを向上させることが可能となる。
【００８０】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【図面の簡単な説明】
【００８１】
【図１】図１は、本発明の課題を説明するためのＩ／Ｏスケジューラの概念図である。
【図２】図２は、本発明の実施の形態に係る計算機システムの構成例を示すブロック図である。
【図３】図３は、本実施の形態におけるプロセス特性情報の一例を示すテーブルである。
【図４Ａ】図４Ａは、本実施の形態におけるファイル位置情報の一例を示すテーブルである。
【図４Ｂ】図４Ｂは、本実施の形態におけるファイル位置情報の他の例を示すテーブルである。
【図５Ａ】図５Ａは、本実施の形態におけるシーク時間情報の一例を示すグラフである。
【図５Ｂ】図５Ｂは、本実施の形態におけるシーク時間情報の他の例を示すテーブルである。
【図６Ａ】図６Ａは、本実施の形態におけるアクセス時間情報の一例を示すグラフである。
【図６Ｂ】図６Ｂは、本実施の形態におけるアクセス時間情報の他の例を示すテーブルである。
【図７】図７は、本実施の形態に係るＩ／Ｏスケジューラの機能を概念的に示す機能ブロック図である。
【図８】図８は、本実施の形態に係るスケジューリング処理を示すフローチャートである。
【図９】図９は、本実施の形態におけるスケジューリングパラメータの決定方法を示すフローチャートである。
【図１０Ａ】図１０Ａは、アクセス対象ファイルに対するアクセス順序の一例を示す概念図である。
【図１０Ｂ】図１０Ｂは、アクセス対象ファイルに対するアクセス順序の他の例を示す概念図である。
【図１１】図１１は、本実施の形態におけるプロセス特性情報の他の例を示すテーブルである。
【図１２】図１２は、本実施の形態におけるプロセス特性情報の更に他の例を示すテーブルである。
【図１３】図１３は、本実施の形態におけるディスクアクセス要求の取得数の決定方法の一例を示すフローチャートである。
【符号の説明】
【００８２】
１    計算機システム
２    処理装置
３    記憶装置
４    ディスク
５    入力装置
６    出力装置
１０    Ｉ／Ｏスケジューラ
２０    プロセスモニタ部
３０    スケジューリング決定部
４０    リクエスト選択部
ＰＲＯＣ  プロセス特性情報
ＬＯＣ    ファイル位置情報
ＳＥＫ    シーク時間情報
ＡＣＳ    アクセス時間情報
Ａｉ    スケジューリングパラメータ
Ｔｐｒｄ  要求ピリオド
Ｔｒｓｔ  残り時間
【図１】
2009199367.tif 000008
【図２】
2009199367.tif 000009
【図３】
2009199367.tif 000010
【図４Ａ】
2009199367.tif 000011
【図４Ｂ】
2009199367.tif 000012
【図５Ａ】
2009199367.tif 000013
【図５Ｂ】
2009199367.tif 000014
【図６Ａ】
2009199367.tif 000015
【図６Ｂ】
2009199367.tif 000016
【図７】
2009199367.tif 000017
【図８】
2009199367.tif 000018
【図９】
2009199367.tif 000019
【図１０Ａ】
2009199367.tif 000020
【図１０Ｂ】
2009199367.tif 000021
【図１１】
2009199367.tif 000022
【図１２】
2009199367.tif 000023
【図１３】
2009199367.tif 000024