(57)【特許請求の範囲】
【請求項１】
ディスクへの入出力の数を顧客毎に計数し、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測し、
前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶し、
前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第１の最大入出力数を算出して前記記憶部に記憶し、
前記ディスクの前記第１の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第２の最大入出力数を算出して前記記憶部に記憶し、
前記顧客毎に算出された前記第２の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する、
処理を情報処理装置のプロセッサに実行させることを特徴とする入出力制御プログラム。
【請求項２】
前記制御する処理は、前記顧客毎に算出した最大入出力数の逆数を前記顧客毎の最小入出力間隔とし、制御対象となっている対象入出力と対象入出力の直前に実行された入出力との時間差が、前記最小入出力間隔よりも短ければ、当該対象入出力を抑止することを前記顧客ごとに実行することを特徴とする請求項１に記載の入出力制御プログラム。
【請求項３】
前記顧客毎に、前記ディスクの前記第１の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最小負荷とから、前記ディスクへの入出力として保証する単位時間当たりの最小入出力数を算出する処理を前記情報処理装置のプロセッサに実行させ、
前記制御する処理は、前記顧客毎に算出された前記最小入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御することを特徴とする請求項１または２に記載の入出力制御プログラム。
【請求項４】
前記制御する処理は、前記顧客毎に算出した前記最小入出力数の逆数を最大入出力間隔とし、制御対象となっている対象入出力と対象入出力の直前に実行された入出力との時間差が、前記最大入出力間隔よりも長ければ、当該対象入出力を最優先で実行することを前記顧客ごとに実行することを特徴とする請求項３に記載の入出力制御プログラム。
【請求項５】
ディスクへの入出力の数を顧客毎に計数する入出力計数部と、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測する時間計測部と、
前記顧客毎に、前記入出力計数部によって計数された入出力の数の合計と前記時間計測部によって計測された入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出する総時間算出部と、
前記総時間算出部によって顧客毎に算出された前記入出力の数に要した総時間の合計と、前記入出力計数部によって顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの最大入出力数を算出する最大入出力数算出部と、
前記最大入出力数算出部によって算出されたディスクの最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの最大入出力数を算出する顧客最大入出力数算出部と、
前記顧客最大入出力数算出部によって顧客毎に算出された最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する入出力制御部と、
有することを特徴とする情報処理装置。
【請求項６】
情報処理装置のプロセッサが、
ディスクへの入出力の数を顧客毎に計数するステップと、
前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測するステップと、
前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶するステップと、
前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第１の最大入出力数を算出して前記記憶部に記憶するステップと、
前記ディスクの前記第１の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第２の最大入出力数を算出して前記記憶部に記憶するステップと、
前記顧客毎に算出された前記第２の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御するするステップと、
を含んだことを特徴とする入出力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力制御プログラム、情報処理装置および入出力制御方法に関する。
【背景技術】
【０００２】
従来、複数のユーザや複数のアプリケーションが利用するマルチテナントのストレージシステムでは、単位時間当たりの転送量を示すスループットを用いた入出力量（言い換えると流量またはアクセス量）の制限が実施されている。また、このようなストレージシステムでは、単位時間当たりの入出力数（以下、Ｉ／Ｏ数という）を示すＩＯＰＳ（Input  Output  Per  Second）を用いた流量の制御も実施されている。
【０００３】
例えば、ストレージシステムは、一定時間ごとに、各顧客について実際に処理が行われたＩ／Ｏ数を計測する。続いて、ストレージシステムは、計測したＩ／Ｏ数を一定時間で除算し、各顧客のＩＯＰＳ（実測値）を算出する。そして、ストレージシステムは、算出したＩＯＰＳ（実測値）が閾値よりも大きい場合に、該当顧客のＩ／Ｏを抑制させる制御を実施する。
【０００４】
また、ストレージシステムが有する各ディスクの負荷状況を監視し、負荷が高いリソースよりも負荷が低いリソースへの処理を優先させる技術が開示されている。また、特定のデータに対するアクセスを優先させる技術が開示されている。
【０００５】
近年普及している、ハードウェアリソースなどを共有するクラウドコンピューティングシステムにおいても、上記ストレージシステムで利用される入出力制御が利用されている。具体的には、サーバＡは、顧客Ａが利用するホストサーバＡ、顧客Ｂが利用するホストホストサーバＢ、顧客Ｃが利用するホストホストサーバＣが共有で利用するサーバである。このサーバＡは、ホストごとにＩＯＰＳ値やスループットを設定して、ホスト各々に対してアクセス制御を実施する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３０２７５１号公報
【特許文献２】特開２００８−１８６１０８号公報
【特許文献３】特開２００３−１７７９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、入出力量を適切に制御することができないという課題があった。例えば、５１２ｋＢ単位のランダムアクセス性能が１００ＩＯＰＳであり、４ｋＢ単位のランダムアクセス性能が５００ＩＯＰＳであるディスクを有するストレージシステムにおいて、最大でもディスク処理性能の半分しかアクセス量を割り当てないとする。つまり、Ｉ／Ｏサイズは考慮せず、入出力量を５０ＩＯＰＳに制限する。
【０００８】
この場合、顧客が５１２ｋＢ単位のＩ／Ｏを行うのであれば、処理性能を十分に利用できるが、顧客が４ｋＢ単位のＩ／Ｏを行う場合には、処理性能を十分に利用できない。従来の技術では、このような事象が発生するので、入出力量を適切に制御できているとは言い難い。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、入出力量を適切に制御することが可能である入出力制御プログラム、情報処理装置および入出力制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法は、一つの態様において、ディスクへの入出力の数を顧客毎に計数し、前記ディスクへの入出力の実行に要した平均時間を顧客毎に計測し、前記顧客毎に、前記入出力の数の合計と前記入出力の実行に要した平均時間の合計とから前記入出力の数に要した総時間を算出して記憶部に記憶し、前記顧客毎に算出された前記入出力の数に要した総時間の合計と、前記顧客毎に計数された入出力の数の合計とから、前記ディスクが処理可能な単位時間あたりの第１の最大入出力数を算出して前記記憶部に記憶し、前記ディスクの前記第１の最大入出力数と前記顧客毎に予め設定された前記ディスクへの最大負荷とから、前記顧客毎に、前記ディスクへの入出力として許容できる単位時間当たりの第２の最大入出力数を算出して前記記憶部に記憶し、前記顧客毎に算出された前記第２の最大入出力数に基づいて、前記ディスクへの入出力を顧客毎に制御する、処理を情報処理装置のプロセッサに実行させる。
【発明の効果】
【００１１】
本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法の一つの態様によれば、入出力量を適切に制御することが可能であるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置の構成を示すブロック図である。
【図２】図２は、統計情報ＤＢに記憶される統計情報の例を示す図である。
【図３】図３は、ディスクの負荷指標を説明する図である。
【図４】図４は、実施例１に係る最大ＩＯＰＳの計算処理を示すフローチャートである。
【図５】図５は、実施例１に係る流量制限処理の流れを示すフローチャートである。
【図６】図６は、実施例１に係る流量保証処理の流れを示すフローチャートである。
【図７】図７は、本願の開示する入出力制御を実施するストレージシステムの例を示す図である。
【図８】図８は、統計情報の例を示す図である。
【図９】図９は、入出力制御プログラムを実行するコンピュータの例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する入出力制御プログラム、情報処理装置および入出力制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
［情報処理装置の構成］
図１は、実施例１に係る情報処理装置の構成を示すブロック図である。図１に示すように、情報処理装置１０は、複数のアプリケーションを実行するサーバであり、本願の開示する入出力制御を実施するサーバである。この情報処理装置１０は、ディスク１１と統計情報ＤＢ（DataBase）１２とアプリケーション１３と主制御部１４とミドルウェア１５とを有し、複数のアプリケーション各々がディスク１１にデータを読み書きする。
【００１５】
なお、ここで示した制御部は例示であり、これに限定されるものではない。例えば、情報処理装置１０は、キーボードやマウスなどの入力部やディスプレイなどの表示部を有していてもよい。また、統計情報ＤＢ１２は、メモリ中においてもよく、ハードディスク上においてもよい。
【００１６】
ディスク１１は、アプリケーション１３が演算処理など各種処理に使用するデータを記憶する。このディスク１１は、半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。さらに、ディスク１１は、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）を用いて、複数台のハードディスクを組み合わせた仮想的なハードディスクであってもよい。
【００１７】
統計情報ＤＢ１２は、ミドルウェア１５の各制御部が実行して得られた統計情報を記憶する。図２は、統計情報ＤＢに記憶される統計情報の例を示す図である。例えば、統計情報ＤＢ１２は、図２に示すように、「アプリケーション名、最大設定値（％）、最小設定値（％）、Ｉ／Ｏ数（入出力数）、実行時間（平均）、時刻、最大Ｉ／Ｏ数、最小Ｉ／Ｏ数」を記憶する。具体的には、統計情報ＤＢ１２は、「Ａ、５０、２０、１０、６５ｍｓ、２０１０／１／２１  １８：３０：１５、５、２」や「Ｂ、３０、１０、５、１７０ｍｓ、２０１０／１／２１  １８：３０：１５、３、１」などを記憶する。
【００１８】
ここで記憶される「アプリケーション名」は、ディスク１１にＩ／Ｏを実施したアプリケーション１３を識別する識別子である。「最大設定値」は、ディスク全体の性能に対する最大の負荷（割合）である。「最小設定値」は、ディスク全体の性能に対する最小の負荷（割合）である。「Ｉ／Ｏ数（入出力数）」は、単位時間当たりに計測されたＩ／Ｏ数であり、例えば１秒間間にディスク１１に実行されたＩ／Ｏ数である。「実行時間（平均）」は、単位時間当たりに計測されたＩ／Ｏの平均時間であり、例えばディスク１１に１０回実行されたＩ／Ｏの平均時間である。「時刻」は、統計情報ＤＢ１２の統計情報が更新された時間である。「最大Ｉ／Ｏ数」は、ディスク１１に対する入出力数として許容できる単位時間当たりの最大入出力数の制限値であり、「最小Ｉ／Ｏ数」は、ディスク１１に対する入出力数として保証する単位時間当たりの最小入出力数の制限値である。
【００１９】
アプリケーション１３は、ディスク１１に記憶されるデータを用いて、文書の作成、表計算、数値計算など各種処理を実行するソフトウエアである。例えば、アプリケーション１３は、ミドルウェア１５を介して主制御部１４にデータ読み出し要求を出力してディスク１１から所望のデータを読み出す。また、アプリケーション１３は、ミドルウェア１５を介して主制御部１４にデータ書き込み要求を出力してディスク１１に所望のデータを書き込む。
【００２０】
主制御部１４は、情報処理装置１０の各種制御を制御するＯＳ（Operating  System）などである。例えば、主制御部１４は、ミドルウェア１５を介してデータ読み出し要求をアプリケーション１３から受け付けた場合に、該当するデータをディスク１１から読み出して応答する。また、主制御部１４は、ミドルウェア１５を介してデータ書き込み要求をアプリケーション１３から受け付けた場合に、該当するデータをディスク１１に書き込む。
【００２１】
ミドルウェア１５は、アプリケーション１３からディスク１１への入出力（Ｉ／Ｏ）を制御するソフトウエアである。このミドルウェア１５は、負荷設定部１５ａと入出力計数部１５ｂと時間計測部１５ｃと最大数算出部１５ｄと最小数算出部１５ｅと入出力制御部１５ｆとを有する。
【００２２】
負荷設定部１５ａは、管理者等から最大設定値や最小設定値を受け付けて、統計情報ＤＢ１２の設定値に格納する。例えば、負荷設定部１５ａは、各アプリケーションごとに、最大設定値や最小設定値を受け付けて、統計情報ＤＢ１２の設定値に格納し、何も受け付けない場合には、「なし」を格納する。
【００２３】
入出力計数部１５ｂは、ディスク１１に実行された入出力を計数する。例えば、入出力計数部１５ｂは、アプリケーション１３ごとに、例えば１秒など単位時間当たりに、主制御部１４からディスク１１に出力されたＩ／Ｏ数を計数して、統計情報ＤＢ１２に格納する。具体的には、入出力計数部１５ｂは、アプリケーション１３の要求によって、ディスク１１へのＩ／Ｏが発生するたびに、発生した時点から１秒前までのＩ／Ｏ数を計数して、統計情報ＤＢ１２に格納する。
【００２４】
時間計測部１５ｃは、入出力計数部１５ｂによって計測された入出力数において、１つの入出力に要した平均時間を算出する。例えば、時間計測部１５ｃは、入出力計数部１５ｂによって計測されたＩ／Ｏ数が実行されるのに要した総時間を算出する。そして、時間計測部１５ｃは、算出した総時間を入出力計数部１５ｂによって計測されたＩ／Ｏ数で除算した結果を、統計情報ＤＢ１２の実行時間（平均）に格納する。また、時間計測部１５ｃは、上記実行時間（平均）の算出をアプリケーションごとに実行する。
【００２５】
例えば、アプリケーションＡが１秒間に実行したＩ／Ｏ数が「１０」の場合に、時間計測部１５ｃは、Ｉ／Ｏ数「１０」が実行されるのに要した総時間が「６５０ｍｓ」と算出したとする。この場合、時間計測部１５ｃは、「６５０／１０＝６５」を実行時間（平均）に格納する。なお、時間計測部１５ｃは、統計情報ＤＢ１２が更新されるたびに、上記処理を実行する。
【００２６】
最大数算出部１５ｄは、入出力計数部１５ｂによって計測された入出力数と、時間計測部１５ｃによって計測された時間とを用いて、ディスク１１に対する入出力数として許容できる単位時間当たりの最大入出力数を算出する。具体的には、最大数算出部１５ｄは、統計情報ＤＢ１２に記憶される情報「全アプリケーションの総Ｉ／Ｏ数」と「総Ｉ／Ｏ数に要した時間」とを算出し、算出した値を式（１）に代入して、「ディスク全体の最大ＩＯＰＳ」を算出する。その後、最大数算出部１５ｄは、算出した「ディスク全体の最大ＩＯＰＳ」をアプリケーションごとに設定されている「最大設定値」を式（２）に代入して、アプリケーションごとに「最大ＩＯＰＳ値」を算出する。
【００２７】
【数１】
0005471822.tif 000002
【数２】
0005471822.tif 000003
【００２８】
ここで算出される「ディスク全体の最大ＩＯＰＳ」とは、ある単位時間あたりにおけるディスク１１のビジー率を考慮した負荷指標を基に算出することができる、ディスクが最大で処理できるＩＯＰＳ値である。つまり、「ディスク全体の最大ＩＯＰＳ」は、ある単位時間内でディスクに対して発行された全Ｉ／Ｏと当該Ｉ／Ｏ各々の応答を得るまでの時間とを考慮している。したがって、この「ディスク全体の最大ＩＯＰＳ」は、１つのディスクに対して固定的に決定されるものではなく、ディスクがＩ／Ｏを処理するのに要した時間に基づいて変化するものである。なお、ビジー率とは、ディスクがＩ／Ｏをどのくらい処理していたかを示すものであり、例えばＩ／Ｏ処理に要した時間などである。
【００２９】
図３の例を用いて具体的に説明する。図３は、ディスクの負荷指標を説明する図であり、横軸に「時刻」、縦軸に「ディスクが待ちかどうか（ｔｒｕｅ  ｏｒ  ｆａｌｓｅ）」を示している。なお、Ｉ／Ｏを処理した場合を「ｔｒｕｅ」、Ｉ／Ｏ処理していない場合を「ｆａｌｓｅ」とする。図３の場合、現時点以前の単位時間あたり（１秒間）の間に、２回のディスクＩ／Ｏ（ＡとＢ）が発生し、それぞれに１２５ｍｓ要したことを示している。つまり、このときのディスクは、１秒間で、２つのＩ／Ｏを計２５０ｍｓかかって処理したこととなる。したがって、１秒間でどのくらい性能を発揮できたかを示す「負荷指標」は、１２５ｍｓ×２／１秒間×１００＝２５％となる。言い換えると、ディスクは、当該１秒間で、性能の２５％を発揮したこととなる。この結果、ディスクは、２５％の性能でＩ／Ｏを２つ処理できたため、余力の７５％全部利用可能と仮定すると、８つのＩ／Ｏを処理できることとなる。以上より、この例の場合、「ディスク全体の最大ＩＯＰＳ」は「８」となる。
【００３０】
例えば、最大数算出部１５ｄは、統計情報ＤＢ１２を参照し、アプリケーションＡについてＩ／Ｏ数「１０」とＩ／Ｏ数「１０」のうち１つのＩ／Ｏにかかった実行時間「６５」とから、Ｉ／Ｏ数「１０」を実行するのに要した総時間「６５０ｍｓ」を算出する。また、最大数算出部１５ｄは、統計情報ＤＢ１２を参照し、アプリケーションＢについてＩ／Ｏ数「５」と実行時間「１７０」とから、Ｉ／Ｏ数「５」を実行するのに要した総時間「８５０ｍｓ」を算出する。
【００３１】
続いて、最大数算出部１５ｄは、アプリケーションＡの総時間「６５０ｍｓ」とアプリケーションＢの総時間「８５０ｍｓ」とを加算し、ディスク１１への総Ｉ／Ｏ時間「１５００ｍｓ」を算出する。そして、最大数算出部１５ｄは、アプリケーションＡとＢの総Ｉ／Ｏ「１５」をディスク１１への総Ｉ／Ｏ時間「１５００ｍｓ」で除算し、１０００を乗算することで、最大ＩＯＰＳ「１０」を算出する。
【００３２】
その後、最大数算出部１５ｄは、アプリケーションＡについては、統計情報ＤＢ１２に最大設定値「５０」が格納されていることより、最大Ｉ／Ｏ数「１０×０．５＝５」を格納する。また、最大数算出部１５ｄは、アプリケーションＢについては、統計情報ＤＢ１２に最大設定値「３０」が格納されていることより、最大Ｉ／Ｏ数「１０×０．３＝３」を格納する。なお、最大数算出部１５ｄは、統計情報ＤＢ１２の統計情報が更新されるたびに、上記処理を実行する。
【００３３】
図１に戻り、最小数算出部１５ｅは、入出力計数部１５ｂによって計測された入出力数と、時間計測部１５ｃによって計測された時間とを用いて、ディスク１１に対する入出力数として保証する単位時間当たりの最小Ｉ／Ｏ数を算出する。具体的には、最小数算出部１５ｅは、アプリケーションごとに、最大数算出部１５ｄによって算出された「ディスク全体の最大ＩＯＰＳ」と統計情報ＤＢ１２から取得した「最小設定値」とを式（３）に代入して、アプリケーションごとの「最小Ｉ／Ｏ数」を算出する。
【００３４】
【数３】
0005471822.tif 000004
【００３５】
上述した例で説明すると、最小数算出部１５ｅは、アプリケーションＡについては、統計情報ＤＢ１２に最小設定値「２０」が格納されており、最大ＩＯＰＳ「１０」であることから、最小Ｉ／Ｏ数「１０×０．２＝２」を格納する。また、最小数算出部１５ｅは、アプリケーションＢについては、統計情報ＤＢ１２に最小設定値「１０」が格納されており、最大ＩＯＰＳ「１０」であることから、最小Ｉ／Ｏ数「１０×０．１＝１」を格納する。なお、最小数算出部１５ｅは、統計情報ＤＢ１２の統計情報が更新されるたびに、上記処理を実行する。また、最大数算出部１５ｄではなく最小数算出部１５ｅが最大ＩＯＰＳ「１０」を計算してもよい。
【００３６】
入出力制御部１５ｆは、ディスク１１への入出力数が最大数算出部１５ｄによって算出された最大Ｉ／Ｏ数を超えないように制御する。上述した例の場合、入出力制御部１５ｆは、アプリケーションＡについては、統計情報ＤＢ１２を参照してディスク１１への単位時間（１秒間）当たりのＩ／Ｏ数が最大Ｉ／Ｏ数「５」を超えないように制御する。そして、入出力制御部１５ｆは、アプリケーションＢについては、統計情報ＤＢ１２を参照してディスク１１への単位時間（１秒間）当たりのＩ／Ｏ数が最大Ｉ／Ｏ数「３」を超えないように制御する。
【００３７】
具体的には、入出力制御部１５ｆは、次に実行すべきアプリケーションＡのＩ／Ｏを実行すると最大Ｉ／Ｏ数「５」を超えると判定した場合には、当該Ｉ／Ｏを抑止し、他のアプリケーションのＩ／Ｏを優先的に実行する。そして、入出力制御部１５ｆは、次の単位時間の範囲で、抑止していたＩ／Ｏを実行する。
【００３８】
また、入出力制御部１５ｆは、ディスク１１への入出力数が最小数算出部１５ｅによって算出された最小入出力数以上になるように制御する。上述した例の場合、入出力制御部１５ｆは、アプリケーションＡについては、統計情報ＤＢ１２を参照してディスク１１への単位時間（１秒間）当たりのＩ／Ｏ数が最小Ｉ／Ｏ数「２」を下回らないよう制御する。そして、入出力制御部１５ｆは、アプリケーションＢについては、統計情報ＤＢ１２を参照してディスク１１への単位時間（１秒間）当たりのＩ／Ｏ数が最小Ｉ／Ｏ数「１」を下回らないよう制御する。
【００３９】
具体的には、入出力制御部１５ｆは、次に実行すべきアプリケーションＢのＩ／Ｏを実行しないと最小Ｉ／Ｏ数「１」を下回る、つまり、アプリケーションのＩ／Ｏ数が０になると判定した場合には、当該Ｉ／Ｏをどのアプリケーションよりも優先的に実行する。
【００４０】
［処理の流れ］
次に、図４〜図６を用いて、実施例１に係る情報処理装置の処理の流れを説明する。図４は、実施例１に係る最大ＩＯＰＳの計算処理を示すフローチャートであり、図５は、実施例１に係る流量制限処理の流れを示すフローチャートであり、図６は、実施例１に係る流量保証処理の流れを示すフローチャートである。
【００４１】
（計算処理の流れ）
図４に示すように、情報処理装置１０の入出力計数部１５ｂは、計算開始の契機に到達すると（ステップＳ１０１肯定）、アプリケーションごとに、単位時間あたりのＩ／Ｏ数を計測して統計情報ＤＢ１２に格納する（ステップＳ１０２）。例えば、入出力計数部１５ｂは、新たなＩ／Ｏを実行した後に、単位時間あたりのＩ／Ｏ数を計測する。
【００４２】
続いて、時間計測部１５ｃは、入出力計数部１５ｂによって計測された入出力数において、１つの入出力に要した平均時間を算出して統計情報ＤＢ１２に格納する（ステップＳ１０３）。なお、ステップＳ１０２よりも先にステップＳ１０３を実行してもよい。
【００４３】
その後、最大数算出部１５ｄまたは最小数算出部１５ｅは、入出力計数部１５ｂによって計測されたＩ／Ｏ数と時間計測部１５ｃによって算出された平均時間とを用いて、アプリケーションごとの負荷指標を算出して統計情報ＤＢ１２に格納する（ステップＳ１０４）。例えば、最大数算出部１５ｄまたは最小数算出部１５ｅは、「平均時間＝１２５ｍｓ」×「Ｉ／Ｏ数＝２」／１秒間＝負荷指標「２５％」を算出する。情報処理装置１０は、この負荷指標によって、現在単位時間当たりでどのくらいＩ／Ｏの負荷がかかっているかを把握することができる。
【００４４】
続いて、最大数算出部１５ｄは、入出力計数部１５ｂによって計測されたＩ／Ｏ数と時間計測部１５ｃによって計測された平均時間とを用いて、ディスク１１全体の最大ＩＯＰＳを算出して統計情報ＤＢ１２に格納する（ステップＳ１０５）。この後、最大数算出部１５ｄは、アプリケーションごとに設定された最大設定値を用いて、最大Ｉ／Ｏ数を算出して統計情報ＤＢ１２に格納する。また、最小数算出部１５ｅは、アプリケーションごとに設定された最小設定値を用いて、最小Ｉ／Ｏ数を算出して統計情報ＤＢ１２に格納する。
【００４５】
（流量制限処理の流れ）
図５に示すように、情報処理装置１０の入出力制御部１５ｆは、アプリケーションからＩ／Ｏ指示を受信すると（ステップＳ２０１肯定）、統計情報ＤＢ１２や主制御部１４等から、現時点での単位時間当たりのＩ／Ｏ数を取得する（ステップＳ２０２）。
【００４６】
続いて、入出力制御部１５ｆは、統計情報ＤＢ１２を参照して当該アプリケーションの最大Ｉ／Ｏ数を取得し、新たなＩ／Ｏを実行すると、最大Ｉ／Ｏ数を超えるか否かを判定する（ステップＳ２０３）。
【００４７】
そして、入出力制御部１５ｆは、最大Ｉ／Ｏ数を超えないと判定した場合には（ステップＳ２０３否定）、受け付けた新たなＩ／Ｏをディスク１１に発行する（ステップＳ２０４）。
【００４８】
一方、入出力制御部１５ｆは、最大Ｉ／Ｏ数を超えると判定した場合には（ステップＳ２０３肯定）、受け付けた新たなＩ／Ｏの優先度を下げて、ディスク１１への発行を抑止する（ステップＳ２０５）。
【００４９】
（流量保証処理の流れ）
図６に示すように、情報処理装置１０の入出力制御部１５ｆは、アプリケーションからＩ／Ｏ指示を受信すると（ステップＳ３０１肯定）、統計情報ＤＢ１２や主制御部１４等から、現時点での単位時間当たりのＩ／Ｏ数を取得する（ステップＳ３０２）。
【００５０】
続いて、入出力制御部１５ｆは、統計情報ＤＢ１２を参照して当該アプリケーションの最小Ｉ／Ｏ数を取得し、新たなＩ／Ｏを実行しないと、最小Ｉ／Ｏ数を下回るか否かを判定する（ステップＳ３０３）。
【００５１】
そして、入出力制御部１５ｆは、最小Ｉ／Ｏ数を下回ると判定した場合には（ステップＳ３０３肯定）、受け付けた新たなＩ／Ｏの優先度を最優先にしてディスク１１に発行する（ステップＳ３０４）。
【００５２】
一方、入出力制御部１５ｆは、最小Ｉ／Ｏ数を下回らないと判定した場合には（ステップＳ３０３否定）、受け付けた新たなＩ／Ｏの優先度を上げることなく、ディスク１１へ通常のＩ／Ｏを発行する（ステップＳ３０５）。
【００５３】
［実施例１による効果］
実施例１によれば、ディスク１１へのＩ／Ｏ数だけでなく、Ｉ／Ｏに要した時間を考慮して最大ＩＯＰＳを算出する。その結果、１つのＩ／Ｏが要する平均時間を用いるので、Ｉ／Ｏの状況や種別、ディスク１１の状態を考慮した精度の高い最大ＩＯＰＳを算出することができ、出力量（Ｉ／Ｏ量）をより適切に制御することが可能である。
【００５４】
また、Ｉ／Ｏに要した時間を考慮して最大ＩＯＰＳを算出するので、回線状況やディスクの状況によって逐次変わる最大ＩＯＰＳを追従することができる。さらに、Ｉ／Ｏ数の上限および下限アプリケーションごとに設定できる。したがって、入出力量（Ｉ／Ｏ量）を適切に制御することが可能である。また、アプリケーションごとに流量の制限や流量の保証を実施することができる。この結果、アクセスパターンに応じた適切なＩ／Ｏ制御を実施することができる。
【実施例２】
【００５５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００５６】
（最大ＩＯＰＳの算出手法）
例えば、実施例１では、ディスクへのＩ／Ｏ数と全Ｉ／Ｏ数に要した時間とから最大ＩＯＰＳを算出したが、これに限定されるものではない。例えば、上述した負荷指標を用いて算出することもできる。具体的には、負荷指標が『「１つのＩ／Ｏの平均時間＝１２５ｍｓ」×「全Ｉ／Ｏ数＝２」／「１秒」×「１００」＝２５％』であったとする。この場合、１秒間で実施できる処理性能のうち２５％を利用した結果が「全Ｉ／Ｏ数＝２」ということである。したがって、１秒間で処理性能を１００％利用しようとすると、「全Ｉ／Ｏ数＝８」となる。この結果、最大ＩＯＰＳは８と算出することができる。
【００５７】
また、実施例１では、最大ＩＯＰＳを算出するのに、１秒間で実行されたＩ／Ｏ数と１Ｉ／Ｏの平均時間とを用いて算出したが、これに限定されるものではない。例えば、５秒間のうちに実行されたＩ／Ｏ数と１Ｉ／Ｏの平均時間とから算出することもできる。
【００５８】
（Ｉ／Ｏ間隔の制御）
本願の開示する情報処理装置は、算出したアプリケーションごとの最大Ｉ／Ｏ数（制限値）からアプリケーションごとの最小Ｉ／Ｏ間隔（制限値）を算出することができる。具体的には、情報処理装置は、式（４）に示すように、「アプリケーションごとの最小Ｉ／Ｏ間隔（制限値）＝１／アプリケーションごとの最大ＩＯＰＳ数（制限値）」で算出することができる。そして、情報処理装置は、Ｉ／Ｏを行うことに、直前に行ったそのアプリケーションのＩ／Ｏとの時間差を計算し、もし最小Ｉ／Ｏ間隔（制限値）よりも短ければ、そのアプリケーションのＩ／Ｏを抑止する。この結果、特定アプリケーションが連続してＩ／Ｏ制御することを防止でき、他のアプリケーションのＩ／Ｏが遅延するなど悪影響を防止することができる。
【００５９】
【数４】
0005471822.tif 000005
【００６０】
また、本願の開示する情報処理装置は、算出したアプリケーションごとの最小Ｉ／Ｏ数（制限値）からアプリケーションごとの最大Ｉ／Ｏ間隔（制限値）を算出することができる。具体的には、情報処理装置は、「アプリケーションごとの最大Ｉ／Ｏ間隔（制限値）＝１／アプリケーションごとの最小ＩＯＰＳ数（制限値）」で算出する。そして、情報処理装置は、Ｉ／Ｏを行うことに、直前に行ったそのアプリケーションのＩ／Ｏとの時間差を計算し、もし最大Ｉ／Ｏ間隔（制限値）よりも長ければ、そのアプリケーションのＩ／Ｏを最優先で実行する。この結果、特定アプリケーションのＩ／Ｏが実行されずに遅延するなど悪影響を防止することができる。
【００６１】
（他の適用例）
また、本願は、実施例１で説明した情報処理装置以外にも、ストレージシステムにも適用することができる。図７は、本願の開示する入出力制御を実施するストレージシステムの例を示す図である。図７に示すストレージシステムは、サーバＡ、サーバＢ、サーバＣとストレージ装置とを有する。サーバＡ、サーバＢ、サーバＣは、ストレージ装置が有するディスクに対してデータの読み書きをする一般的なサーバである。ストレージ装置は、図１で説明した各機能部を有する装置であり、サーバＡ、サーバＢ、サーバＣそれぞれに対して最大Ｉ／Ｏ数や最小Ｉ／Ｏ数を算出し、流量制御や流量保証を実施する。
【００６２】
例えば、ストレージ装置は、図８に示すような統計情報を記憶する。図８は、統計情報の例を示す図である。具体的には、ストレージ装置は、「サーバ名、最大設定値（％）、最小設定値（％）、Ｉ／Ｏ数（入出力数）、実行時間（平均）、時刻、最大Ｉ／Ｏ数、最小Ｉ／Ｏ数」を記憶する。なお、ここで記憶される各情報および各情報の取得ならびに算出方法は、実施例１と同様なので省略する。そして、ストレージ装置は、サーバＡ〜サーバＣからＩ／Ｏを受け付けた場合に、図８に示した「最大Ｉ／Ｏ数」にしたがってＩ／Ｏ数を制御するとともに、「最小Ｉ／Ｏ数」にしたがってＩ／Ｏ数を保証する。
【００６３】
なお、ストレージ装置は、実施例１で説明したアプリケーション単位だけでなく、サーバ単位、クライアント（ユーザ）単位に最大Ｉ／Ｏ数や最小Ｉ／Ｏ数を算出して、流量制御や流量保証を実施することができる。また、最大Ｉ／Ｏ数や最小Ｉ／Ｏ数は、物理ディスク単位で算出することもでき、論理ディスク単位で算出することもできる。
【００６４】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、本願は、最大Ｉ／Ｏ数と最小Ｉ／Ｏ数を両方算出して、流量制限と流量保証を実行する必要はなく、いずれか一方だけを実行するようにしてもよい。また、実施例１では、ミドルウェアが各制御部を有する例について説明したが、これに限定されるものではなく、アプリケーションとして実装されてよく、ＯＳに実装されていてもよい。
【００６５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、例えば最大数算出部１５ｄと最小数算出部１５ｅとを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６６】
（プログラム）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【００６７】
図９は、入出力制御プログラムを実行するコンピュータの例を示す図である。図９に示すように、コンピュータシステム１００は、ＲＡＭ１０１と、ＨＤＤ１０２と、ＲＯＭ１０３と、ＣＰＵ１０４とを有する。ここで、ＲＯＭ１０３には、上の実施例と同様の機能を発揮するプログラムがあらかじめ記憶されている。つまり、図９に示すように、負荷設定プログラム１０３ａ、入出力計数プログラム１０３ｂ、時間計測プログラム１０３ｃ、最大数算出プログラム１０３ｄがあらかじめ記憶されている。また、ＲＯＭ１０３には、最小数算出プログラム１０３ｅ、入出力制御プログラム１０３ｆがあらかじめ記憶されている。
【００６８】
そして、ＣＰＵ１０４には、これらのプログラム１０３ａ〜１０３ｆを読み出して実行することで、図９に示すように、各プロセスとなる。つまり、負荷設定プロセス１０４ａ、入出力計数プロセス１０４ｂ、時間計測プロセス１０４ｃ、最大数算出プロセス１０４ｄ、最小数算出プロセス１０４ｅ、入出力制御プロセス１０４ｆとなる。
【００６９】
なお、負荷設定プロセス１０４ａは、図１に示した負荷設定部１５ａに対応し、同様に、入出力計数プロセス１０４ｂは、入出力計数部１５ｂに対応する。また、時間計測プロセス１０４ｃは、時間計測部１５ｃに対応し、最大数算出プロセス１０４ｄは、最大数算出部１５ｄに対応する。また、最小数算出プロセス１０４ｅは、最小数算出部１５ｅに対応し、入出力制御プロセス１０４ｆは、入出力制御部１５ｆに対応する。
【００７０】
また、ＨＤＤ１０２には、統計情報テーブル１０２ａが設けられる。統計情報テーブル１０２ａは、図２や図８に示した統計情報ＤＢ１２に記憶される統計情報に対応する。
【００７１】
ところで、上記したプログラム１０３ａ〜１０３ｆは、必ずしもＲＯＭ１０３に記憶させておく必要はない。例えば、コンピュータシステム１００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータシステム１００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータシステム１００に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータシステム１００がこれらからプログラムを読み出して実行するようにしてもよい。
【００７２】
すなわち、この他の実施例でいうプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものである。そして、コンピュータシステム１００は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータシステム１００によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００７３】
１０  情報処理装置
１１  ディスク
１２  統計情報ＤＢ
１３  アプリケーション
１４  主制御部
１５  ミドルウェア
１５ａ  負荷設定部
１５ｂ  入出力計数部
１５ｃ  時間計測部
１５ｄ  最大数算出部
１５ｅ  最小数算出部
１５ｆ  入出力制御部
【図１】
0005471822.tif 000006
【図２】
0005471822.tif 000007
【図３】
0005471822.tif 000008
【図４】
0005471822.tif 000009
【図５】
0005471822.tif 000010
【図６】
0005471822.tif 000011
【図７】
0005471822.tif 000012
【図８】
0005471822.tif 000013
【図９】
0005471822.tif 000014