説明

入出力制御プログラム、情報処理装置および入出力制御方法

【課題】入出力量を適切に制御することを課題とする。
【解決手段】情報処理装置は、ディスクへの入出力の数と、ディスクへの入出力の実行に要した平均時間とを顧客毎に計測する。そして、情報処理装置は、顧客毎に、計数された入出力の数の合計と計測された入出力の実行に要した平均時間の合計とから入出力の数に要した総時間を算出する。さらに、情報処理装置は、顧客毎に算出された入出力の数に要した総時間の合計と、顧客毎に計数された入出力の数の合計とから、ディスクが処理可能な単位時間あたりの最大入出力数を算出する。続いて、情報処理装置は、顧客毎に、ディスクの最大入出力数と顧客毎に予め設定されたディスクへの最大負荷とから、ディスクへの入出力として許容できる単位時間当たりの最大入出力数を算出する。その後、情報処理装置は、顧客毎に算出された最大入出力数に基づいて、ディスクへの入出力を顧客毎に制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入出力制御プログラム、情報処理装置および入出力制御方法に関する。
【背景技術】
【0002】
従来、複数のユーザや複数のアプリケーションが利用するマルチテナントのストレージシステムでは、単位時間当たりの転送量を示すスループットを用いた入出力量(言い換えると流量またはアクセス量)の制限が実施されている。また、このようなストレージシステムでは、単位時間当たりの入出力数(以下、I/O数という)を示すIOPS(Input Output Per Second)を用いた流量の制御も実施されている。
【0003】
例えば、ストレージシステムは、一定時間ごとに、各顧客について実際に処理が行われたI/O数を計測する。続いて、ストレージシステムは、計測したI/O数を一定時間で除算し、各顧客のIOPS(実測値)を算出する。そして、ストレージシステムは、算出したIOPS(実測値)が閾値よりも大きい場合に、該当顧客のI/Oを抑制させる制御を実施する。
【0004】
また、ストレージシステムが有する各ディスクの負荷状況を監視し、負荷が高いリソースよりも負荷が低いリソースへの処理を優先させる技術が開示されている。また、特定のデータに対するアクセスを優先させる技術が開示されている。
【0005】
近年普及している、ハードウェアリソースなどを共有するクラウドコンピューティングシステムにおいても、上記ストレージシステムで利用される入出力制御が利用されている。具体的には、サーバAは、顧客Aが利用するホストサーバA、顧客Bが利用するホストホストサーバB、顧客Cが利用するホストホストサーバCが共有で利用するサーバである。このサーバAは、ホストごとにIOPS値やスループットを設定して、ホスト各々に対してアクセス制御を実施する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−302751号公報
【特許文献2】特開2008−186108号公報
【特許文献3】特開2003−177963号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の技術では、入出力量を適切に制御することができないという課題があった。例えば、512kB単位のランダムアクセス性能が100IOPSであり、4kB単位のランダムアクセス性能が500IOPSであるディスクを有するストレージシステムにおいて、最大でもディスク処理性能の半分しかアクセス量を割り当てないとする。つまり、I/Oサイズは考慮せず、入出力量を50IOPSに制限する。
【0008】
この場合、顧客が512kB単位のI/Oを行うのであれば、処理性能を十分に利用できるが、顧客が4kB単位のI/Oを行う場合には、処理性能を十分に利用できない。従来の技術では、このような事象が発生するので、入出力量を適切に制御できているとは言い難い。
【0009】
開示の技術は、上記に鑑みてなされたものであって、入出力量を適切に制御することが可能である入出力制御プログラム、情報処理装置および入出力制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法は、一つの態様において、ディスクへの入出力の数を顧客毎に計数し、前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測し、前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶し、前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第1の最大入出力数を算出して前記記憶部に記憶し、前記ディスクの前記第1の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第2の最大入出力数を算出して前記記憶部に記憶し、前記顧客毎に算出された前記第2の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する、処理を情報処理装置のプロセッサに実行させる。
【発明の効果】
【0011】
本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法の一つの態様によれば、入出力量を適切に制御することが可能であるという効果を奏する。
【図面の簡単な説明】
【0012】
【図1】図1は、実施例1に係る情報処理装置の構成を示すブロック図である。
【図2】図2は、統計情報DBに記憶される統計情報の例を示す図である。
【図3】図3は、ディスクの負荷指標を説明する図である。
【図4】図4は、実施例1に係る最大IOPSの計算処理を示すフローチャートである。
【図5】図5は、実施例1に係る流量制限処理の流れを示すフローチャートである。
【図6】図6は、実施例1に係る流量保証処理の流れを示すフローチャートである。
【図7】図7は、本願の開示する入出力制御を実施するストレージシステムの例を示す図である。
【図8】図8は、統計情報の例を示す図である。
【図9】図9は、入出力制御プログラムを実行するコンピュータの例を示す図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0014】
[情報処理装置の構成]
図1は、実施例1に係る情報処理装置の構成を示すブロック図である。図1に示すように、情報処理装置10は、複数のアプリケーションを実行するサーバであり、本願の開示する入出力制御を実施するサーバである。この情報処理装置10は、ディスク11と統計情報DB(DataBase)12とアプリケーション13と主制御部14とミドルウェア15とを有し、複数のアプリケーション各々がディスク11にデータを読み書きする。
【0015】
なお、ここで示した制御部は例示であり、これに限定されるものではない。例えば、情報処理装置10は、キーボードやマウスなどの入力部やディスプレイなどの表示部を有していてもよい。また、統計情報DB12は、メモリ中においてもよく、ハードディスク上においてもよい。
【0016】
ディスク11は、アプリケーション13が演算処理など各種処理に使用するデータを記憶する。このディスク11は、半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。さらに、ディスク11は、RAID(Redundant Arrays of Inexpensive Disks)を用いて、複数台のハードディスクを組み合わせた仮想的なハードディスクであってもよい。
【0017】
統計情報DB12は、ミドルウェア15の各制御部が実行して得られた統計情報を記憶する。図2は、統計情報DBに記憶される統計情報の例を示す図である。例えば、統計情報DB12は、図2に示すように、「アプリケーション名、最大設定値(%)、最小設定値(%)、I/O数(入出力数)、実行時間(平均)、時刻、最大I/O数、最小I/O数」を記憶する。具体的には、統計情報DB12は、「A、50、20、10、65ms、2010/1/21 18:30:15、5、2」や「B、30、10、5、170ms、2010/1/21 18:30:15、3、1」などを記憶する。
【0018】
ここで記憶される「アプリケーション名」は、ディスク11にI/Oを実施したアプリケーション13を識別する識別子である。「最大設定値」は、ディスク全体の性能に対する最大の負荷(割合)である。「最小設定値」は、ディスク全体の性能に対する最小の負荷(割合)である。「I/O数(入出力数)」は、単位時間当たりに計測されたI/O数であり、例えば1秒間間にディスク11に実行されたI/O数である。「実行時間(平均)」は、単位時間当たりに計測されたI/Oの平均時間であり、例えばディスク11に10回実行されたI/Oの平均時間である。「時刻」は、統計情報DB12の統計情報が更新された時間である。「最大I/O数」は、ディスク11に対する入出力数として許容できる単位時間当たりの最大入出力数の制限値であり、「最小I/O数」は、ディスク11に対する入出力数として保証する単位時間当たりの最小入出力数の制限値である。
【0019】
アプリケーション13は、ディスク11に記憶されるデータを用いて、文書の作成、表計算、数値計算など各種処理を実行するソフトウエアである。例えば、アプリケーション13は、ミドルウェア15を介して主制御部14にデータ読み出し要求を出力してディスク11から所望のデータを読み出す。また、アプリケーション13は、ミドルウェア15を介して主制御部14にデータ書き込み要求を出力してディスク11に所望のデータを書き込む。
【0020】
主制御部14は、情報処理装置10の各種制御を制御するOS(Operating System)などである。例えば、主制御部14は、ミドルウェア15を介してデータ読み出し要求をアプリケーション13から受け付けた場合に、該当するデータをディスク11から読み出して応答する。また、主制御部14は、ミドルウェア15を介してデータ書き込み要求をアプリケーション13から受け付けた場合に、該当するデータをディスク11に書き込む。
【0021】
ミドルウェア15は、アプリケーション13からディスク11への入出力(I/O)を制御するソフトウエアである。このミドルウェア15は、負荷設定部15aと入出力計数部15bと時間計測部15cと最大数算出部15dと最小数算出部15eと入出力制御部15fとを有する。
【0022】
負荷設定部15aは、管理者等から最大設定値や最小設定値を受け付けて、統計情報DB12の設定値に格納する。例えば、負荷設定部15aは、各アプリケーションごとに、最大設定値や最小設定値を受け付けて、統計情報DB12の設定値に格納し、何も受け付けない場合には、「なし」を格納する。
【0023】
入出力計数部15bは、ディスク11に実行された入出力を計数する。例えば、入出力計数部15bは、アプリケーション13ごとに、例えば1秒など単位時間当たりに、主制御部14からディスク11に出力されたI/O数を計数して、統計情報DB12に格納する。具体的には、入出力計数部15bは、アプリケーション13の要求によって、ディスク11へのI/Oが発生するたびに、発生した時点から1秒前までのI/O数を計数して、統計情報DB12に格納する。
【0024】
時間計測部15cは、入出力計数部15bによって計測された入出力数において、1つの入出力に要した平均時間を算出する。例えば、時間計測部15cは、入出力計数部15bによって計測されたI/O数が実行されるのに要した総時間を算出する。そして、時間計測部15cは、算出した総時間を入出力計数部15bによって計測されたI/O数で除算した結果を、統計情報DB12の実行時間(平均)に格納する。また、時間計測部15cは、上記実行時間(平均)の算出をアプリケーションごとに実行する。
【0025】
例えば、アプリケーションAが1秒間に実行したI/O数が「10」の場合に、時間計測部15cは、I/O数「10」が実行されるのに要した総時間が「650ms」と算出したとする。この場合、時間計測部15cは、「650/10=65」を実行時間(平均)に格納する。なお、時間計測部15cは、統計情報DB12が更新されるたびに、上記処理を実行する。
【0026】
最大数算出部15dは、入出力計数部15bによって計測された入出力数と、時間計測部15cによって計測された時間とを用いて、ディスク11に対する入出力数として許容できる単位時間当たりの最大入出力数を算出する。具体的には、最大数算出部15dは、統計情報DB12に記憶される情報「全アプリケーションの総I/O数」と「総I/O数に要した時間」とを算出し、算出した値を式(1)に代入して、「ディスク全体の最大IOPS」を算出する。その後、最大数算出部15dは、算出した「ディスク全体の最大IOPS」をアプリケーションごとに設定されている「最大設定値」を式(2)に代入して、アプリケーションごとに「最大IOPS値」を算出する。
【0027】
【数1】

【数2】

【0028】
ここで算出される「ディスク全体の最大IOPS」とは、ある単位時間あたりにおけるディスク11のビジー率を考慮した負荷指標を基に算出することができる、ディスクが最大で処理できるIOPS値である。つまり、「ディスク全体の最大IOPS」は、ある単位時間内でディスクに対して発行された全I/Oと当該I/O各々の応答を得るまでの時間とを考慮している。したがって、この「ディスク全体の最大IOPS」は、1つのディスクに対して固定的に決定されるものではなく、ディスクがI/Oを処理するのに要した時間に基づいて変化するものである。なお、ビジー率とは、ディスクがI/Oをどのくらい処理していたかを示すものであり、例えばI/O処理に要した時間などである。
【0029】
図3の例を用いて具体的に説明する。図3は、ディスクの負荷指標を説明する図であり、横軸に「時刻」、縦軸に「ディスクが待ちかどうか(true or false)」を示している。なお、I/Oを処理した場合を「true」、I/O処理していない場合を「false」とする。図3の場合、現時点以前の単位時間あたり(1秒間)の間に、2回のディスクI/O(AとB)が発生し、それぞれに125ms要したことを示している。つまり、このときのディスクは、1秒間で、2つのI/Oを計250msかかって処理したこととなる。したがって、1秒間でどのくらい性能を発揮できたかを示す「負荷指標」は、125ms×2/1秒間×100=25%となる。言い換えると、ディスクは、当該1秒間で、性能の25%を発揮したこととなる。この結果、ディスクは、25%の性能でI/Oを2つ処理できたため、余力の75%全部利用可能と仮定すると、8つのI/Oを処理できることとなる。以上より、この例の場合、「ディスク全体の最大IOPS」は「8」となる。
【0030】
例えば、最大数算出部15dは、統計情報DB12を参照し、アプリケーションAについてI/O数「10」とI/O数「10」のうち1つのI/Oにかかった実行時間「65」とから、I/O数「10」を実行するのに要した総時間「650ms」を算出する。また、最大数算出部15dは、統計情報DB12を参照し、アプリケーションBについてI/O数「5」と実行時間「170」とから、I/O数「5」を実行するのに要した総時間「850ms」を算出する。
【0031】
続いて、最大数算出部15dは、アプリケーションAの総時間「650ms」とアプリケーションBの総時間「850ms」とを加算し、ディスク11への総I/O時間「1500ms」を算出する。そして、最大数算出部15dは、アプリケーションAとBの総I/O「15」をディスク11への総I/O時間「1500ms」で除算し、1000を乗算することで、最大IOPS「10」を算出する。
【0032】
その後、最大数算出部15dは、アプリケーションAについては、統計情報DB12に最大設定値「50」が格納されていることより、最大I/O数「10×0.5=5」を格納する。また、最大数算出部15dは、アプリケーションBについては、統計情報DB12に最大設定値「30」が格納されていることより、最大I/O数「10×0.3=3」を格納する。なお、最大数算出部15dは、統計情報DB12の統計情報が更新されるたびに、上記処理を実行する。
【0033】
図1に戻り、最小数算出部15eは、入出力計数部15bによって計測された入出力数と、時間計測部15cによって計測された時間とを用いて、ディスク11に対する入出力数として保証する単位時間当たりの最小I/O数を算出する。具体的には、最小数算出部15eは、アプリケーションごとに、最大数算出部15dによって算出された「ディスク全体の最大IOPS」と統計情報DB12から取得した「最小設定値」とを式(3)に代入して、アプリケーションごとの「最小I/O数」を算出する。
【0034】
【数3】

【0035】
上述した例で説明すると、最小数算出部15eは、アプリケーションAについては、統計情報DB12に最小設定値「20」が格納されており、最大IOPS「10」であることから、最小I/O数「10×0.2=2」を格納する。また、最小数算出部15eは、アプリケーションBについては、統計情報DB12に最小設定値「10」が格納されており、最大IOPS「10」であることから、最小I/O数「10×0.1=1」を格納する。なお、最小数算出部15eは、統計情報DB12の統計情報が更新されるたびに、上記処理を実行する。また、最大数算出部15dではなく最小数算出部15eが最大IOPS「10」を計算してもよい。
【0036】
入出力制御部15fは、ディスク11への入出力数が最大数算出部15dによって算出された最大I/O数を超えないように制御する。上述した例の場合、入出力制御部15fは、アプリケーションAについては、統計情報DB12を参照してディスク11への単位時間(1秒間)当たりのI/O数が最大I/O数「5」を超えないように制御する。そして、入出力制御部15fは、アプリケーションBについては、統計情報DB12を参照してディスク11への単位時間(1秒間)当たりのI/O数が最大I/O数「3」を超えないように制御する。
【0037】
具体的には、入出力制御部15fは、次に実行すべきアプリケーションAのI/Oを実行すると最大I/O数「5」を超えると判定した場合には、当該I/Oを抑止し、他のアプリケーションのI/Oを優先的に実行する。そして、入出力制御部15fは、次の単位時間の範囲で、抑止していたI/Oを実行する。
【0038】
また、入出力制御部15fは、ディスク11への入出力数が最小数算出部15eによって算出された最小入出力数以上になるように制御する。上述した例の場合、入出力制御部15fは、アプリケーションAについては、統計情報DB12を参照してディスク11への単位時間(1秒間)当たりのI/O数が最小I/O数「2」を下回らないよう制御する。そして、入出力制御部15fは、アプリケーションBについては、統計情報DB12を参照してディスク11への単位時間(1秒間)当たりのI/O数が最小I/O数「1」を下回らないよう制御する。
【0039】
具体的には、入出力制御部15fは、次に実行すべきアプリケーションBのI/Oを実行しないと最小I/O数「1」を下回る、つまり、アプリケーションのI/O数が0になると判定した場合には、当該I/Oをどのアプリケーションよりも優先的に実行する。
【0040】
[処理の流れ]
次に、図4〜図6を用いて、実施例1に係る情報処理装置の処理の流れを説明する。図4は、実施例1に係る最大IOPSの計算処理を示すフローチャートであり、図5は、実施例1に係る流量制限処理の流れを示すフローチャートであり、図6は、実施例1に係る流量保証処理の流れを示すフローチャートである。
【0041】
(計算処理の流れ)
図4に示すように、情報処理装置10の入出力計数部15bは、計算開始の契機に到達すると(ステップS101肯定)、アプリケーションごとに、単位時間あたりのI/O数を計測して統計情報DB12に格納する(ステップS102)。例えば、入出力計数部15bは、新たなI/Oを実行した後に、単位時間あたりのI/O数を計測する。
【0042】
続いて、時間計測部15cは、入出力計数部15bによって計測された入出力数において、1つの入出力に要した平均時間を算出して統計情報DB12に格納する(ステップS103)。なお、ステップS102よりも先にステップS103を実行してもよい。
【0043】
その後、最大数算出部15dまたは最小数算出部15eは、入出力計数部15bによって計測されたI/O数と時間計測部15cによって算出された平均時間とを用いて、アプリケーションごとの負荷指標を算出して統計情報DB12に格納する(ステップS104)。例えば、最大数算出部15dまたは最小数算出部15eは、「平均時間=125ms」×「I/O数=2」/1秒間=負荷指標「25%」を算出する。情報処理装置10は、この負荷指標によって、現在単位時間当たりでどのくらいI/Oの負荷がかかっているかを把握することができる。
【0044】
続いて、最大数算出部15dは、入出力計数部15bによって計測されたI/O数と時間計測部15cによって計測された平均時間とを用いて、ディスク11全体の最大IOPSを算出して統計情報DB12に格納する(ステップS105)。この後、最大数算出部15dは、アプリケーションごとに設定された最大設定値を用いて、最大I/O数を算出して統計情報DB12に格納する。また、最小数算出部15eは、アプリケーションごとに設定された最小設定値を用いて、最小I/O数を算出して統計情報DB12に格納する。
【0045】
(流量制限処理の流れ)
図5に示すように、情報処理装置10の入出力制御部15fは、アプリケーションからI/O指示を受信すると(ステップS201肯定)、統計情報DB12や主制御部14等から、現時点での単位時間当たりのI/O数を取得する(ステップS202)。
【0046】
続いて、入出力制御部15fは、統計情報DB12を参照して当該アプリケーションの最大I/O数を取得し、新たなI/Oを実行すると、最大I/O数を超えるか否かを判定する(ステップS203)。
【0047】
そして、入出力制御部15fは、最大I/O数を超えないと判定した場合には(ステップS203否定)、受け付けた新たなI/Oをディスク11に発行する(ステップS204)。
【0048】
一方、入出力制御部15fは、最大I/O数を超えると判定した場合には(ステップS203肯定)、受け付けた新たなI/Oの優先度を下げて、ディスク11への発行を抑止する(ステップS205)。
【0049】
(流量保証処理の流れ)
図6に示すように、情報処理装置10の入出力制御部15fは、アプリケーションからI/O指示を受信すると(ステップS301肯定)、統計情報DB12や主制御部14等から、現時点での単位時間当たりのI/O数を取得する(ステップS302)。
【0050】
続いて、入出力制御部15fは、統計情報DB12を参照して当該アプリケーションの最小I/O数を取得し、新たなI/Oを実行しないと、最小I/O数を下回るか否かを判定する(ステップS303)。
【0051】
そして、入出力制御部15fは、最小I/O数を下回ると判定した場合には(ステップS303肯定)、受け付けた新たなI/Oの優先度を最優先にしてディスク11に発行する(ステップS304)。
【0052】
一方、入出力制御部15fは、最小I/O数を下回らないと判定した場合には(ステップS303否定)、受け付けた新たなI/Oの優先度を上げることなく、ディスク11へ通常のI/Oを発行する(ステップS305)。
【0053】
[実施例1による効果]
実施例1によれば、ディスク11へのI/O数だけでなく、I/Oに要した時間を考慮して最大IOPSを算出する。その結果、1つのI/Oが要する平均時間を用いるので、I/Oの状況や種別、ディスク11の状態を考慮した精度の高い最大IOPSを算出することができ、出力量(I/O量)をより適切に制御することが可能である。
【0054】
また、I/Oに要した時間を考慮して最大IOPSを算出するので、回線状況やディスクの状況によって逐次変わる最大IOPSを追従することができる。さらに、I/O数の上限および下限アプリケーションごとに設定できる。したがって、入出力量(I/O量)を適切に制御することが可能である。また、アプリケーションごとに流量の制限や流量の保証を実施することができる。この結果、アクセスパターンに応じた適切なI/O制御を実施することができる。
【実施例2】
【0055】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【0056】
(最大IOPSの算出手法)
例えば、実施例1では、ディスクへのI/O数と全I/O数に要した時間とから最大IOPSを算出したが、これに限定されるものではない。例えば、上述した負荷指標を用いて算出することもできる。具体的には、負荷指標が『「1つのI/Oの平均時間=125ms」×「全I/O数=2」/「1秒」×「100」=25%』であったとする。この場合、1秒間で実施できる処理性能のうち25%を利用した結果が「全I/O数=2」ということである。したがって、1秒間で処理性能を100%利用しようとすると、「全I/O数=8」となる。この結果、最大IOPSは8と算出することができる。
【0057】
また、実施例1では、最大IOPSを算出するのに、1秒間で実行されたI/O数と1I/Oの平均時間とを用いて算出したが、これに限定されるものではない。例えば、5秒間のうちに実行されたI/O数と1I/Oの平均時間とから算出することもできる。
【0058】
(I/O間隔の制御)
本願の開示する情報処理装置は、算出したアプリケーションごとの最大I/O数(制限値)からアプリケーションごとの最小I/O間隔(制限値)を算出することができる。具体的には、情報処理装置は、式(4)に示すように、「アプリケーションごとの最小I/O間隔(制限値)=1/アプリケーションごとの最大IOPS数(制限値)」で算出することができる。そして、情報処理装置は、I/Oを行うことに、直前に行ったそのアプリケーションのI/Oとの時間差を計算し、もし最小I/O間隔(制限値)よりも短ければ、そのアプリケーションのI/Oを抑止する。この結果、特定アプリケーションが連続してI/O制御することを防止でき、他のアプリケーションのI/Oが遅延するなど悪影響を防止することができる。
【0059】
【数4】

【0060】
また、本願の開示する情報処理装置は、算出したアプリケーションごとの最小I/O数(制限値)からアプリケーションごとの最大I/O間隔(制限値)を算出することができる。具体的には、情報処理装置は、「アプリケーションごとの最大I/O間隔(制限値)=1/アプリケーションごとの最小IOPS数(制限値)」で算出する。そして、情報処理装置は、I/Oを行うことに、直前に行ったそのアプリケーションのI/Oとの時間差を計算し、もし最大I/O間隔(制限値)よりも長ければ、そのアプリケーションのI/Oを最優先で実行する。この結果、特定アプリケーションのI/Oが実行されずに遅延するなど悪影響を防止することができる。
【0061】
(他の適用例)
また、本願は、実施例1で説明した情報処理装置以外にも、ストレージシステムにも適用することができる。図7は、本願の開示する入出力制御を実施するストレージシステムの例を示す図である。図7に示すストレージシステムは、サーバA、サーバB、サーバCとストレージ装置とを有する。サーバA、サーバB、サーバCは、ストレージ装置が有するディスクに対してデータの読み書きをする一般的なサーバである。ストレージ装置は、図1で説明した各機能部を有する装置であり、サーバA、サーバB、サーバCそれぞれに対して最大I/O数や最小I/O数を算出し、流量制御や流量保証を実施する。
【0062】
例えば、ストレージ装置は、図8に示すような統計情報を記憶する。図8は、統計情報の例を示す図である。具体的には、ストレージ装置は、「サーバ名、最大設定値(%)、最小設定値(%)、I/O数(入出力数)、実行時間(平均)、時刻、最大I/O数、最小I/O数」を記憶する。なお、ここで記憶される各情報および各情報の取得ならびに算出方法は、実施例1と同様なので省略する。そして、ストレージ装置は、サーバA〜サーバCからI/Oを受け付けた場合に、図8に示した「最大I/O数」にしたがってI/O数を制御するとともに、「最小I/O数」にしたがってI/O数を保証する。
【0063】
なお、ストレージ装置は、実施例1で説明したアプリケーション単位だけでなく、サーバ単位、クライアント(ユーザ)単位に最大I/O数や最小I/O数を算出して、流量制御や流量保証を実施することができる。また、最大I/O数や最小I/O数は、物理ディスク単位で算出することもでき、論理ディスク単位で算出することもできる。
【0064】
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、本願は、最大I/O数と最小I/O数を両方算出して、流量制限と流量保証を実行する必要はなく、いずれか一方だけを実行するようにしてもよい。また、実施例1では、ミドルウェアが各制御部を有する例について説明したが、これに限定されるものではなく、アプリケーションとして実装されてよく、OSに実装されていてもよい。
【0065】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、例えば最大数算出部15dと最小数算出部15eとを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0066】
(プログラム)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【0067】
図9は、入出力制御プログラムを実行するコンピュータの例を示す図である。図9に示すように、コンピュータシステム100は、RAM101と、HDD102と、ROM103と、CPU104とを有する。ここで、ROM103には、上の実施例と同様の機能を発揮するプログラムがあらかじめ記憶されている。つまり、図9に示すように、負荷設定プログラム103a、入出力計数プログラム103b、時間計測プログラム103c、最大数算出プログラム103dがあらかじめ記憶されている。また、ROM103には、最小数算出プログラム103e、入出力制御プログラム103fがあらかじめ記憶されている。
【0068】
そして、CPU104には、これらのプログラム103a〜103fを読み出して実行することで、図9に示すように、各プロセスとなる。つまり、負荷設定プロセス104a、入出力計数プロセス104b、時間計測プロセス104c、最大数算出プロセス104d、最小数算出プロセス104e、入出力制御プロセス104fとなる。
【0069】
なお、負荷設定プロセス104aは、図1に示した負荷設定部15aに対応し、同様に、入出力計数プロセス104bは、入出力計数部15bに対応する。また、時間計測プロセス104cは、時間計測部15cに対応し、最大数算出プロセス104dは、最大数算出部15dに対応する。また、最小数算出プロセス104eは、最小数算出部15eに対応し、入出力制御プロセス104fは、入出力制御部15fに対応する。
【0070】
また、HDD102には、統計情報テーブル102aが設けられる。統計情報テーブル102aは、図2や図8に示した統計情報DB12に記憶される統計情報に対応する。
【0071】
ところで、上記したプログラム103a〜103fは、必ずしもROM103に記憶させておく必要はない。例えば、コンピュータシステム100に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータシステム100の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、LAN、WANなどを介してコンピュータシステム100に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータシステム100がこれらからプログラムを読み出して実行するようにしてもよい。
【0072】
すなわち、この他の実施例でいうプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものである。そして、コンピュータシステム100は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータシステム100によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【0073】
10 情報処理装置
11 ディスク
12 統計情報DB
13 アプリケーション
14 主制御部
15 ミドルウェア
15a 負荷設定部
15b 入出力計数部
15c 時間計測部
15d 最大数算出部
15e 最小数算出部
15f 入出力制御部

【特許請求の範囲】
【請求項1】
ディスクへの入出力の数を顧客毎に計数し、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測し、
前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶し、
前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第1の最大入出力数を算出して前記記憶部に記憶し、
前記ディスクの前記第1の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第2の最大入出力数を算出して前記記憶部に記憶し、
前記顧客毎に算出された前記第2の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する、
処理を情報処理装置のプロセッサに実行させることを特徴とする入出力制御プログラム。
【請求項2】
前記制御する処理は、前記顧客毎に算出した最大入出力数の逆数を前記顧客毎の最小入出力間隔とし、制御対象となっている対象入出力と対象入出力の直前に実行された入出力との時間差が、前記最小入出力間隔よりも短ければ、当該対象入出力を抑止することを前記顧客ごとに実行することを特徴とする請求項1に記載の入出力制御プログラム。
【請求項3】
前記顧客毎に、前記ディスクの前記第1の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最小負荷とから、前記ディスクへの入出力として保証する単位時間当たりの最小入出力数を算出する処理を前記情報処理装置のプロセッサに実行させ、
前記制御する処理は、前記顧客毎に算出された前記最小入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御することを特徴とする請求項1または2に記載の入出力制御プログラム。
【請求項4】
前記制御する処理は、前記顧客毎に算出した前記最小入出力数の逆数を最大入出力間隔とし、制御対象となっている対象入出力と対象入出力の直前に実行された入出力との時間差が、前記最大入出力間隔よりも長ければ、当該対象入出力を最優先で実行することを前記顧客ごとに実行することを特徴とする請求項3に記載の入出力制御プログラム。
【請求項5】
ディスクへの入出力の数を顧客毎に計数する入出力計数部と、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測する時間計測部と、
前記顧客毎に、前記入出力計数部によって計数された入出力の数の合計と前記時間計測部によって計測された入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出する総時間算出部と、
前記総時間算出部によって顧客毎に算出された前記入出力の数に要した総時間の合計と、前記入出力計数部によって顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの最大入出力数を算出する最大入出力数算出部と、
前記最大入出力数算出部によって算出されたディスクの最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの最大入出力数を算出する顧客最大入出力数算出部と、
前記顧客最大入出力数算出部によって顧客毎に算出された最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する入出力制御部と、
有することを特徴とする情報処理装置。
【請求項6】
情報処理装置のプロセッサが、
ディスクへの入出力の数を顧客毎に計数するステップと、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測するステップと、
前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶するステップと、
前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第1の最大入出力数を算出して前記記憶部に記憶するステップと、
前記ディスクの前記第1の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第2の最大入出力数を算出して前記記憶部に記憶するステップと、
前記顧客毎に算出された前記第2の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御するするステップと、
を含んだことを特徴とする入出力制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate