(57)【要約】【課題】様々な性能変動に対応できるようにする。【解決手段】ストレージ装置は、算出部５０５，スケジュール部５０６，実行部５０７，第１判定部５２１，変更部５２３を有する。算出部５０５は、複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を記憶装置毎に算出する。スケジュール部５０６は、情報処理装置から受信した入出力要求に係る処理量と、算出された上限値とに基づいて、入出力要求に係る処理の実行順をスケジュールする。実行部５０７は、スケジュールされた実行順で入出力要求に係る処理を実行する。第１判定部５２１は、記憶装置毎に、当該記憶装置の処理量が第１所定時間に亘って処理性能を超えているか否かを判定する。変更部５２３は、当該記憶装置の処理量が処理性能を超えている場合、当該記憶装置についての上限値を所定の性能融通単位で変更する。【選択図】図３
2015084143.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出する算出部と、
情報処理装置から受信した入出力要求に係る処理量と、前記算出部により算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールするスケジュール部と、
前記スケジュール部によりスケジュールされた前記実行順で前記入出力要求に係る処理を実行する実行部と、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定する第１判定部と、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると前記第１判定部により判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する変更部と、
を有する、ストレージ装置。
【請求項２】
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第２所定時間に亘って当該記憶装置の処理性能を下回っているか否かを判定する第２判定部を、さらに有し、
前記複数の記憶装置のうち第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると前記第１判定部により判定され、且つ、前記複数の記憶装置のうち第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると前記第２判定部により判定された場合、前記変更部は、前記上限値を前記所定の性能融通単位で変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
請求項１に記載のストレージ装置。
【請求項３】
前記変更部は、前記第１記憶装置について算出された前記上限値に、前記所定の性能融通単位に対応する値を加算するとともに、前記第２記憶装置について算出された前記上限値から、前記所定の性能融通単位に対応する値を減算するように、前記上限値を変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
請求項２に記載のストレージ装置。
【請求項４】
前記所定の性能融通単位に対応する値は、前記優先度に基づいて決定される前記入出力処理量の最小間隔以下である、
請求項３に記載のストレージ装置。
【請求項５】
前記記憶装置毎に、前記第１所定時間よりも短い時間間隔で、当該記憶装置に対する入出力要求の処理待ち量を取得し、前記第１所定時間内に取得された前記処理待ち量のうち最小のものを最小待ち量として取得する第１取得部を、さらに有し、
前記第１判定部は、前記第１記憶装置について前記第１取得部により取得された前記最小待ち量が０でない場合、前記第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると判定する、
請求項２〜請求項４のいずれか一項に記載のストレージ装置。
【請求項６】
前記記憶装置毎に、前記第２所定時間よりも短い時間間隔で、当該記憶装置に対する入出力要求に係る処理量の、当該記憶装置の処理性能に対する処理余り量を取得し、前記第２所定時間内に取得された前記処理余り量のうち最小のものを最小余り量として取得する第２取得部を、さらに有し、
前記第２判定部は、前記第２取得部により取得された前記最小余り量が０でない場合、前記第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると判定する、
請求項２〜請求項５のいずれか一項に記載のストレージ装置。
【請求項７】
前記記憶装置毎に、当該記憶装置が、一以上の前記第１記憶装置への前記性能融通を行なった前記第２記憶装置であり、且つ、当該記憶装置に対する入出力要求の処理待ちの生じた融通復旧対象であるか否かを判定する第３判定部と、
前記第３判定部により当該記憶装置が前記融通復旧対象であると判定された場合、前記融通復旧対象の記憶装置が他の記憶装置に融通した処理量を、前記一以上の前記第１記憶装置から前記融通復旧対象の記憶装置に復帰させる復旧処理部と、
をさらに有する、請求項２〜請求項６のいずれか一項に記載のストレージ装置。
【請求項８】
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能の所定数倍以上であるか否かを判定する第４判定部と、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能の所定数倍以上であると前記第４判定部により判定された場合、当該記憶装置に対する入出力要求に係る処理量を超える処理余裕をもつ記憶装置から当該記憶装置への性能融通（ミクロ性能融通）を行なう融通処理部と、
をさらに有する、請求項１〜請求項７のいずれか一項に記載のストレージ装置。
【請求項９】
ストレージ装置が、
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出し、
情報処理装置から受信した入出力要求に係る処理量と、算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールし、
スケジュールされた前記実行順で前記入出力要求に係る処理を実行し、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定し、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する、
ことを特徴とするストレージ装置の制御方法。
【請求項１０】
ストレージ装置に含まれるコンピュータに、
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出し、
情報処理装置から受信した入出力要求に係る処理量と、算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールし、
スケジュールされた前記実行順で前記入出力要求に係る処理を実行し、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定し、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する、
処理を実行させる、ストレージ装置制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置の制御方法およびストレージ装置制御プログラムに関する。
【背景技術】
【０００２】
複数のサーバ（以下ホストという）が１台のストレージ装置を共用するストレージシステムでは、ホストの要求した入出力処理がストレージ装置内で競合し、入出力処理（アプリケーション）毎に安定したパフォーマンスを維持できない場合がある。そこで、ストレージ装置は、ホストからの処理要求に対し優先順位（優先度）を付与して処理を行なうことで、入出力処理毎に優先順位に従った適切な性能を維持させるＱｏＳ（Quality of Service）機能を有する場合がある。
【０００３】
ストレージ装置が有するＱｏＳ機能（ストレージＱｏＳ）としては、ホストにより指定された優先度に基づきキューなどの内部リソースを割り当て、コマンドを処理する技術が知られている。一例として、ホストＡとホストＢとの２台が１台のストレージ装置を共有するストレージシステムにおいて、ホストＡが優先度を指定してコマンドを送信する場合について説明する。ストレージ装置は、ホストＡから優先度が指定された場合、優先度の指定が無い処理に比べて例えば３倍の内部リソースを割り当てる。この結果、ストレージ装置は、ホストＡから要求された入出力処理を、ホストＢから要求された入出力処理よりも優先して実行する。
【０００４】
また、ストレージ装置側でホストやＬＵ（Logical Unit；論理ユニット）ごとに目標性能や性能制限を設定することで、入出力処理（アプリケーション）ごとに優先順位に従った適切な性能を維持させる技術も知られている。
【０００５】
さらに、特定の入出力処理の負荷状況が変化した場合、特定の入出力処理に対して設定される優先度を変更して上記負荷状況の変化に対応する技術も知られている。例えば、当該技術では、所定時間の間、継続して、実際の入出力処理量がストレージ全体の処理性能を下回り続けた場合、入出力処理量が性能限界値に到達したＬＵ等に設定された優先度を一段階上げることが行なわれている。当該ＬＵ等の優先度を一段階上げることで、当該ＬＵ等の性能限界値が高く変更される。これにより、当該ＬＵ等の性能調整が行なわれ、上記負荷状況の変化に対応することが可能になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−５３６０１号公報
【特許文献２】特開２００９−９３６３６号公報
【特許文献３】特開２０１３−１２７７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したＱｏＳ機能では、ホストからストレージ装置に要求される性能が変動する場合、その性能変動に対応して、ストレージ装置内のリソース（例えばＬＵ）間での性能調整（性能融通）を臨機応変に行なうことができない。
【０００８】
上述のごとく優先度を変更して負荷状況の変化に対応する技術も知られているが、優先度を変更して性能調整を行なう場合、優先度の変更前後での性能限界値の変更間隔が極めて大きくなる場合がある。性能限界値の変更間隔が大きいと、優先度を上下させるだけでは調整範囲が限定的となり、ホストから要求される性能の変動に細かく追従することができず、ストレージ装置における処理性能が低下する場合もある。
【０００９】
一つの側面で、本発明は、様々な性能変動に対応できるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【００１０】
本件のストレージ装置は、複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出する。また、本件のストレージ装置は、情報処理装置から受信した入出力要求に係る処理量と、算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールし、スケジュールされた前記実行順で前記入出力要求に係る処理を実行する。そして、本件のストレージ装置は、前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定する。さらに、本件のストレージ装置は、当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する。
【発明の効果】
【００１１】
一実施形態によれば、様々な性能変動に対応することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係るストレージシステムのハードウェア構成の一例を示すブロック図である。
【図２】本実施形態のストレージ装置により実行されるファームウェアにより実現される処理部の機能構成を示すブロック図である。
【図３】本実施形態に係るＳＣＳＩターゲット制御部の機能構成およびＱｏＳ制御域の情報を示すブロック図である。
【図４】優先順位と性能値との対応関係の一例を示す図である。
【図５】ＱｏＳ管理テーブルの一例を示す図である。
【図６】本実施形態に係るＮミリ秒タイマスケジュール処理の処理手順を説明するフローチャートである。
【図７】本実施形態に係る全ＬＵ限界値加算処理の処理手順を説明するフローチャートである。
【図８】本実施形態に係るＱｏＳ Ｉ／Ｏ（Input/Output）起動スケジュール処理の処理手順を説明するフローチャートである。
【図９】本実施形態に係るＱｏＳ Ｉ／Ｏ起動スケジュール処理の処理手順を説明するフローチャートである。
【図１０】本実施形態に係るストレージ装置によるコマンド受信処理の処理手順を説明するフローチャートである。
【図１１】本実施形態に係るミクロ融通処理の処理手順を説明するフローチャートである。
【図１２】本実施形態に係るミクロ融通後処理の処理手順を説明するフローチャートである。
【図１３】本実施形態に係るマクロ融通１秒チェック処理の処理手順を説明するフローチャートである。
【図１４】本実施形態に係るマクロ融通処理の処理手順を説明するフローチャートである。
【図１５】本実施形態に係るマクロ融通処理の処理手順を説明するフローチャートである。
【図１６】本実施形態に係るマクロ融通復旧処理の処理手順を説明するフローチャートである。
【図１７】本実施形態に係るマクロ融通復旧処理の処理手順を説明するフローチャートである。
【図１８】本実施形態に係るマクロ融通復旧処理で作成される融通先ユニット配列（ＬＵＮ／ホスト番号配列）の一例を示す図である。
【図１９】本実施形態に係るマクロ融通復旧処理を具体的に説明する図である。
【図２０】本実施形態に係るマクロ融通復旧処理を具体的に説明する図である。
【図２１】本実施形態のストレージ装置制御プログラムを実行するコンピュータを示すブロック図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照し、本願の開示するストレージ装置、ストレージ装置の制御方法およびストレージ装置制御プログラムの実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１４】
〔１〕本実施形態の構成
まず、図１〜図５を参照しながら、本実施形態の構成について説明する。
〔１−１〕本実施形態のストレージシステムの構成
図１は、本実施形態に係るストレージシステム１の構成の一例を示す図である。図１に示すように、ストレージシステム１は、ホスト１０ａ，ホスト１０ｂおよびストレージ装置１００を有する。また、ストレージシステム１において、ストレージ装置１００は、ホスト１０ａおよびホスト１０ｂと接続される。なお、ストレージ装置１００と接続するホストの数は図示に限定されるものではなく、変更可能である。
【００１５】
〔１−２〕ホストの構成
続いて、図１を参照しながら、ホスト１０ａおよびホスト１０ｂの構成について説明する。ホスト１０ａおよびホスト１０ｂは、サーバなどの情報処理装置である。ホスト１０ａは、ＦＣ（Fibre Channel）−Ａ（Adapter）１１ａ，ＦＣ−Ａ１２ａ，ｉＳＣＳＩ（internet Small Computer System Interface）−Ａ１３ａ，ｉＳＣＳＩ−Ａ１４ａを有する。ＦＣ−Ａ１１ａ，１２ｂは、通常、ＦＣ−ＨＢＡ（Host Bus Adapter）の形態であり、ｉＳＣＳＩ−Ａ１３ａ，１４ａは、通常、ＮＩＣ（Network Interface Card）を使用し、そこでｉＳＣＳＩプロトコルを動作させる形態である。
【００１６】
ＦＣ−Ａ１１ａは、後述するＣＭ（Controller Module）２００ａ内のＦＣ−ＣＡ（Communication Adapter）２０１ａとＦＣで接続するインターフェースである。また、同様に、ＦＣ−Ａ１２ａは、後述するＣＭ２００ｂ内のＦＣ−ＣＡ２０１ｂとＦＣで接続するインターフェースである。また、ｉＳＣＳＩ−Ａ１３ａは、後述するＣＭ２００ａ内のｉＳＣＳＩ−ＣＡ２０２ａとｉＳＣＳＩで接続するインターフェースである。同様に、ｉＳＣＳＩ−Ａ１４ａは、後述するＣＭ２００ｂ内のｉＳＣＳＩ−ＣＡ２０２ｂとｉＳＣＳＩで接続するインターフェースである。
【００１７】
ホスト１０ｂは、ＦＣ−Ａ１１ｂ，ＦＣ−Ａ１２ｂ，ｉＳＣＳＩ−Ａ１３ｂ，ｉＳＣＳＩ−Ａ１４ｂを有する。ＦＣ−Ａ１１ｂは、ＦＣ−Ａ１１ａに対応し、ＦＣ−Ａ１２ｂは、ＦＣ−Ａ１２ａに対応する。また、ｉＳＣＳＩ−Ａ１３ｂは、ｉＳＣＳＩ−Ａ１３ａに対応し、ｉＳＣＳＩ−Ａ１４ｂは、ｉＳＣＳＩ−Ａ１４ａに対応する。なお、以下の説明では、ホスト１０ａとホスト１０ｂとを区別せず一般化して称する場合には、ホスト１０として記載する。
【００１８】
〔１−３〕本実施形態に係るストレージ装置の構成
続いて、図１を参照しながら、本実施形態に係るストレージ装置１００の構成について説明する。本実施形態に係るストレージ装置１００は、ＨＤＤ（Hard Disk Drive）１０１ａ〜１０１ｄと、ＣＭ２００ａ，２００ｂとを有する。
ＨＤＤ１０１ａ〜１０１ｄは、ＲＡＩＤ（Redundant Arrays of Inexpensive Drives）を構成し、ユーザデータを記憶する。ＣＭ２００ａ，２００ｂは、ストレージ装置１００のシステム全体を制御するストレージ制御モジュールである。ＣＭ２００ａ，２００ｂとで冗長化されている。なお、ストレージ装置１００が有するＨＤＤ，ＣＭの数は、図示したものに限定されるものではなく、変更可能である。また、コントローラエンクロジャーのストレージ装置（ストレージ制御装置）として、複数のＣＭを搭載し、ＨＤＤ等の物理ディスクは、ディスクエンクロージャのストレージ装置に搭載して、接続することでストレージシステムを構成してもよい。
また、ストレージ装置１００は、ＨＤＤ１０１ａ〜１０１ｄ（一以上の物理記憶装置）を論理的に分割した論理ユニット（以下ＬＵという）として使用される。各ＬＵ（記憶装置）は、それぞれが論理的な１台のＨＤＤとしてホスト１０ａ，１０ｂにより認識される。
【００１９】
ＣＭ２００ａは、ＦＣ−ＣＡ２０１ａ，ｉＳＣＳＩ−ＣＡ２０２ａ，ＳＡＳ（Serial Attached ＳＣＳＩ）２０３ａ，メモリ２１０ａおよびＣＰＵ（Central Processing Unit）２２０ａを有する。
【００２０】
ＦＣ−ＣＡ２０１ａは、ホスト１０ａおよびホスト１０ｂとＦＣで接続するインターフェースである。ｉＳＣＳＩ−ＣＡ２０２ａは、ホスト１０ａおよびホスト１０ｂとｉＳＣＳＩで接続するインターフェースである。ＳＡＳ２０３ａは、ＨＤＤ１０１ａ〜１０１ｄと、ＳＡＳで接続するインターフェースである。なお、以下の説明においてＦＣ−ＣＡ２０１ａおよびｉＳＣＳＩ−ＣＡ２０２ａのことを一般化して称する場合には、適宜、ポートと記載する。
【００２１】
メモリ２１０ａは、例えば、ＲＡＭ（Random Access Memory）などの半導体メモリ素子であり、キャッシュ域２１１ａと制御域２１２ａとを有する。キャッシュ域２１１ａは、ホスト１０ａまたはホスト１０ｂと、ＨＤＤ１０１ａ〜１０１ｄのいずれかとの間でやり取りされるデータを一時的に保持する。制御域２１２ａは、ストレージ装置１００が実行する各種の処理に要する情報を保持する。また、制御域２１２ａは各種プログラム等も格納されている。さらに、制御域２１２ａは、後述するＱｏＳ制御域２１３（図３参照）を有する。
【００２２】
ＣＰＵ２２０ａは、演算や制御などの各種処理を行う電子回路であり、後述する処理部３００（図２参照）を実現するために用いられる。
【００２３】
ＣＭ２００ｂは、ＦＣ−ＣＡ２０１ｂ，ｉＳＣＳＩ−ＣＡ２０２ｂ，ＳＡＳ２０３ｂ，メモリ２１０ｂおよびＣＰＵ２２０ｂを有する。ＦＣ−ＣＡ２０１ｂは、ＦＣ−ＣＡ２０１ａに対応し、ｉＳＣＳＩ-ＣＡ２０２ｂは、ｉＳＣＳＩ-ＣＡ２０２ａに対応し、ＳＡＳ２０３ｂは、ＳＡＳ２０３ａに対応する。また、メモリ２１０ｂは、メモリ２１０ａに対応し、ＣＰＵ２２０ｂは、ＣＰＵ２２０ａに対応する。
【００２４】
このようなストレージシステム１では、ストレージ装置１００のＣＰＵ２２０ａ，２２０ｂは、ファームウェアによって以下の処理を実行する。即ち、ストレージ装置１００は、複数のＬＵに設定された優先度に基づいて決定される入出力処理量の上限値をＬＵ毎に算出する。また、ストレージ装置１００は、ホスト１０から受信した入出力要求に係る処理量と、算出された上限値とに基づいて、入出力要求に係る処理の実行順をスケジュールし、スケジュールされた実行順で入出力要求に係る処理を実行する。そして、ストレージ装置１００は、ＬＵ毎に、当該ＬＵに対する入出力要求に係る処理量が第１所定時間（例えば３０秒）に亘って当該ＬＵの処理性能を超えているか否かを判定する。さらに、ストレージ装置１００は、当該ＬＵに対する入出力要求に係る処理量が当該ＬＵの処理性能を超えていると判定された場合、当該ＬＵについての上限値を、所定の性能融通単位（ユニット）で変更する。このようにして、ストレージ装置１００は、ホスト１０からの入出力要求（Ｉ／Ｏ要求，コマンド）の状況やホスト１０の接続環境の変化に応じて、ストレージ性能を最適に制御する。特に、ストレージ装置１００は、所定の性能融通単位（ユニット）で上限値を変更調整することで、ホスト１０から要求される処理性能の変動に細かく追従することができ、様々な性能変動に対応することができる。
【００２５】
なお、入出力処理量の上限値は、例えば、後述する限界Ｉ／Ｏ数や限界ブロック数であり、上限値，限界Ｉ／Ｏ数，限界ブロック数のことを、限界値、または、性能限界値という場合がある。
【００２６】
〔１−４〕ファームウェアにより実現される処理部の機能構成
次に、図２を参照しながら、ストレージ装置１００により実行されるファームウェアにより実現される処理部３００の機能構成について説明する。図２は、ストレージ装置１００により実行されるファームウェアにより実現される処理部３００の機能構成を示すブロック図である。なお、処理部３００は、メモリ２１０ａおよびメモリ２１０ｂと、ＣＰＵ２２０ａおよびＣＰＵ２２０ｂとが協働して実現される。
【００２７】
図２に示すように、処理部３００は、ＦＣ Ｉ／Ｆ（InterFace）制御部３０１，ｉＳＣＳＩ Ｉ／Ｆ制御部３０２，ＳＣＳＩターゲット制御部３０３，ＳＣＳＩコマンド制御部３０４，リソース制御部３０５，キャッシュ制御部３０６，ＲＡＩＤ制御部３０７を有する。また、処理部３００は、ディスク制御部３０８，ＳＡＳ Ｉ／Ｆ制御部３０９，メモリ制御部３１０，カーネル部３１１，システム構成制御部３１２，保守インタフェース制御部３１３を有する。
【００２８】
ＦＣ Ｉ／Ｆ制御部３０１は、ホスト１０とＦＣ接続する場合のＦＣプロトコルチップの制御を行なう。ｉＳＣＳＩ Ｉ／Ｆ制御部３０２は、ホスト１０とｉＳＣＳＩ接続する場合のｉＳＣＳＩプロトコルチップの制御を行なう。
【００２９】
ＳＣＳＩターゲット制御部３０３は、ＳＣＳＩターゲットの制御を行なう。ＳＣＳＩターゲット制御部３０３は、例えば、ホスト管理，ＬＵ管理，コマンド実行管理，コマンド以外の異常系イベント管理などを行なう。なお、ＳＣＳＩターゲット制御部３０３の詳細な機能については、図３を参照しながら後述する。
【００３０】
ＳＣＳＩコマンド制御部３０４は、ＳＣＳＩコマンド種ごとの制御を行なう。リソース制御部３０５は、全ＣＭをまたいでの論理ボリューム管理，ホストパス管理，負荷管理を行なう。キャッシュ制御部３０６は、キャッシュメモリの管理を行なう。ＲＡＩＤ制御部３０７は、ＲＡＩＤグループの管理を行なう。ディスク制御部３０８は、ディスクコマンド制御を行なう。ＳＡＳ Ｉ／Ｆ制御部３０９は、ディスク１０１ａ〜１０１ｄとＳＡＳ接続するプロトコルチップの制御を行なう。
【００３１】
メモリ制御部３１０は、各制御部が使用する制御メモリを管理する。カーネル部３１１は、基本ソフト部であり、各制御部の下位に位置する。システム構成制御部３１２は、ストレージ装置１００の構成情報を管理する。保守インターフェース制御部３１３は、保守用のユーザインターフェースを制御する。
【００３２】
〔１−５〕本実施形態に係るＳＣＳＩターゲット制御部の機能構成およびＱｏＳ制御域の情報
次に、図３を参照しながら、ＳＣＳＩターゲット制御部３０３の機能構成およびＱｏＳ制御域の情報について説明する。図３は、本実施形態に係るＳＣＳＩターゲット制御部３０３の機能構成およびＱｏＳ制御域２１３の情報を示すブロック図である。
【００３３】
図３に示すように、ＳＣＳＩターゲット制御部３０３は、後述するＱｏＳ管理テーブル５０１や、後述する各ＬＵ（ＬＵＮ＃１〜＃ｍ；ｍは２以上の整数）の性能融通情報や、後述するミクロ融通有フラグなどに基づき、制御を行なう。ＱｏＳ管理テーブル５０１や、各ＬＵの性能融通情報や、ミクロ融通有フラグは、例えば、メモリ２１０ａ，２１０ｂの制御域２１２ａ，２１２ｂにおけるＱｏＳ制御域２１３に保存される。
【００３４】
また、図３に示すように、ＳＣＳＩターゲット制御部３０３は、待ちキュー格納部５０２，性能設定部５０３，コマンド受信部５０４，算出部５０５，スケジュール部５０６，実行部５０７を有する。さらに、ＳＣＳＩターゲット制御部３０３は、マクロ融通チェック部５１０，マクロ融通処理部５２０，マクロ融通復旧処理部５３０，ミクロ融通処理部５４０を有する。なお、以下に説明するＳＣＳＩターゲット制御部３０３の各機能は、メモリ２１０ａおよびメモリ２１０ｂと、ＣＰＵ２２０ａおよびＣＰＵ２２０ｂとが協働して実現される。
【００３５】
〔１−５−１〕優先順位と性能値との対応関係、および、ＱｏＳ管理テーブル
ＱｏＳ管理テーブル５０１は、対象毎に、「優先順位」と「性能値」と「実行可能な入出力処理数」と「実行した入出力処理数」とを対応付けた情報を記憶する。ここで、ＱｏＳ管理テーブル５０１の詳細な説明をする前に、まず、図４を参照しながら「優先順位」と「性能値」との対応関係について説明する。図４は、優先順位と性能値との対応関係の一例を示す図である。
【００３６】
図４に示すように、「優先順位」は、優先度を示し、例えば、１から１５までの１５段階のレベルとして設定される。なお、優先順位のレベルは、例示に過ぎず、１から１５の１５段階に限定されるものではない。
【００３７】
また、「優先順位」の段階毎に「性能値」が対応付けられる。言い換えると、「優先順位」は、性能制限を示す。「性能値」としては、単位時間当たりの通信量であるＭＢ／ｓ（megabytes per second）と、単位時間当たりに実行可能な入出力処理数であるＩＯＰＳ（Input Output Per Second）とが用いられる。「優先順位」（性能設定レベル）のそれぞれに対する具体的な「性能値（ＭＢ／ｓ）」および「性能値（ＩＯＰＳ）」は、例えば、ディスクドライブなどの現実的な性能を考慮して、図４に示すように設定される。
【００３８】
図４に示す例では、「優先順位」が「１」に設定される場合、単位時間当たりの通信量が「８００（ＭＢ／ｓ）」であり、単位時間当たりに「１５０００」の入出力処理が実行されることを示す。同様に、「優先順位」が「３」に設定される場合、単位時間当たりの通信量が「６００（ＭＢ／ｓ）」であり、単位時間当たりに「１００００」の入出力処理が実行されることを示す。
【００３９】
また、図４に示す例では、優先順位１〜８での性能値（ＭＢ／ｓ）の間隔は１００であり、優先順位８〜１０での性能値（ＭＢ／ｓ）の間隔は３０であり、優先順位１０〜１１での性能値（ＭＢ／ｓ）の間隔は１５であり、優先順位１１〜１５での性能値（ＭＢ／ｓ）の間隔は５である。つまり、性能値（ＭＢ／ｓ）は、「優先順位」の低いレベル（１５）から高いレベル（１）に向かって大きくなるように設定されている。
【００４０】
同様に、優先順位１〜５での性能値（ＩＯＰＳ）の間隔は２５００であり、優先順位５〜７での性能値（ＩＯＰＳ）の間隔は２０００であり、優先順位７〜１０での性能値（ＩＯＰＳ）の間隔は２００であり、優先順位１０〜１１での性能値（ＩＯＰＳ）の間隔は１００であり、優先順位１１〜１５での性能値（ＩＯＰＳ）の間隔は６０である。つまり、性能値（ＩＯＰＳ）も、「優先順位」の低いレベル（１５）から高いレベル（１）に向かって大きくなるように設定されている。
【００４１】
次に、図５を参照しながら、ＱｏＳ管理テーブル５０１の一例について説明する。図５は、ＱｏＳ管理テーブル５０１の一例を示す図である。図５に示すように、ＱｏＳ管理テーブル５０１は、「対象」，「優先順位」，「Ｎミリ秒Ｉ／Ｏ数」，「Ｎミリ秒ブロック数」，「限界Ｉ／Ｏ数」，「限界ブロック数」，「現Ｉ／Ｏ数」および「現ブロック数」を対応付けた情報を記憶する。
【００４２】
ここで、ＱｏＳ管理テーブル５０１が記憶する「対象」は、優先順位を設定する対象を示す。ここで、「ポート」，「ホスト」，「ホストとＬＵＮとの組合せ」，「ポートとＬＵＮとの組合せ」のそれぞれが優先順位を設定する対象となる。例えば、「対象」には、「ＦＣ−ＣＡ２０１ａ」，「ホスト１０ａ」，「ホスト１０ａ−ＬＵＮ−Ａ」などが格納される。なお、以下の説明では、「対象」として「ホストとＬＵＮとの組合せ」または「ポートとＬＵＮとの組合せ」を指す場合については、単に、「ＬＵ」として適宜記載する。
【００４３】
「優先順位」は、対象に設定された優先度を示す。ここでは、優先順位のレベルが１から１５までの１５段階のいずれかのレベルが設定されるものとする。「優先順位」には、例えば「３」，「５」，「７」などのレベルが格納される。
【００４４】
「Ｎミリ秒Ｉ／Ｏ数」は、所定の時間（Ｎミリ秒）の間に実行可能なＩ／Ｏ数（入出力要求数，入出力コマンド数）を示す。ここで、所定の時間（Ｎミリ秒）として、例えば１０ミリ秒、つまりＮ＝１０が設定される。また、「Ｎミリ秒Ｉ／Ｏ数」には、例えば「１００」，「５０」，「１０」などの値が格納される。
【００４５】
「Ｎミリ秒ブロック数」は、所定の時間（Ｎミリ秒）の間に書込み可能なブロック数を示す。ブロック数は、１ブロックを５１２バイトとして、単位時間当たりの通信量（ＭＢ／ｓ）から算出される。なお、ここでは、所定の時間（Ｎミリ秒）として、例えば１０ミリ秒が設定される。すなわち、「Ｎミリ秒ブロック数」には、１０ミリ秒間に書込み可能なブロック数として、例えば「１２２８８」，「８１９２」，「４０９６」などの値が格納される。
【００４６】
「限界Ｉ／Ｏ数」は、現時点での実行可能なＩ／Ｏ数（入出力処理量）の上限値を示す。限界Ｉ／Ｏ数は、「Ｎミリ秒Ｉ／Ｏ数」に「Ｎミリ秒が経過した回数（ｎ）」を乗じた値から、後述する「現Ｉ／Ｏ数」を減算することによって算出される。例えば、「限界Ｉ／Ｏ数」には、「１００×ｎ−ａ」，「５０×ｎ−ｂ」，「１０×ｎ−ｃ」などの値が格納される。なお、「ｎ」は、「Ｎミリ秒が経過した回数」であり、「ａ」から「ｃ」は、後述するように、対応する「現Ｉ／Ｏ数」の値である。
【００４７】
「限界ブロック数」は、現時点での書込み可能なブロック数（入出力処理量）の上限値を示す。限界ブロック数は、「Ｎミリ秒ブロック数」に「Ｎミリ秒が経過した回数（ｎ）」を乗じた値から、後述する「現ブロック数」を減算することによって算出される。例えば、「限界ブロック数」には、「１２２８８×ｎ−Ａ」、「８１９２×ｎ−Ｂ」、「４０９６×ｎ−Ｃ」などの値が格納される。なお、「ｎ」は、「Ｎミリ秒が経過した回数」であり、「Ａ」から「Ｃ」は、後述するように、対応する「現ブロック数」の値である。
【００４８】
「現Ｉ／Ｏ数」は、所定の時間までに要求されたＩ／Ｏ数の累積値を示す。例えば、「現Ｉ／Ｏ数」には、「ａ」，「ｂ」，「ｃ」などが格納される。「現ブロック数」は、所定の時間までに要求されたブロック数の累積値を示す。例えば、「現ブロック数」には、「Ａ」，「Ｂ」，「Ｃ」などが格納される。
【００４９】
図５に示す例では、ＱｏＳ管理テーブル５０１は、「ポート」の優先順位が「３」であり、「Ｎミリ秒Ｉ／Ｏ数」が「１００」であり、「Ｎミリ秒ブロック数」が「１２２８８」であることを示す。また、ＱｏＳ管理テーブル５０１は、「限界Ｉ／Ｏ数」が「１００×ｎ−ａ」であり、「限界ブロック数」が「１２２８８×ｎ−Ａ」であり、「現Ｉ／Ｏ数」が「ａ」であり、「現ブロック数」が「Ａ」であることを示す。
【００５０】
なお、ＱｏＳ管理テーブル５０１が記憶する「対象」，「優先順位」，「Ｎミリ秒Ｉ／Ｏ数」，「Ｎミリ秒ブロック数」は、後述する性能設定部５０３により初期設定される値である。また、ＱｏＳ管理テーブル５０１が記憶する「限界Ｉ／Ｏ数」，「限界ブロック数」，「現Ｉ／Ｏ数」および「現ブロック数」はＮミリ秒ごとに更新される値である。
【００５１】
〔１−５−２〕待ちキュー格納部
待ちキュー格納部５０２は、キューであり、コマンド受信部５０４が受信したコマンドのうち、所定時間経過後にスケジュールされるコマンドを格納する。また、待ちキュー格納部５０２は、ホストとＬＵＮとの組合せ毎またはポートとＬＵＮとの組合せ毎（ＬＵ毎）に設けられる。
【００５２】
〔１−５−３〕性能設定部
性能設定部５０３は、ＱｏＳ管理テーブル５０１が記憶する情報のうち「対象」，「優先順位」，「Ｎミリ秒Ｉ／Ｏ数」，「Ｎミリ秒ブロック数」のそれぞれに、管理者から受け付けた値を設定する。また、性能設定部５０３は、表１を参照しながら後述するミクロ性能融通およびマクロ性能融通の各種条件や、当該各種条件に係る値などを、管理者からの指示に応じて設定する機能も有する。なお、管理者は、各ホスト１０の性能や各ホスト１０が実行するアプリケーションなどを加味して、優先順位や各種条件に係る値などを設定する。さらに、性能設定部５０３は、ストレージ装置１００に接続するホスト１０や、ホスト１０とＬＵＮとの組合せ（ＬＵ）が変化した場合に、ＱｏＳ管理テーブル５０１が記憶する情報を更新する。
【００５３】
〔１−５−４〕コマンド受信部
コマンド受信部５０４は、ホスト１０からコマンド（入出力要求）を受信して受け付けるとともに、実行待ちのコマンドがあるか否かを判定する。例えば、コマンド受信部５０４は、実行待ちのコマンドがあると判定した場合、受信したコマンドを待ちキュー格納部５０２に格納させる。また、コマンド受信部５０４は、実行待ちのコマンドがないと判定した場合、後述するスケジュール部５０６に受信したコマンドの実行順をスケジュールさせる。なお、コマンド受信部５０４の詳細な動作（コマンド受信処理の処理手順）については、図１０を参照しながら後述する。
【００５４】
〔１−５−５〕算出部
算出部５０５は、ホスト１０，ポートおよびＬＵのそれぞれに対して設定された優先順位に基づいて決定される入出力処理量の上限値（即ち限界Ｉ／Ｏ数と限界ブロック数）を所定の時間（Ｎミリ秒）毎に算出する。ここで、算出部５０５は、１０ミリ秒毎に限界Ｉ／Ｏ数と限界ブロック数とを算出するものとして説明する。例えば、算出部５０５は、１０ミリ秒毎に、限界Ｉ／Ｏ数にＮミリ秒Ｉ／Ｏ数を加算する。また、算出部５０５は、１０ミリ秒毎に、限界ブロック数にＮミリ秒ブロック数を加算する。算出部５０５は、算出した限界Ｉ／Ｏ数と限界ブロック数とをＱｏＳ管理テーブル５０１に格納させる。
【００５５】
さらに、算出部５０５は、後述するマクロ性能融通に対応すべく、以下のような機能を有する。つまり、算出部５０５は、１０ミリ秒毎に、融通先ＬＵ（後述する融通フラグＦINがオンのＬＵ）の限界Ｉ／Ｏ数に、上述のごとくＮミリ秒Ｉ／Ｏ数を加算するとともに、後述する融通ユニット数ＮＢに対応するＩ／Ｏ数をさらに加算する（図７参照）。同様に、算出部５０５は、１０ミリ秒毎に、当該融通先ＬＵの限界ブロック数に、上述のごとくＮミリ秒ブロック数を加算するとともに、上記融通ユニット数ＮＢに対応するブロック数をさらに加算する（図７参照）。
【００５６】
一方、算出部５０５は、１０ミリ秒毎に、融通元ＬＵ（後述する融通フラグＦOUTがオンのＬＵ）の限界Ｉ／Ｏ数に、上述のごとくＮミリ秒Ｉ／Ｏ数を加算した値から、上記融通ユニット数ＮＢに対応するＩ／Ｏ数を減算する（図７参照）。同様に、算出部５０５は、１０ミリ秒毎に、当該融通元ＬＵの限界ブロック数に、上述のごとくＮミリ秒ブロック数を加算した値から、上記融通ユニット数ＮＢに対応するブロック数を減算する（図７参照）。
【００５７】
〔１−５−６〕スケジュール部
スケジュール部５０６は、ホスト１０から受け付けたコマンド数と、算出部５０５により算出された限界Ｉ／Ｏ数および限界ブロック数とに基づいて、コマンドの実行順をスケジュールする。例えば、スケジュール部５０６は、所定の時間が経過する毎に、コマンドの実行順をスケジュールする。なお、スケジュール部５０６の詳細な動作（ＱｏＳ Ｉ／Ｏ起動スケジュール処理の処理手順）については、図８および図９を参照しながら後述する。
【００５８】
また、スケジュール部５０６は、マークしたホストとマークしたＬＵＮとを復元する。そして、スケジュール部５０６は、復元したホストとＬＵＮとの組合せから順に、以下の処理を実行する。なお、ホストのマークおよびＬＵＮのマークについては後述する。
【００５９】
まず、スケジュール部５０６は、ホスト１０から受け付けたコマンド数が、算出部５０５により算出されたホスト，ポート，ＬＵＮそれぞれの限界Ｉ／Ｏ数および限界ブロック数以内で処理可能であるか否かを判定する。ここで、スケジュール部５０６は、受け付けたコマンド数が限界Ｉ／Ｏ数および限界ブロック数以内であり、処理可能であると判定した場合、実行部５０７にコマンドを起動させる。
【００６０】
また、スケジュール部５０６は、処理可能であると判定した場合、ＱｏＳ管理テーブル５０１が記憶する「現Ｉ／Ｏ数」に、起動したコマンド分のＩ／Ｏ数を加算した値を格納させる。同様に、スケジュール部５０６は、処理可能であると判定した場合、ＱｏＳ管理テーブル５０１が記憶する「現ブロック数」に、起動したコマンド分のブロック数を加算した値を格納させる。
【００６１】
また、スケジュール部５０６は、処理可能であると判定した場合、ＱｏＳ管理テーブル５０１が記憶する「限界Ｉ／Ｏ数」に、起動したコマンド分のＩ／Ｏ数を減算した値を格納させる。同様に、スケジュール部５０６は、処理可能であると判定した場合、ＱｏＳ管理テーブル５０１が記憶する「限界ブロック数」に、起動したコマンド分のブロック数を減算した値を格納させる。
【００６２】
一方、スケジュール部５０６は、受け付けたコマンド数が限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合、所定の時間が経過した後に、ホスト１０から受け付けたコマンド数が、新たに算出された限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する。
【００６３】
例えば、スケジュール部５０６は、受け付けたコマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合、ホストとＬＵＮとの組合せをマークし、所定の時間が経過後に、マークしたホストとＬＵＮとの組合せからスケジュールを実行する。また、例えば、スケジュール部５０６は、ポートの限界Ｉ／Ｏ数および限界ブロック数以内ではあるが、ホストの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合、ＬＵＮをマークする。そして、スケジュール部５０６は、次のＬＵＮをセットし、ホスト１０から受け付けたコマンド数が、新たに算出された限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する。ここで、次のＬＵＮが無い場合、スケジュール部５０６は、次のホストをセットし、受け付けたコマンド数が、新たに算出された限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する。
【００６４】
また、スケジュール部５０６は、コマンド受信部５０４により実行待ちのコマンドがないと判定された場合、所定の時間が経過するのを待つことなくコマンドの実行順をスケジュールする。例えば、スケジュール部５０６は、ホスト１０から受け付けたコマンド数が、算出部５０５により算出されたホスト，ポート，ＬＵＮそれぞれの限界Ｉ／Ｏ数および限界ブロック数以内で処理可能であるか否かを判定する。ここで、スケジュール部５０６は、ホスト１０から受け付けたコマンド数がポート，ホスト，ＬＵＮのいずれかの限界Ｉ／Ｏ数および限界ブロック数以内で処理可能ではないと判定した場合、コマンドを待ちキュー格納部５０２に格納する。そして、スケジュール部５０６は、所定の時間が経過した後に、ホスト１０から受け付けたコマンド数が、新たに算出された限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する。
【００６５】
〔１−５−７〕実行部
実行部５０７は、スケジュール部５０６によりスケジュールされた実行順でコマンドを待ちキュー格納部５０２からデキューし、コマンドを起動して入出力処理を実行する。
【００６６】
〔１−５−８〕ミクロ性能融通、およびマクロ性能融通
次に、マクロ融通チェック部５１０，マクロ融通処理部５２０，マクロ融通復旧処理部５３０，ミクロ融通処理部５４０について説明するのに先立ち、本実施形態で採用される２種類の性能融通方式について説明する。２種類の性能融通方式は、ミクロ性能融通方式とマクロ性能融通方式とである。
【００６７】
なお、以下では、ストレージ装置１００の処理性能を改善すべく、各ＬＵ（または各ホスト）における入出力処理量の上限値つまり性能限界値を調整することを「性能融通」という。「性能融通」では、処理性能不足を解消するために性能限界値を高く変更するＬＵを、「融通先ＬＵ」という。また、「性能融通」では、「融通先ＬＵ」の性能限界値を高くする場合、「融通先ＬＵ」の性能限界値を高くする分だけ、処理性能に余裕のあるＬＵの性能限界値を低く変更する。これにより、処理性能に余裕のあるＬＵから「融通先ＬＵ」への性能融通が行なわれる。上述のごとく「融通先ＬＵ」に対して処理性能を融通した「処理性能に余裕のあるＬＵ」を、「融通元ＬＵ」という。
【００６８】
「ミクロ性能融通」は、一時的なスパイク性能などを吸収する際に用いて有効な方式である。「ミクロ性能融通」では、例えば１秒以下のサイクル（ミクロサイクル）で、処理性能が不足するＬＵに、処理性能に余裕のあるＬＵから処理性能が融通される。このときの融通量（後述するミクロ融通ユニット数ＮＨ）は、記憶されず、次のミクロサイクルでは性能限界値の調整に反映されない。従って、ストレージ装置１００は、次のミクロサイクルでは、元の処理性能で動作する。このように、「ミクロ性能融通」は一時的な融通であるため、「ミクロ性能融通」を用いることで一度に大量の性能融通が可能である。
【００６９】
「マクロ性能融通」は、ホスト１０から要求される処理性能が様々な状況に変動する場合に、性能融通量（性能限界値の調整量）を学習して調整し、各ＬＵの処理性能を実際の入出力性能に追従させる方式である。「マクロ性能融通」では、例えば２秒以上の、より大きなサイクル（マクロサイクル）で処理性能が監視される。そして、所定時間（例えば１マクロサイクル）に亘り連続して性能不足となっているＬＵに対し、前記所定時間に亘り連続して処理性能に余裕のあるＬＵから、処理性能が融通される。このように、「マクロ性能融通」は、性能融通量を学習により調整するため、ホスト１０から要求される処理性能の継続的な変動に有効に対応することができる。
【００７０】
なお、本実施形態の「マクロ性能融通」では、各ＬＵについて、例えば、１秒毎に処理性能の不足／余裕をチェックすることで、２秒以上のマクロサイクル毎にマクロ性能融通を実行するか否かの判定が行なわれる。例えば、１マクロサイクル内において、１秒毎に、処理性能が不足しているか、あるいは、処理性能に余裕があるかがチェックされる。このとき、１マクロサイクルの間、常に処理性能が不足している融通先ＬＵが存在し、且つ、１マクロサイクルの間、常に処理性能に余裕のある融通元ＬＵが存在していることが、マクロ性能融通の実行条件として設定される。そして、マクロ性能融通の実行条件を満たす場合、融通元ＬＵから融通先ＬＵへのマクロ性能融通が、所定の性能融通単位で実行される。
【００７１】
また、本実施形態の「マクロ性能融通」では、１マクロサイクル当たりの融通量の変更は、所定の性能融通単位（ユニット単位）で行なわれる。本実施形態において、所定の性能融通単位（ユニット単位）の入出力処理量は、上記優先度に基づいて決定される入出力処理量（性能値ＭＢ／ｓ，ＩＯＰＳ）の最小間隔以下に設定される。以下、所定の性能融通単位の入出力処理量を「ユニット」という。例えば、図４に示す優先順位と性能値との対応関係では、上記優先度についての性能値の最小間隔は、５ＭＢ／ｓおよび６０ＩＯＰＳであるので、「１ユニット」は、例えば、５ＭＢ／ｓおよび６０ＩＯＰＳに設定される。
【００７２】
ここで、上述のごとく優先度を変更して負荷状況の変化に対応する従来技術を用いた場合を考える。この場合、図４に示す例では、優先順位１〜７の範囲における性能限界値の変更間隔（融通量）は、性能値ＭＢ／ｓについて１００、性能値ＩＯＰＳについて２５００または２０００であり、優先順位８〜１５の範囲における変更間隔（融通量）に比べ、かなり大きい。性能限界値の変更間隔が大きいと、優先順位を上下させるだけでは調整範囲が限定的となり、ホスト１０から要求される性能の変動に細かく追従することができない。これに対して、本実施形態の「マクロ性能融通」では、上記優先度についての性能値の最小間隔５ＭＢ／ｓ，６０ＩＯＰＳを「１ユニット」とする単位で、性能融通が行なわれる。したがって、優先度を変更して性能限界値を変更する場合に比べ、性能限界値の変更間隔（融通量）を大幅に小さくすることができ、ホスト１０から要求される処理性能の変動に細かく追従することができ、様々な性能変動に対応することができる。
【００７３】
本実施形態では、上述したミクロ性能融通およびマクロ性能融通の特徴を踏まえ、ミクロ性能融通およびマクロ性能融通のいずれか一方が使用されてもよいし、両方が同時に使用されてもよい。一方のみを使用する場合、表１におけるパラメータ等を適切に設定することにより、より有効な融通が行なわれる。また、両方を使用する場合、一時的なスパイク性能などを吸収する際にはミクロ性能融通を使用する一方、継続的な性能変動を吸収する際にはマクロ性能融通を使用するように制御を行なうことで、両方の特徴を有効に利用することができる。
【００７４】
ついで、下記表１を参照しながら、ミクロ性能融通およびマクロ性能融通の各種条件や、当該各種条件に係る値などについて説明する。当該各種条件や、当該各種条件に係る値などは、前述した通り、性能設定部５０３により、管理者からの指示に応じて設定される。下記表１のごとく設定された各種条件や値に基づいて、ミクロ性能融通およびマクロ性能融通がそれぞれ実行される。
【００７５】
下記表１に示すように、本実施形態の「ミクロ性能融通」および「マクロ性能融通」では、それぞれ、以下のように各種条件や値が設定され使用される。各種条件や値としては、「サイクル」，「１サイクルでの融通ＬＵ数」，「融通回数制限」，「融通量」，「融通を受ける条件」，「融通する条件」，「復帰条件」が設定される。
【００７６】
【表１】
2015084143.tif 000003
【００７７】
「サイクル」は、性能融通を実行する周期（秒）である。ミクロ性能融通を実行するサイクル（ミクロサイクル）は、例えば、０．５秒とし、マクロ性能融通を実行するサイクル（マクロサイクル）は、例えば、３０秒とする。
【００７８】
「１サイクルでの融通ＬＵ数」は、１サイクルの間に性能融通を行なうＬＵの数の上限値である。ミクロ性能融通の「１サイクルでの融通ＬＵ数」は、例えば、最大４ＬＵ（デフォルト）とし、１６ＬＵまでチューニング可能とする。また、マクロ性能融通の「１サイクルでの融通ＬＵ数」も、例えば、最大４ＬＵ（デフォルト）とし、１６ＬＵまでチューニング可能とする。
【００７９】
「融通回数制限」は、性能融通の実行回数の制限に係る情報である。ミクロ性能融通の「融通回数制限」は、例えば、一つのＬＵについて、マクロ性能融通１サイクル（マクロサイクル；３０秒）当たり４回までとし、チューニング可能とする。また、マクロ性能融通の「融通回数制限」は、「なし」に設定される。ただし、上限および下限は設定される。
【００８０】
「融通量」は、性能融通１回当たりに融通される量である。ミクロ性能融通の「融通量」は、例えば、１回当たり、設定性能（例えば図４に示す優先度に応じて設定された性能値）の２倍とし、チューニング可能とする。また、マクロ性能融通の「融通量」は、例えば、１回当たり、上述した１ユニット（所定の性能融通単位）、つまり６０ＩＯＰＳおよび５ＭＢ／ｓの両方で同時に融通する。
【００８１】
「融通を受ける条件」は、ＬＵが他のＬＵから性能融通を受ける条件、つまりＬＵが融通先ＬＵになる条件である。ミクロ性能融通の「融通を受ける条件」は、１ミクロサイクルで設定性能（性能値）の２〜４倍の待ちＩ／Ｏ（Ｉ／Ｏ数またはブロック数）を検出したＬＵであることとする。また、マクロ性能融通の「融通を受ける条件」は、３０秒（第１所定時間）の間、継続して処理性能不足を検出したＬＵであることとする。
【００８２】
「融通する条件」は、ＬＵが他のＬＵへ性能融通を行なう条件、つまりＬＵが融通元ＬＵになる条件である。ミクロ性能融通の「融通する条件」は、ミクロ性能融通を行なう際の上記「融通量」以上の余裕があることとする。また、マクロ性能融通の「融通する条件」は、３０秒（第２所定時間）の間、継続して処理性能に余裕のあるＬＵであることとする。
【００８３】
「復帰条件」は、融通元ＬＵから融通先ＬＵへ融通された入出力処理量を、融通先ＬＵから融通元ＬＵに復帰（復旧）させる条件である。ミクロ性能融通では、上述したように、融通量は記憶されず次のミクロサイクルでストレージ装置１００は元の処理性能で動作するため、ミクロ性能融通の「復帰条件」は設定されない。また、マクロ性能融通の「復帰条件」は、他のＬＵに性能融通を行なっている融通元ＬＵで処理性能不足を検出することとする。また、マクロ性能融通の復帰（復旧）は、ＱｏＳ関連設定変更時にも実行される。
【００８４】
〔１−５−９〕ＬＵの性能融通情報
次に、上述したミクロ性能融通およびマクロ性能融通を実行すべく、図３に示すように、ＱｏＳ制御域２１３に、ＬＵ（ＬＵＮ＃１〜＃ｍ；ｍは２以上の整数）毎に保持される、各ＬＵの性能融通情報について説明する。つまり、ＱｏＳ制御域２１３には、ＬＵ毎に、例えば、６種類の融通フラグＦIN，ＦOUT，ＦINMAX，ＦOUTMAX，ＦMICIN，ＦMICOUTと８種類の数値ＮＢ，ＮＣ，ＮＤ，ＮＥ，ＮＦ，ＮＧ，ＮＨ，ＮＩとが性能融通情報として保存される。これらの融通フラグや数値は、管理者からの指示に応じて性能設定部５０３により設定されるか、もしくは、ミクロ性能融通およびマクロ性能融通の実行中にＳＣＳＩターゲット制御部３０３の機能によって設定・更新される。
【００８５】
融通フラグＦINは、対象ＬＵが他のＬＵからマクロ性能融通を受けている場合つまり対象ＬＵが融通先ＬＵである場合にオンに設定され、それ以外の場合にオフに設定される。
融通フラグＦOUTは、対象ＬＵが他のＬＵに対しマクロ性能融通を行なっている場合つまり対象ＬＵが融通元ＬＵである場合にオンに設定され、それ以外の場合にオフに設定される。
【００８６】
融通フラグＦINMAXは、対象ＬＵが他のＬＵから受けているマクロ性能融通の融通量が予め設定された上限に到達している場合（上限到達時）にオンに設定され、それ以外の場合にオフに設定される。
融通フラグＦOUTMAXは、対象ＬＵから他のＬＵに対するマクロ性能融通の融通量が予め設定された下限に到達している場合（下限到達時）にオンに設定され、それ以外の場合にオフに設定される。
【００８７】
融通フラグＦMICINは、対象ＬＵが他のＬＵからミクロ性能融通を受けている場合にオンに設定され、それ以外の場合にオフに設定される。
融通フラグＦMICOUTは、対象ＬＵが他のＬＵに対しミクロ性能融通を行なっている場合にオンに設定され、それ以外の場合にオフに設定される。
【００８８】
融通ユニット数ＮＢは、対象ＬＵが他のＬＵからマクロ性能融通を受けている場合あるいは対象ＬＵが他のＬＵに対しマクロ性能融通を行なっている場合の融通量に対応するユニット数である。ここで、融通ユニット数ＮＢは、当該融通量を、上述した所定の性能融通単位（ユニット）の数に換算した値である。
【００８９】
待ちＩ／Ｏ数ＮＣは、対象ＬＵにおける、ＱｏＳ制御で待ち状態のＩ／Ｏ（ホスト１０からの入出力要求またはコマンド）の数である。
待ちブロック数ＮＤは、対象ＬＵにおける、ＱｏＳ制御で待ち状態のＩ／Ｏ（ホスト１０からの入出力要求またはコマンド）の総ブロック数である。
これらの待ちＩ／Ｏ数ＮＣおよび待ちブロック数ＮＤから、ＱｏＳ制御で待ち状態のＩ／Ｏに対応するユニット数（待ちユニット数）が換算される。
【００９０】
最小余りユニット数ＮＥは、対象ＬＵにおける１秒毎の余りユニット数ＮＩの最小値（最小余り量）である。ここで、余りユニット数ＮＩは、対象ＬＵに対するＩ／Ｏに係る処理量の、対象ＬＵの処理性能に対する処理余り量（余裕値）に対応するもので、当該処理余り量を、上述した所定の性能融通単位（ユニット）の数に換算した値である。
【００９１】
最小待ちユニット数ＮＦは、対象ＬＵにおける１秒毎の待ちユニット数の最小値（最小待ち量）である。ここで、待ちユニット数は、上述したように、待ちＩ／Ｏ数ＮＣおよび待ちブロック数ＮＤから換算される、ＱｏＳ制御で待ち状態のＩ／Ｏに対応するユニット数である。
【００９２】
ミクロ融通数ＮＧは、対象ＬＵがミクロ性能融通を行なう際の「融通回数制限」（表１参照）に対応する値で、対象ＬＵにおける、１マクロサイクル（例えば３０秒）内のミクロ性能融通の実行回数の制限値（例えば４回）である。
ミクロ融通ユニット数ＮＨは、今回のミクロ性能融通によって、対象ＬＵが他のＬＵから受ける一時的な融通量、もしくは、対象ＬＵが他のＬＵに対し融通する一時的な融通量に対応するユニット数である。つまり、ミクロ融通ユニット数ＮＨは、当該一時的な融通量を、上述した所定の性能融通単位（ユニット）の数に換算した値である。
【００９３】
余りユニット数ＮＩは、最小余りユニット数ＮＥの説明において上述した通り、対象ＬＵに対するＩ／Ｏに係る処理量の、対象ＬＵの処理性能に対する処理余り量（余裕値）に対応する。そして、余りユニット数ＮＩは、当該処理余り量を、上述した所定の性能融通単位（ユニット）の数に換算した値である。
【００９４】
〔１−５−１０〕マクロ融通チェック部
マクロ融通チェック部５１０は、第１判定部５２１および第２判定部５２２によりマクロ性能融通を実行するか否かを判定するために必要な情報（最小余りユニット数ＮＥおよび最小待ちユニット数ＮＦ）をチェックして取得する。このため、マクロ融通チェック部５１０は、第１取得部５１１および第２取得部５１２を有する。なお、マクロ融通チェック部５１０の詳細な動作（マクロ融通１秒チェック処理の処理手順）については、図１３を参照しながら後述する。
【００９５】
第１取得部５１１は、後述する第１判定部５２１がマクロ性能融通の上記「融通を受ける条件」の判定を行なうために必要な情報である最小待ちユニット数ＮＦを取得する。つまり、第１取得部５１１は、ＬＵ毎に、１マクロサイクル（例えば３０秒；第１所定時間）よりも短い時間間隔（例えば１秒間隔）で、当該ＬＵに対する待ちユニット数（Ｉ／Ｏの処理待ち量）を取得する。このとき、１秒毎の待ちユニット数は、上述したように、待ちＩ／Ｏ数ＮＣおよび待ちブロック数ＮＤから換算される。
【００９６】
そして、第１取得部５１１は、ＬＵ毎に、１マクロサイクル中に取得される待ちユニット数のうち最小のものを最小待ちユニット数（最小待ち量）ＮＦとして取得する。このとき、第１取得部５１１は、１マクロサイクル中の１秒毎に待ちユニット数を取得する都度、今回取得した待ちユニット数と、ＱｏＳ制御域２１３に保存されている値（現時点までの最小待ちユニット数）ＮＦとを比較する。今回取得した待ちユニット数が値ＮＦよりも小さい場合、第１取得部５１１は、値ＮＦを、今回取得した待ちユニット数に置き換える。第１取得部５１１が以上の処理を繰り返すことにより、１マクロサイクルが経過した時点でＱｏＳ制御域２１３に保存されている値ＮＦが、最小待ちユニット数ＮＦとなる。
【００９７】
第２取得部５１２は、後述する第２判定部５２２がマクロ性能融通の上記「融通する条件」の判定を行なうために必要な情報である最小余りユニット数ＮＥを取得する。つまり、第２取得部５１２は、ＬＵ毎に、１マクロサイクル（例えば３０秒；第２所定時間）よりも短い時間間隔（例えば１秒間隔）で、当該ＬＵについての余りユニット数（処理余り量）を取得する。このとき、１秒毎の余りユニット数は、ＱｏＳ制御域２１３に保存される余りユニット数ＮＩを１秒毎に参照することで取得される。
【００９８】
そして、第２取得部５１２は、ＬＵ毎に、１マクロサイクル中に取得される余りユニット数ＮＩのうち最小のものを最小余りユニット数（最小余り量）ＮＥとして取得する。このとき、第２取得部５１２は、１マクロサイクル中の１秒毎に余りユニット数ＮＩを取得する都度、今回取得した余りユニット数ＮＩと、ＱｏＳ制御域２１３に保存されている値（現時点までの最小余りユニット数）ＮＥとを比較する。今回取得した余りユニット数が値ＮＥよりも小さい場合、第２取得部５１２は、値ＮＥを、今回取得した余りユニット数ＮＩに置き換える。第２取得部５１２が以上の処理を繰り返すことにより、１マクロサイクルが経過した時点でＱｏＳ制御域２１３に保存されている値ＮＥが、最小余りユニット数ＮＥとなる。
【００９９】
〔１−５−１１〕マクロ融通処理部
マクロ融通処理部５２０は、マクロ融通チェック部５１０の第１取得部５１１および第２取得部５１２によりそれぞれ取得された最小待ちユニット数ＮＦおよび最小余りユニット数ＮＥに基づき、マクロ性能融通を実行する。マクロ融通処理部５２０は、第１判定部５２１，第２判定部５２２および変更部５２３を有する。なお、マクロ融通処理部５２０の詳細な動作（マクロ融通処理の処理手順）については、図１４および図１５を参照しながら後述する。
【０１００】
第１判定部５２１は、各ＬＵがマクロ性能融通の上記「融通を受ける条件」を満たすか否かを判定する。つまり、第１判定部５２１は、ＬＵ毎に、当該ＬＵに対するＩ／Ｏに係る処理量が１マクロサイクル（第１所定時間；３０秒）に亘って当該ＬＵの処理性能を超えているか否かを判定する。より具体的に、第１判定部５２１は、当該ＬＵについて第１取得部５１１により取得された最小待ちユニット数ＮＦが０でない場合、当該ＬＵに対するＩ／Ｏに係る処理量が１マクロサイクルに亘って当該ＬＵの処理性能を超えていると判定する。つまり、第１判定部５２１は、当該ＬＵがマクロ性能融通の上記「融通を受ける条件」を満たす融通先ＬＵであると判定する。
【０１０１】
第２判定部５２２は、各ＬＵがマクロ性能融通の上記「融通する条件」を満たすか否かを判定する。つまり、第２判定部５２２は、ＬＵ毎に、当該ＬＵに対するＩ／Ｏに係る処理量が１マクロサイクル（第２所定時間；３０秒）に亘って当該ＬＵの処理性能を下回っているか否かを判定する。より具体的に、第２判定部５２２は、当該ＬＵについて第２取得部４１２により取得された最小余りユニット数ＮＥが０でない場合、当該ＬＵに対するＩ／Ｏに係る処理量が１マクロサイクルに亘って当該ＬＵの処理性能を下回っていると判定する。つまり、第２判定部５２２は、当該ＬＵがマクロ性能融通の上記「融通する条件」を満たす融通元ＬＵであると判定する。
【０１０２】
変更部５２３は、第１判定部５２１および第２判定部５２２による判定結果に従って、対象ＬＵの性能限界値をユニット単位で変更することで、融通元ＬＵから融通先ＬＵへのマクロ性能融通を、１ユニット単位で行なう。つまり、第１判定部５２１による判定結果が下記項目（ａ１）に示す場合であり、且つ、第２判定部５２２による判定結果が下記項目（ａ２）に示す場合である時、変更部５２３は、下記項目（ａ３）に示す変更処理を行なう。
【０１０３】
（ａ１）第１判定部５２１による判定結果：  一のＬＵ（第１記憶装置）がマクロ性能融通の上記「融通を受ける条件」を満たす融通先ＬＵである場合。
（ａ２）第２判定部５２２による判定結果：  他のＬＵ（第２記憶装置）がマクロ性能融通の上記「融通する条件」を満たす融通元ＬＵである場合。
（ａ３）変更処理：  融通先ＬＵについて算出された性能制限値に、上記所定の性能融通単位で１ユニット分に対応する値を加算するとともに、融通元ＬＵについて算出された性能制限値から、上記所定の性能融通単位で１ユニット分に対応する値を減算する。
【０１０４】
〔１−５−１２〕マクロ融通復旧処理部
マクロ融通復旧処理部５３０は、各ＬＵが上記「復帰条件」を満たした場合、融通先ＬＵに融通した処理量を、融通先ＬＵから融通元ＬＵに復帰させる復旧処理を実行する。マクロ融通復旧処理部５３０は、第３判定部５３１および復旧処理部５３２を有する。なお、マクロ融通復旧処理部５３０（特に復旧処理部５３２）の詳細な動作（マクロ融通復旧処理の処理手順）については、図１６〜図２０を参照しながら後述する。
【０１０５】
第３判定部５３１は、各ＬＵがマクロ性能融通の上記「復帰条件」を満たすか否かを判定する。つまり、第３判定部５３１は、ＬＵ毎に、当該ＬＵが、一以上の融通先ＬＵ（第１記憶装置）へのマクロ性能融通を行なった融通元ＬＵ（第２記憶装置）であり、且つ、当該ＬＵに対するＩ／Ｏの処理待ちの生じた融通復旧対象であるか否かを判定する。
【０１０６】
復旧処理部５３２は、第３判定部５３１により当該ＬＵが融通復旧対象（以下、融通復旧ＬＵという）であると判定された場合、融通復旧ＬＵが他のＬＵに融通した処理量を一以上の融通先ＬＵから融通復旧ＬＵに復帰させる復旧処理を実行する。その際、復旧処理部５３２は、一以上の融通先ＬＵに対し融通された処理量の残量が均等もしくはほぼ均等になるように、当該処理量を一以上の融通先ＬＵから融通復旧ＬＵに復帰させる。
【０１０７】
〔１−５−１３〕ミクロ融通処理部
ミクロ融通処理部５４０は、ミクロ性能融通を実行するもので、第４判定部５４１，融通処理部５４２および融通後処理部５４３を有する。なお、ミクロ融通処理部５４０の詳細な動作（ミクロ融通処理およびミクロ融通後処理の処理手順）については、図１１および図１２を参照しながら後述する。ミクロ融通処理部５４０によるミクロ性能融通の実行回数は、１マクロサイクル当たり、ＱｏＳ制御域２１３においてミクロ融通数ＮＧとして設定される値（例えば４）に制限される。
【０１０８】
第４判定部５４１は、各ＬＵがミクロ性能融通の「融通を受ける条件」を満たすか否かを判定する。つまり、第４判定部５４１は、ＬＵ毎に、当該ＬＵに対するＩ／Ｏに係る処理量（待ちユニット数）が当該ＬＵの処理性能（性能値／設定値）の所定数倍以上（例えば４倍以上）であるか否かを判定する。
【０１０９】
融通処理部５４２および融通後処理部５４３は、協働して、第４判定部５４１により「融通を受ける条件」を満たすと判定されたＬＵに対し、当該ＬＵに対するＩ／Ｏに係る処理量を超える処理余裕をもつＬＵからミクロ性能融通を行なう。なお、１回のミクロ性能融通で融通される「融通量」は、設定性能の２倍に制限される（上記表１参照）。また、ミクロ性能融通の「融通量」は、ＱｏＳ制御域２１３においてミクロ融通ユニット数ＮＨとして保持される。ＱｏＳ制御域２１３におけるミクロ融通ユニット数ＮＨの値は、図１１を参照しながら後述するように、１ミクロサイクルの開始時にクリアされる。このため、ミクロ融通ユニット数ＮＨの値に応じた融通量でのミクロ性能融通は、１回（１ミクロサイクル）だけ実行される。
【０１１０】
融通処理部５４２は、スケジュール部５０６によるＱｏＳ Ｉ／Ｏ起動スケジュール処理前（図６参照）に動作する。融通処理部５４２は、１ミクロサイクル毎に、大きく性能不足となる（例えば設定値の４倍以上の性能不足となる）融通先ＬＵ（待ちＬＵ）を検索し、もし該当する融通先ＬＵがあれば、処理性能に余裕のある融通元ＬＵ（余りＬＵ）を検索する。そして、融通処理部５４２は、検索された待ちＬＵの待ちユニット数と検索された余りＬＵの余りユニット数とを、それぞれ大きい順に並べた待ちユニット配列および余りユニット配列として記憶する。融通処理部５４２は、待ちユニット配列および余りユニット配列に基づき、ミクロ性能融通を行なう待ちＬＵと余りＬＵとの組合せを決定する。また、融通処理部５４２は、決定された組合せのＬＵのＱｏＳ制御域２１３にミクロ融通ユニット数ＮＨおよび融通フラグＦMICIN，ＦMICOUTを設定する。さらに、融通処理部５４２は、ミクロ性能融通を行なう待ちＬＵと余りＬＵとの組合せを一組でも決定した場合、ＱｏＳ制御域２１３のミクロ融通有フラグ（図３参照）をオンに設定し、ミクロ性能融通を行なう旨を融通後処理部５４３に通知する。融通処理部５４２は、以上のようなミクロ融通処理を、図１１を参照しながら詳述する処理手順で実行する。
【０１１１】
融通後処理部５４３は、スケジュール部５０６によるＱｏＳ Ｉ／Ｏ起動スケジュール処理後（図６参照）、ＱｏＳ制御域２１３のミクロ融通有フラグ（図３参照）がオンに設定されている場合に動作する。融通後処理部５４３は、１ミクロサイクル毎に、ミクロ融通ユニット数ＮＨおよび融通フラグＦMICIN，ＦMICOUTに基づいて、待ちＬＵおよび余りＬＵの限界値に対する加減算処理を行ない、次のＮミリ秒サイクルでミクロ性能融通を実行する。ただし、本実施形態では、ＱｏＳ制御用のメモリで保持可能な数値範囲を超えるのを抑止すべく、図６に示すように、１秒毎に、ＱｏＳ制御に係るＱｏＳカウントがクリアされる。当該ＱｏＳカウントのクリアに対応すべく、融通後処理部５４３は、１秒毎のＱｏＳカウントクリアタイミングとそれ以外のタイミングとで異なる処理を行なっている。各タイミングでの、融通後処理部５４３による処理については、図１２を参照しながら後述する。融通後処理部５４３は、以上のようなミクロ融通後処理を、図１２を参照しながら詳述する処理手順で実行する。
【０１１２】
〔２〕本実施形態の動作
次に、図６〜図２０を参照しながら、本実施形態に係るストレージ装置１００の動作、特に、本実施形態に係るストレージ装置１００による処理の処理手順について説明する。
【０１１３】
〔２−１〕Ｎミリ秒タイマスケジュール処理
まず、図６に示すフローチャート（ステップＳ１０１〜Ｓ１１１）に従って、本実施形態のＳＣＳＩターゲット制御部３０３によって実行されるＮミリ秒タイマスケジュール処理の処理手順について説明する。Ｎは、例えば、１０であり、ＳＣＳＩターゲット制御部３０３は、各ポートについて、１０ミリ秒毎に、図６に示すＮミリ秒タイマスケジュール処理を実行する。これにより、図７〜図９および図１１〜図２０を参照しながら詳述するごとく、ＱｏＳ制御（ＱｏＳ Ｉ／Ｏ起動スケジュール），マクロ性能融通およびミクロ性能融通が実行される。
【０１１４】
Ｎミリ秒タイマスケジュール処理が起動されると、まず、算出部５０５は、各ポートの限界値である限界Ｉ／Ｏ数および限界ブロック数に、それぞれＮミリ秒Ｉ／Ｏ数およびＮミリ秒ブロック数を加算する。加算結果のポートポート限界値は、ＱｏＳ管理テーブル５０１に上書き保存される（ステップＳ１０１）。ポート限界値に加算される限界Ｉ／Ｏ数および限界ブロック数は、ＱｏＳ設定（図４の性能値）のＮ／１０００（Ｎ＝１０の場合、１／１００）の値となる（図５参照）。
【０１１５】
また、算出部５０５は、全てのホスト１０の限界値である限界Ｉ／Ｏ数および限界ブロック数に、それぞれＮミリ秒Ｉ／Ｏ数およびＮミリ秒ブロック数を加算する。加算結果の全ホスト限界値は、ＱｏＳ管理テーブル５０１に上書き保存される（ステップＳ１０２）。各ホスト限界値に加算される限界Ｉ／Ｏ数および限界ブロック数は、ＱｏＳ設定（図４の性能値）のＮ／１０００（Ｎ＝１０の場合、１／１００）の値となる（図５参照）。
【０１１６】
さらに、本実施形態では、ＬＵを性能融通対象としているため、算出部５０５は、全てのＬＵのそれぞれに対し、図７に示す全ＬＵ限界値加算処理を実行する（ステップＳ１０３）。ここで、図７に示すフローチャート（ステップＳ１２１〜Ｓ１２５）に従って、全ＬＵ限界値加算処理の処理手順について説明する。
【０１１７】
図７に示すように、算出部５０５は、全てのＬＵの限界値である限界Ｉ／Ｏ数および限界ブロック数に、それぞれＮミリ秒Ｉ／Ｏ数およびＮミリ秒ブロック数を加算する。加算結果の全ホスト限界値は、ＱｏＳ管理テーブル５０１に上書き保存される（ステップＳ１２１）。各ホスト限界値に加算される限界Ｉ／Ｏ数および限界ブロック数は、ＱｏＳ設定（図４の性能値）のＮ／１０００（Ｎ＝１０の場合、１／１００）の値となる（図５参照）。
【０１１８】
そして、算出部５０５は、ＱｏＳ制御域２１３を参照し、各ＬＵの融通フラグＦINがオンであるか否かを判定する（ステップＳ１２２）。融通フラグＦINがオンである場合（ステップＳ１２２のＹＥＳルート）、つまり対象ＬＵがマクロ性能融通を受けている融通先ＬＵである場合、算出部５０５は、さらに、以下の加算処理を行なう（ステップＳ１２３）。
【０１１９】
即ち、算出部５０５は、対象ＬＵの限界値である限界Ｉ／Ｏ数に、ＱｏＳ制御域２１３の融通ユニット数ＮＢに対応するＩ／Ｏ数をさらに加算する。具体的には、[融通ユニット数ＮＢ]×[ユニット当たりのＩ／Ｏ数]のＮ／１０００の値が限界Ｉ／Ｏ数に加算される。同様に、算出部５０５は、対象ＬＵの限界値である限界ブロック数に、ＱｏＳ制御域２１３の融通ユニット数ＮＢに対応するＩ／Ｏ数をさらに加算する。具体的には、[融通ユニット数ＮＢ]×[ユニット当たりのブロック数]のＮ／１０００の値が限界ブロック数に加算される。加算結果は、ＱｏＳ管理テーブル５０１に上書き保存される。
【０１２０】
ステップＳ１２３の処理後、もしくは、融通フラグＦINがオフである場合（ステップＳ１２２のＮＯルート）、算出部５０５は、ＱｏＳ制御域２１３を参照し、各ＬＵの融通フラグＦOUTがオンであるか否かを判定する（ステップＳ１２４）。融通フラグＦOUTがオンである場合（ステップＳ１２４のＹＥＳルート）、つまり対象ＬＵがマクロ性能融通を行なっている融通元ＬＵである場合、算出部５０５は、さらに、以下の減算処理を行なう（ステップＳ１２５）。
【０１２１】
即ち、算出部５０５は、対象ＬＵの限界値である限界Ｉ／Ｏ数から、ＱｏＳ制御域２１３の融通ユニット数ＮＢに対応するＩ／Ｏ数を減算する。具体的には、[融通ユニット数ＮＢ]×[ユニット当たりのＩ／Ｏ数]のＮ／１０００の値が限界Ｉ／Ｏ数から減算される。同様に、算出部５０５は、対象ＬＵの限界値である限界ブロック数から、ＱｏＳ制御域２１３の融通ユニット数ＮＢに対応するＩ／Ｏ数を減算する。具体的には、[融通ユニット数ＮＢ]×[ユニット当たりのブロック数]のＮ／１０００の値が限界ブロック数から減算される。減算結果は、ＱｏＳ管理テーブル５０１に上書き保存される。
【０１２２】
ステップＳ１２５の処理後、もしくは、融通フラグＦOUTがオフである場合（ステップＳ１２４のＮＯルート）、算出部５０５は、全ＬＵ限界値加算処理を完了する。
上述のような全ＬＵ限界値加算処理（ステップＳ１０３，Ｓ１２１〜Ｓ１２５）をＮミリ秒毎に実行することで、マクロ性能融通がＮミリ秒毎に実行される。なお、ホスト１０を性能融通対象とする場合には、算出部５０５は、ステップＳ１０２において、全てのホストのそれぞれに対し、図７に示す全ＬＵ限界値加算処理と同様の全ホスト限界値加算処理を実行する。
【０１２３】
さて、限界値加算処理（ステップＳ１０１〜Ｓ１０３）を完了すると、図６に示すように、第４判定部５４１および融通処理部５４２によるミクロ融通処理が、例えば０．５秒（１ミクロサイクル）毎に実行される（ステップＳ１０４）。第４判定部５４１および融通処理部５４２によるミクロ融通処理については、図１１を参照しながら後述する。
【０１２４】
そして、マクロ融通チェック部５１０によるマクロ融通１秒チェック処理が、１秒毎に実行されてから（ステップＳ１０５）、第３判定部５３１により融通元ＬＵで処理性能不足が発生したか否かが、Ｎミリ秒毎に判定される（ステップＳ１０６）。融通元ＬＵで処理性能不足が発生した場合（ステップＳ１０６のＹＥＳルート）、つまり融通復旧ＬＵが存在する場合、復旧処理部５３２によるマクロ融通復旧処理が実行される（ステップＳ１０７）。上述したステップＳ１０５〜Ｓ１０７の処理は、マクロ融通前処理に相当する。なお、マクロ融通チェック部５１０によるマクロ融通１秒チェック処理については、図１３を参照しながら後述し、復旧処理部５３２によるマクロ融通復旧処理については、図１６および図１７を参照しながら後述する。
【０１２５】
ステップＳ１０７の処理後、もしくは、融通復旧ＬＵが存在しない場合（ステップＳ１０６のＮＯルート）、スケジュール部５０６は、ＱｏＳ Ｉ／Ｏ起動スケジュール処理を実行する（ステップＳ１０８）。ＱｏＳ Ｉ／Ｏ起動スケジュール処理については、図８および図９を参照しながら後述する。
【０１２６】
ついで、マクロ融通処理部５２０によるマクロ融通処理が、例えば３０秒（１マクロサイクル）毎に実行され（ステップＳ１０９）、１秒毎に、ＱｏＳ制御に係るＱｏＳカウントがクリアされる（ステップＳ１１０）。ＱｏＳカウントのクリアにより、ＱｏＳ制御用のメモリで保持可能な数値範囲を超えることが抑止される。この後、融通後処理部５４３によるミクロ融通後処理が、例えば０．５秒（１ミクロサイクル）毎に実行され（ステップＳ１１１）、Ｎミリ秒タイマスケジュールの１サイクル分（Ｎミリ秒毎）の処理が完了する。マクロ融通処理部５２０によるマクロ融通処理については、図１４および図１５を参照しながら後述する。また、融通後処理部５４３によるミクロ融通後処理については、図１２を参照しながら後述する。
【０１２７】
〔２−２〕ＱｏＳ Ｉ／Ｏ起動スケジュール処理
次に、図８および図９に示すフローチャート（ステップＳ２０１〜Ｓ２１７）に従って、本実施形態のスケジュール部５０６によって実行されるＱｏＳ Ｉ／Ｏ起動スケジュール処理（図６のステップＳ１０８）の処理手順について詳細に説明する。ＱｏＳ Ｉ／Ｏ起動スケジュール処理では、ＬＵ毎に設けた待ちキュー内にコマンドが待機している場合、以下のように、当該ＬＵの限界Ｉ／Ｏ数および限界ブロック数に従って、待ちキュー内のコマンドが実行される。
【０１２８】
スケジュール部５０６は、マークしたホストを復元する（ステップＳ２０１）。続いて、スケジュール部５０６は、マークしたＬＵを復元する（ステップＳ２０２）。そして、スケジュール部５０６は、待ちキュー格納部５０２内に次のコマンドがあるか否かを判定する（ステップＳ２０３）。
【０１２９】
ここで、スケジュール部５０６は、待ちキュー格納部５０２内に次のコマンドがあると判定した場合（ステップＳ２０３のＹＥＳルート）、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ２０４）。そして、スケジュール部５０６は、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ２０４のＹＥＳルート）、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ２０５）。
【０１３０】
ここで、スケジュール部５０６は、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ２０５のＹＥＳルート）、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ２０６）。そして、スケジュール部５０６は、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ２０６のＹＥＳルート）、ポートの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数およびブロック数を減算する（ステップＳ２０７）。
【０１３１】
また、スケジュール部５０６は、ホストの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数およびブロック数を減算する（ステップＳ２０８）。続いて、スケジュール部５０６は、ＬＵの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数およびブロック数を減算する（ステップＳ２０９）。そして、実行部５０７は、コマンドを起動する（ステップＳ２１０）。また、コマンドを起動した後、実行部５０７は、コマンドを待ちキュー格納部５０２からデキューする（ステップＳ２１１）。この処理の後、ストレージ装置１００は、ステップＳ２０３に移行する。
【０１３２】
また、スケジュール部５０６は、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ２０４のＮＯルート）、ホストとＬＵとをマークし（ステップＳ２１２）、処理を終了する。また、スケジュール部５０６は、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ２０５のＮＯルート）、ＬＵをマークし（ステップＳ２１３）、ステップＳ２１４に移行する。
【０１３３】
また、スケジュール部５０６は、待ちキュー格納部５０２内に次のコマンドがないと判定した場合（ステップＳ２０３のＮＯルート）、ステップＳ２１４に移行する。また、スケジュール部５０６は、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ２０６のＮＯルート）、ステップＳ２１４に移行する。
【０１３４】
ステップＳ２１４において、スケジュール部５０６は、次のＬＵをセットする。そして、スケジュール部５０６は、次のＬＵがマークしたＬＵと同じＬＵであるか否かを判定する（ステップＳ２１５）。ここで、スケジュール部５０６は、次のＬＵがマークしたＬＵと同じＬＵではないと判定した場合（ステップＳ２１５のＮＯルート）、ステップＳ２０３に移行する。
【０１３５】
一方、スケジュール部５０６は、次のＬＵがマークしたＬＵと同じＬＵであると判定した場合（ステップＳ２１５のＹＥＳルート）、次のホストをセットする（ステップＳ２１６）。続いて、スケジュール部５０６は、次のホストがマークしたホストと同じホストであるか否かを判定する（ステップＳ２１７）。ここで、スケジュール部５０６は、次のホストがマークしたホストと同じホストではないと判定した場合（ステップＳ２１７のＮＯルート）、ステップＳ２０２に移行する。一方、スケジュール部５０６は、次のホストがマークしたホストと同じホストであると判定した場合（ステップＳ２１７のＹＥＳルート）、処理を終了する。
【０１３６】
〔２−３〕コマンド受信時の処理
ここで、図１０に示すフローチャート（ステップＳ３０１〜Ｓ３０９）に従って、本実施形態のコマンド受信部５０４によって実行されるコマンド受信処理の処理手順について詳細に説明する。ストレージ装置１００は、例えば、コマンドを受信したことを契機にこのコマンド受信処理を実行する。コマンド受信処理では、ホストからコマンドを受信した際、以下のように、受信したコマンドは、限界Ｉ／Ｏ数および限界ブロック数に応じて、即座に実行されるか、もしくは、待ちキューにエンキューされる。
【０１３７】
図１０に示すように、コマンド受信部５０４は、受信したコマンドの発行元ホストとＬＵとの間で待ちＩ／Ｏがあるか否かを判定する（ステップＳ３０１）。ここで、コマンド受信部５０４により発行元ホストとＬＵＮとの間で待ちＩ／Ｏがないと判定された場合（ステップＳ３０１のＮＯルート）、スケジュール部５０６は、以下の処理を実行する。すなわち、スケジュール部５０６は、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ３０２）。そして、スケジュール部５０６は、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ３０２のＹＥＳルート）、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ３０３）。
【０１３８】
ここで、スケジュール部５０６は、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ３０３のＹＥＳルート）、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内であるか否かを判定する（ステップＳ３０４）。そして、スケジュール部５０６は、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内であると判定した場合（ステップＳ３０４のＹＥＳルート）、ポートの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数とブロック数とを減算する（ステップＳ３０５）。
【０１３９】
また、スケジュール部５０６は、ホストの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数およびブロック数を減算する（ステップＳ３０６）。続いて、スケジュール部５０６は、ＬＵの限界値（限界Ｉ／Ｏ数および限界ブロック数）から、コマンド分のＩ／Ｏ数およびブロック数を減算する（ステップＳ３０７）。また、実行部５０７は、コマンドを起動する（ステップＳ３０８）。ストレージ装置１００は、ステップＳ３０８の終了後、処理を終了する。
【０１４０】
コマンド受信部５０４は、受信したコマンドの発行元ホストとＬＵとの間で待ちＩ／Ｏがあると判定した場合（ステップＳ３０１のＹＥＳルート）、ステップＳ３０９に移行する。また、スケジュール部５０６は、コマンド数がポートの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ３０２のＮＯルート）、ステップＳ３０９に移行する。また、スケジュール部５０６は、コマンド数がホストの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ３０３のＮＯルート）、ステップＳ３０９に移行する。また、スケジュール部５０６は、コマンド数がＬＵの限界Ｉ／Ｏ数および限界ブロック数以内ではないと判定した場合（ステップＳ３０４のＮＯルート）、ステップＳ３０９に移行する。そして、コマンド受信部５０４は、ステップＳ３０９において、コマンドを待ちキュー格納部５０２にエンキューし、処理を終了する。
【０１４１】
〔２−４〕ミクロ融通処理
次に、図１１に示すフローチャート（ステップＳ４０１〜Ｓ４１１）に従って、本実施形態のミクロ融通処理部５４０（第４判定部５４１および融通処理部５４２）によって実行されるミクロ融通処理（図６のステップＳ１０４）の処理手順について説明する。ミクロ融通処理は、図６に示すＮミリ秒タイマスケジュール処理がＮミリ秒毎に実行される中で、１ミクロサイクル（例えば０．５秒＝５００ミリ秒）毎に、スケジュール部５０６によるＱｏＳ Ｉ／Ｏ起動スケジュール処理前に実行される。
【０１４２】
図１１に示すように、ミクロ融通処理部５４０は、０．５秒毎に起動されると、まず、各ＬＵについて、ＱｏＳ制御域２１３の融通フラグＦMICINおよびＦMICOUTをクリアしてオフ状態にする（ステップＳ４０１）。また、ミクロ融通処理部５４０は、各ＬＵについて、ＱｏＳ制御域２１３のミクロ融通ユニット数ＮＨをクリアして０にする（ステップＳ４０２）。これにより、前回のミクロ性能融通に係る情報が全てクリアされる。従って、ミクロ融通ユニット数ＮＨの値に応じた融通量でのミクロ性能融通は、１回（１ミクロサイクル）だけ実行される。
【０１４３】
この後、第４判定部５４１は、ＬＵ毎に、当該ＬＵに対するＩ／Ｏに係る処理量に対応する待ちユニット数が当該ＬＵの処理性能（性能値／設定値）の所定数倍以上（例えば４倍以上）であるか否かを判定する（ステップＳ４０３）。待ちユニット数は、ＱｏＳ制御域２１３の待ちＩ／Ｏ数ＮＣおよび待ちブロック数ＮＤから換算される。そして、待ちユニット数が設定値の所定数倍以上である場合（ステップＳ４０３のＹＥＳルート）、融通処理部５４２は、今回の対象ＬＵの待ちユニット数を、待ちユニット数の大きい順に並べた待ちユニット配列（リスト）の適切な箇所に挿入する（ステップＳ４０４）。ミクロ性能融通用の待ちユニット配列（リスト）は、例えばＱｏＳ制御域２１３内に作成され、ＬＵを特定するＬＵＮと当該ＬＵにおける待ちユニット数とを対応付けて保存している。なお、本実施形態において、ミクロ性能融通での「１サイクルでの融通ＬＵ数」は、例えば、４ＬＵとしているので、待ちユニット配列における要素数は４で十分である。
【０１４４】
ステップＳ４０４の処理後、もしくは、待ちユニット数が設定値の所定数倍未満である場合（ステップＳ４０３のＮＯルート）、融通処理部５４２は、全てのＬＵについて待ちユニット数の判定を行なったか否かを判定する（ステップＳ４０５）。全てのＬＵについて待ちユニット数の判定を行なっていない場合（ステップＳ４０５のＮＯルート）、ミクロ融通処理部５４０は、ステップＳ４０１の処理に戻る。一方、全てのＬＵについて待ちユニット数の判定を行なった場合（ステップＳ４０５のＹＥＳルート）、融通処理部５４２は、ミクロ性能融通用の待ちユニット配列に待ちユニットが存在するか否かを判定する（ステップＳ４０６）。
【０１４５】
待ちユニット配列に待ちユニットが存在する場合（ステップＳ４０６のＹＥＳルート）、融通処理部５４２は、今回の対象ＬＵの余りユニット数を、余りユニット数の大きい順に並べた余りユニット配列（リスト）の適切な箇所に挿入する（ステップＳ４０７）。ミクロ性能融通用の余りユニット配列（リスト）は、例えばＱｏＳ制御域２１３内に作成され、ＬＵを特定するＬＵＮと当該ＬＵにおける余りユニット数とを対応付けて保存している。対象ＬＵの余りユニット数としては、ＱｏＳ制御域２１３に保存される余りユニット数ＮＩが読み出されて用いられる。
【０１４６】
この後、融通処理部５４２は、待ちユニット配列における待ちユニット数と、余りユニット配列における余りユニット数とを、大きい方から順に比較し、待ちユニット数が余りユニット数以下であるか否かを判定する（ステップＳ４０８）。待ちユニット数が余りユニット数以下である場合（ステップＳ４０８のＹＥＳルート）、融通処理部５４２は、このときの待ちＬＵと余りＬＵとを、ミクロ性能融通を行なう待ちＬＵと余りＬＵとの組合せとして決定する。なお、組合せが決定された場合、当該組合せの待ちＬＵと余りＬＵとは、待ちユニット配列および余りユニット配列から削除される。
【０１４７】
そして、融通処理部５４２は、決定された組合せの待ちＬＵのＱｏＳ制御域２１３において、余りＬＵから融通されるミクロ融通ユニット数ＮＨを設定するとともに、当該待ちＬＵがミクロ性能融通を受けることを示す融通フラグＦMICINをオンに設定する。また、融通処理部５４２は、決定された組合せの余りＬＵのＱｏＳ制御域２１３において、待ちＬＵに融通するミクロ融通ユニット数ＮＨを設定するとともに、当該待ちＬＵがミクロ性能融通を受けることを示す融通フラグＦMICINをオンに設定する（ステップＳ４０９）。
【０１４８】
さらに、融通処理部５４２は、ミクロ性能融通を行なう待ちＬＵと余りＬＵとの組合せを一組でも決定すると、ＱｏＳ制御域２１３のミクロ融通有フラグをオンに設定し（ステップＳ４１０）、ミクロ性能融通を行なう旨を融通後処理部５４３に通知する。そして、融通処理部５４２は、待ち配列にまだ待ちユニットが有るか否か判定する（ステップＳ４１１）。待ちユニットが有る場合（ステップＳ４１１のＹＥＳルート）、融通処理部５４２は、ステップＳ４０８の処理に戻る。
【０１４９】
待ちユニットが無い場合（ステップＳ４１１のＮＯルート）、ミクロ融通処理部５４０は、ミクロ融通処理を完了する。また、待ちユニット数が余りユニット数よりも大きい場合（ステップＳ４０８のＮＯルート）、ミクロ融通処理部５４０は、ミクロ融通処理を完了する。同様に、待ちユニット配列に待ちユニットが存在しない場合（ステップＳ４０６のＮＯルート）、ミクロ融通処理部５４０は、ミクロ融通処理を完了する。
【０１５０】
〔２−５〕ミクロ融通後処理
次に、図１２に示すフローチャート（ステップＳ５０１〜５０７）に従って、本実施形態の融通後処理部５４３によって実行されるミクロ融通後処理（図６のステップＳ１１１）の処理手順について説明する。ミクロ融通後処理は、図６に示すＮミリ秒タイマスケジュール処理がＮミリ秒毎に実行される中で、１ミクロサイクル（０．５秒）毎に、スケジュール部５０６によるＱｏＳ Ｉ／Ｏ起動スケジュール処理後に実行される。特に、ミクロ融通後処理は、図６に示すように、ＱｏＳ Ｉ／Ｏ起動スケジュール処理およびマクロ融通処理が実行され、１秒毎のＱｏＳカウントがクリアされた後の、Ｎミリ秒タイマスケジュール処理の最終ステップＳ１１１で実行される。
【０１５１】
図１２に示すように、融通後処理部５４３は、まず、ＱｏＳ制御域２１３のミクロ融通有フラグがオンであるか否かを判定する（ステップＳ５０１）。ミクロ融通有フラグがオフである場合（ステップＳ５０１のＮＯルート）、融通後処理部５４３は、何ら処理を行なうことなく、ミクロ融通後処理を完了する。
【０１５２】
ミクロ融通有フラグがオンである場合（ステップＳ５０１のＹＥＳルート）、融通後処理部５４３はＱｏＳ制御域２１３のミクロ融通有フラグをオフに設定する（ミクロ融通有設定クリア後；ステップＳ５０２）。この後、融通後処理部５４３は、各ＬＵについて、融通フラグＦMICINがオンであるか否かを判定する（ステップＳ５０３）。
【０１５３】
融通フラグＦMICINがオンである場合（ステップＳ５０３のＹＥＳルート）、即ち対象ＬＵが待ちＬＵである場合、融通後処理部５４３は、当該ＬＵの限界Ｉ／Ｏ数にミクロ融通ユニット数ＮＨ分のＩ／Ｏ数を加算する。また、融通後処理部５４３は、当該ＬＵの限界ブロック数にミクロ融通ユニット数ＮＨ分のブロック数を加算する（ステップＳ５０４）。
【０１５４】
ステップＳ５０４の処理後、もしくは、融通フラグＦMICINがオフである場合（ステップＳ５０３のＮＯルート）、融通後処理部５４３は、各ＬＵについて、下記所定の判定条件を満たしているか否かを判定する（ステップＳ５０５）。ここで、所定の判定条件は、対象ＬＵの融通フラグＦMICOUTがオンで、且つ、今回のタイミングが１秒毎のＱｏＳカウントクリア後ではないという条件である。
【０１５５】
所定の判定条件を満たす場合（ステップＳ５０５のＹＥＳルート）、即ち今回のタイミングが１秒毎のＱｏＳカウントクリア後ではなく且つ対象ＬＵが余りＬＵである場合、融通後処理部５４３は、以下の減算処理を行なう（ステップＳ５０６）。つまり、融通後処理部５４３は、当該ＬＵの限界Ｉ／Ｏ数からミクロ融通ユニット数ＮＨ分のＩ／Ｏ数を減算するとともに、当該ＬＵの限界ブロック数からミクロ融通ユニット数ＮＨ分のブロック数を減算する。
【０１５６】
所定の判定条件を満たさない場合（ステップＳ５０５のＮＯルート）、つまり対象ＬＵの融通フラグＦMICOUTがオフ、または、今回のタイミングが１秒毎のＱｏＳカウントクリア後である場合、融通後処理部５４３は、ステップＳ５０６の減算処理を行なうことなくステップＳ５０７の処理に移行する。今回のタイミングが１秒毎のＱｏＳカウントクリア後である場合、ＱｏＳカウントがクリアされているため、減算処理を行なう必要が無いからである。
【０１５７】
ステップＳ５０６の処理後、もしくは、ステップＳ５０５でＮＯ判定後、融通後処理部５４３は、判定対象のＬＵがまだ有るか否か判定する（ステップＳ５０７）。判定対象のＬＵがまだ有る場合（ステップＳ５０７のＹＥＳルート）、融通後処理部５４３は、ステップＳ５０３の処理に戻る。判定対象のＬＵが無い場合（ステップＳ５０７のＮＯルート）、融通後処理部５４３は、ミクロ融通後処理を完了する。
【０１５８】
〔２−６〕マクロ融通１秒チェック処理
次に、図１３に示すフローチャート（ステップＳ６０１〜Ｓ６０８）に従って、本実施形態のマクロ融通チェック部５１０によって実行されるマクロ融通１秒チェック処理（図６のステップＳ１０５）の処理手順について説明する。マクロ融通１秒チェック処理では、第１判定部５２１および第２判定部５２２によりマクロ性能融通を実行するか否かを判定するために必要な情報である、最小余りユニット数ＮＥおよび最小待ちユニット数ＮＦが取得される。マクロ融通１秒チェック処理は、図６に示すＮミリ秒タイマスケジュール処理がＮミリ秒毎に実行される中で、例えば１秒毎に実行される。
【０１５９】
図１３に示すように、マクロ融通チェック部５１０は、まず、復帰値のデフォルト値として“FALSE”をＱｏＳ制御域２１３等に記憶させる（ステップＳ６０１）。ここで、復帰値“FALSE”は、マクロ性能融通による融通量を復帰させる融通復旧ＬＵが存在しないことを示す情報である。この後、マクロ融通チェック部５１０は、各ＬＵについて、以下の処理（ステップＳ６０２〜Ｓ６０８）を実行する。
【０１６０】
マクロ融通チェック部５１０は、対象ＬＵの融通フラグＦOUTがオンで、且つ、対象ＬＵに待ちＩ／Ｏがあるか否か、つまり、対象ＬＵが、復旧元ＬＵでありながら処理性能不足の生じた融通復旧ＬＵであるか否かを判定する（ステップＳ６０２）。
【０１６１】
対象ＬＵが融通復旧ＬＵである場合（ステップＳ６０２のＹＥＳルート）、マクロ融通チェック部５１０は、復帰値として“TRUE”をＱｏＳ制御域２１３等に記憶させる（ステップＳ６０８）。ここで、復帰値“TRUE”は、融通復旧ＬＵが存在することを示す情報である。この後、マクロ融通チェック部５１０は、ステップＳ６０７の処理に移行する。
【０１６２】
対象ＬＵが融通復旧ＬＵでない場合（ステップＳ６０２のＮＯルート）、第２取得部５１２は、当該ＬＵの現在の余りユニット数ＮＩを取得する。各ＬＵの余りユニット数ＮＩは、ＱｏＳ制御域２１３に保存される各ＬＵの余りユニット数ＮＩを参照することで取得される。そして、第２取得５１２は、今回取得した余りユニット数ＮＩと、ＱｏＳ制御域２１３に保存されている値（現時点までの最小余りユニット数）ＮＥとを比較する（ステップＳ６０３）。
【０１６３】
今回取得した余りユニット数ＮＩが値ＮＥよりも小さい場合（ステップＳ６０３のＹＥＳルート）、第２取得部５１２は、値ＮＥを今回取得した余りユニット数ＮＩに置き換える（ステップＳ６０４）。
【０１６４】
ステップＳ６０４の処理後、もしくは、今回取得した余りユニット数ＮＩが値ＮＥ以上である場合（ステップＳ６０３のＮＯルート）、第１取得部５１１は、当該ＬＵの現在の待ちユニット数を取得する。各ＬＵの待ちユニット数は、上述したように対象ＬＵの待ちＩ／Ｏ数ＮＣおよび待ちブロック数ＮＤから換算される。そして、第１取得部５１１は、今回取得した待ちユニット数と、ＱｏＳ制御域２１３に保存されている値（現時点までの最小待ちユニット数）ＮＦとを比較する（ステップＳ６０５）。
【０１６５】
今回取得した待ちユニット数が値ＮＦよりも小さい場合（ステップＳ６０５のＹＥＳルート）、第１取得部５１１は、値ＮＦを、今回取得した待ちユニット数に置き換える（ステップＳ６０６）。
【０１６６】
ステップＳ６０６やＳ６０８の処理後、または、今回取得した待ちユニット数が値ＮＦ以上である場合（ステップＳ６０５のＮＯルート）、マクロ融通チェック部５１０は、全てのＬＵについてマクロ融通１秒チェック処理を終了したか否か判定する（ステップＳ６０７）。全てのＬＵについてチェック処理を終了していない場合（ステップＳ６０７のＮＯルート）、マクロ融通チェック部５１０は、ステップＳ６０２の処理に戻る。全てのＬＵについてチェック処理を終了した場合（ステップＳ６０７のＹＥＳルート）、マクロ融通チェック部５１０は、マクロ融通１秒チェック処理を完了する。
【０１６７】
以上のようなマクロ融通１秒チェック処理を、１マクロサイクル（３０秒）の間、１秒毎に実行することで、最終的にＱｏＳ制御域２１３に保存されている値ＮＥが、１マクロサイクル中の最小余りユニット数ＮＥとなる。また、同様に、最終的にＱｏＳ制御域２１３に保存されている値ＮＦが、１マクロサイクル中の最小待ちユニット数ＮＦとなる。なお、ステップＳ６０３およびＳ６０４の処理と、ステップＳ６０５およびＳ６０６の処理とは、逆の順序で実行されてもよい。
【０１６８】
〔２−７〕マクロ融通処理
次に、図１４および図１５に示すフローチャート（ステップＳ７０１〜Ｓ７１３）に従って、本実施形態のマクロ融通処理部５２０によって実行されるマクロ融通処理（図６のステップＳ１０９）の処理手順について説明する。マクロ融通処理は、図６に示すＮミリ秒タイマスケジュール処理がＮミリ秒毎に実行される中で、１マクロサイクル（例えば３０秒）毎に、スケジュール部５０６によるＱｏＳ Ｉ／Ｏ起動スケジュール処理後に起動される。マクロ融通処理では、ＱｏＳ Ｉ／Ｏ起動スケジュール後に、１マクロサイクル毎のタイミングで、連続的に処理性能に余裕のあるＬＵから連続的に処理性能が不足しているＬＵにマクロ性能融通が行なわれる。
【０１６９】
まず、第１判定部５２１は、各ＬＵについて、当該ＬＵの最小待ちユニット数ＮＦが０以外の値で、且つ、当該ＬＵの融通フラグＦINMAXがオフであるかを判定する（ステップＳ７０１）。ここで、当該ＬＵの最小待ちユニット数ＮＦが０以外の値である場合、当該ＬＵは、１マクロサイクルにおける一秒刻みのタイミングでは、常に待ち状態である。したがって、当該ＬＵは、１マクロサイクルに亘って処理性能不足の状態であるとみなせ、本実施形態では、上記「融通を受ける条件」を満たしているものと判断される。ただし、当該ＬＵの融通フラグＦINMAXがオンである場合、当該ＬＵにおいては、他のＬＵから受けているマクロ性能融通の融通量が上限に到達しており、マクロ性能融通を行なうことができない。そこで、本実施形態では、各ＬＵについて、当該ＬＵの最小待ちユニット数ＮＦが０以外の値で、且つ、当該ＬＵの融通フラグＦINMAXがオフであるかが判定されている。
【０１７０】
当該ＬＵの最小待ちユニット数ＮＦが０以外の値で、且つ、当該ＬＵの融通フラグＦINMAXがオフである場合（ステップＳ７０１のＹＥＳルート）、第１判定部５２１は、今回の対象ＬＵの最小待ちユニット数ＮＦを、待ちユニット数の大きい順に並べた待ちユニット配列の適切な箇所に挿入する（ステップＳ７０２）。マクロ性能融通用の待ちユニット配列は、例えばＱｏＳ制御域２１３内に作成され、ＬＵを特定するＬＵＮと当該ＬＵにおける最小待ちユニット数ＮＦとを対応付けて保存している。なお、本実施形態において、マクロ性能融通での「１サイクルでの融通ＬＵ数」は、例えば、４ＬＵとしているので、待ちユニット配列における要素数は４で十分である。
【０１７１】
ステップＳ７０２の処理後、もしくは、当該ＬＵの最小待ちユニット数ＮＦが０又は当該ＬＵの融通フラグＦINMAXがオンである場合（ステップＳ７０１のＮＯルート）、第１判定部５２１は、全てのＬＵについて最小待ちユニット数ＮＦの判定を行なったか否かを判定する（ステップＳ７０３）。全てのＬＵについて待ちユニット数の判定を行なっていない場合（ステップＳ７０３のＮＯルート）、第１判定部５２１は、ステップＳ７０１の処理に戻る。全てのＬＵについて待ちユニット数の判定を行なった場合（ステップＳ７０３のＹＥＳルート）、マクロ融通処理部５２０は、マクロ性能融通用の待ちユニット配列に待ちユニットが存在するか否かを判定する（ステップＳ７０４）。マクロ性能融通用の待ちユニット配列に待ちユニットが存在しない場合（ステップＳ７０４のＮＯルート）、マクロ融通処理部５２０は、マクロ融通処理を完了する。
【０１７２】
マクロ性能融通用待ちユニット配列に待ちユニットが存在する場合（ステップＳ７０４のＹＥＳルート）、第２判定部５２２は、各ＬＵについて、当該ＬＵの最小余りユニット数ＮＥが０以外の値で、且つ、当該ＬＵの融通フラグＦOUTMAXがオフであるかを判定する（ステップＳ７０５）。ここで、当該ＬＵの最小余りユニット数ＮＥが０以外の値である場合、当該ＬＵは、１マクロサイクルにおける一秒刻みのタイミングでは、常に余り状態である。したがって、当該ＬＵは、１マクロサイクルに亘って処理性能に余裕のある状態であるとみなせ、本実施形態では、上記「融通する条件」を満たしているものと判断される。ただし、当該ＬＵの融通フラグＦOUTMAXがオンである場合、当該ＬＵにおいては、他のＬＵに対するマクロ性能融通の融通量が下限に到達しており、マクロ性能融通を行なうことができない。そこで、本実施形態では、各ＬＵについて、当該ＬＵの最小余りユニット数ＮＥが０以外の値で、且つ、当該ＬＵの融通フラグＦOUTMAXがオフであるかが判定されている。
【０１７３】
当該ＬＵの最小余りユニット数ＮＥが０以外の値で、且つ、当該ＬＵの融通フラグＦOUTMAXがオフである場合（ステップＳ７０５のＹＥＳルート）、第２判定部５２２は、今回の対象ＬＵの最小余りユニット数ＮＥを、余りユニット数の大きい順に並べた余りユニット配列の適切な箇所に挿入する（ステップＳ７０６）。マクロ性能融通用の余りユニット配列は、例えばＱｏＳ制御域２１３内に作成され、ＬＵを特定するＬＵＮと当該ＬＵにおける最小余りユニット数ＮＥとを対応付けて保存している。なお、本実施形態において、マクロ性能融通での「１サイクルでの融通ＬＵ数」は、例えば、４ＬＵとしているので、余りユニット配列における要素数は４で十分である。
【０１７４】
ステップＳ７０６の処理後、もしくは、当該ＬＵの最小余りユニット数ＮＥが０又は当該ＬＵの融通フラグＦOUTMAXがオンである場合（ステップＳ７０５のＮＯルート）、第２判定部５２２は、全てのＬＵについて最小余りユニット数ＮＥの判定を行なったか否かを判定する（ステップＳ７０７）。全てのＬＵについて待ちユニット数の判定を行なっていない場合（ステップＳ７０７のＮＯルート）、第２判定部５２２は、ステップＳ７０５の処理に戻る。
【０１７５】
全てのＬＵについて待ちユニット数の判定を行なった場合（ステップＳ７０７のＹＥＳルート）、マクロ融通処理部５２０は、待ちユニット配列の要素[i]が０であるか、あるいは、余りユニット配列の要素[i]が０であるかを判定する（ステップＳ７０８）。待ちユニット配列の要素[i]が０、または、余りユニット配列の要素[i]が０である場合（ステップＳ７０８のＹＥＳルート）、マクロ融通処理部５２０は、マクロ融通処理を完了する。
【０１７６】
待ちユニット配列の要素[i]も余りユニット配列の要素[i]も０でない場合（ステップＳ７０８のＮＯルート）、マクロ融通処理部５２０（変更部５２３）は、以下の処理（ステップＳ７０９〜Ｓ７１３）を実行する。ここでは、待ちユニット配列のｉ番目の要素[i]に係る融通先ＬＵと、余りユニット配列のｉ番目の要素[i]に係る融通元ＬＵとを、マクロ性能融通を行なう一つの組合せとする。本実施形態において、各配列の要素数は４としているので、ｉは、例えば０，１，２，３とする。また、ステップＳ７０８〜Ｓ７１３の処理は、各配列の待ちユニット数または余りユニット数の大きい順に実行される。
【０１７７】
なお、ステップＳ７０９〜Ｓ７１３の処理のうち、ステップＳ７０９の処理は、融通先ＬＵのＱｏＳ制御域２１３を対象としている。また、ステップＳ７０９〜Ｓ７１３の処理のうち、ステップＳ７１０〜７１２の処理は、融通元ＬＵのＱｏＳ制御域２１３を対象としている。
【０１７８】
変更部５２３は、待ちユニット配列のｉ番目の融通先ＬＵに係る、ＱｏＳ制御域２１３における性能融通情報を、以下のように設定・変更する（ステップＳ７０９）。つまり、変更部５２３は、ｉ番目の融通先ＬＵの融通フラグＦINをオンに設定する。また、変更部５２３は、ｉ番目の融通先ＬＵの融通ユニット数ＮＢを１インクリメントする。これにより、融通先ＬＵについて算出される性能制限値に、１ユニット分に対応する値（例えば５ＭＢ／ｓ，６０ＩＯＰＳ）が加算される（図７のステップＳ１２３参照）。さらに、変更部５２３は、融通ユニット数ＮＢを１インクリメントすることで他のＬＵからの融通量が上限に到達した場合、融通フラグＦINMAXをオンに設定する。
【０１７９】
そして、変更部５２３は、余りユニット配列のｉ番目の融通元ＬＵの融通フラグＦINがオンであるか否かを判定する（ステップＳ７１０）。融通フラグＦINがオンである場合（ステップＳ７１０のＹＥＳルート）、ｉ番目の融通元ＬＵは、処理性能に余裕があるにもかかわらず他のＬＵから性能融通を受けているものと考えられる。そこで、変更部５２３は、余りユニット配列のｉ番目の融通元ＬＵに係る、ＱｏＳ制御域２１３における性能融通情報を、以下のように設定・変更する（ステップＳ７１１）。
【０１８０】
つまり、変更部５２３は、ｉ番目の融通元ＬＵの融通ユニット数ＮＢを１デクリメントする。これにより、融通元ＬＵについて算出される性能制限値から、１ユニット分に対応する値（例えば５ＭＢ／ｓ，６０ＩＯＰＳ）が減算されることになる（図７のステップＳ１２３参照）。また、ｉ番目の融通元ＬＵの融通フラグＦINMAXがオンである場合、即ち他のＬＵからの融通量が上限に到達していた場合、変更部５２３は、ｉ番目の融通元ＬＵの融通フラグＦINMAXをオフに設定する。さらに、融通ユニット数ＮＢを１デクリメントすることで融通ユニット数ＮＢが０になった場合、ｉ番目の融通元ＬＵが他のＬＵから受ける融通量は０となるので、変更部５２３は、ｉ番目の融通元ＬＵの融通フラグＦINをオフに設定する。
【０１８１】
ｉ番目の融通元ＬＵの融通フラグＦINがオフである場合（ステップＳ７１０のＮＯルート）、変更部５２３は、ｉ番目の融通元ＬＵに係る、ＱｏＳ制御域２１３における性能融通情報を、以下のように設定・変更する（ステップＳ７１２）。つまり、変更部５２３は、ｉ番目の融通元ＬＵの融通フラグＦOUTをオンに設定する。また、変更部５２３は、ｉ番目の融通元ＬＵの融通ユニット数ＮＢを１インクリメントする。これにより、融通元ＬＵについて算出される性能制限値から、１ユニット分に対応する値（例えば５ＭＢ／ｓ，６０ＩＯＰＳ）が減算される（図７のステップＳ１２５参照）。さらに、変更部５２３は、融通ユニット数ＮＢを１インクリメントすることで、他のＬＵから受けているマクロ性能融通の融通量が上限に到達した場合、融通フラグＦINMAXをオンに設定する。
【０１８２】
ステップＳ７１１またはＳ７１２の処理後、マクロ融通処理部５２０は、マクロ性能融通用の待ちユニット配列に、次の要素[i]があるか否かを判定する（ステップＳ７１３）。次の要素[i]がある場合（ステップＳ７１３のＹＥＳルート）、マクロ融通処理部５２０は、ステップＳ７０８の処理に戻る。次の要素[i]がない場合（ステップＳ７１３のＮＯルート）、マクロ融通処理部５２０は、マクロ融通処理を完了する。
【０１８３】
〔２−８〕マクロ融通復旧処理
次に、図１６および図１７に示すフローチャート（ステップＳ８０１〜Ｓ８１８）に従って、本実施形態の復旧処理部５３２によって実行されるマクロ融通復旧処理（図６のステップＳ１０７）の処理手順について説明する。マクロ融通復旧処理は、図６に示すＮミリ秒タイマスケジュール処理がＮミリ秒毎に実行される中で、他のＬＵへ性能を融通しているＬＵで性能不足を検出した場合（図６のステップＳ１０６のＹＥＳルート）、当該ＬＵの性能を元の設定性能に戻すために実行される。つまり、マクロ融通復旧処理では、融通復旧ＬＵが他のＬＵに融通した処理量が、融通先ＬＵから融通復旧ＬＵに復帰される。その際、復旧処理部５３２は、融通先ＬＵに対し融通された処理量の残量が均等もしくはほぼ均等になるように、当該処理量を融通先ＬＵから融通復旧ＬＵに復帰させる。
【０１８４】
復旧処理部５３２は、まず、融通復旧ＬＵが存在するか否かを確認する（ステップＳ８０１）。融通復旧ＬＵが存在しない場合（ステップＳ８０１のＮＯルート）、復旧処理部５３２は、マクロ融通復旧処理を完了する。
【０１８５】
融通復旧ＬＵが存在する場合（ステップＳ８０１のＹＥＳルート）、復旧処理部５３２は、各ＬＵについて、以下の処理（ステップＳ８０２〜Ｓ８０５）を実行する。復旧処理部５３２は、対象ＬＵの融通フラグＦINがオンであるか否か、つまり対象ＬＵが融通先ＬＵであるか否かを判定する（ステップＳ８０２）。
【０１８６】
対象ＬＵが融通先ＬＵである場合（ステップＳ８０２のＹＥＳルート）、復旧処理部５３２は、今回の対象ＬＵの融通ユニット数ＮＢを、融通ユニット数ＮＢの大きい順に並べた融通先ユニット配列の適切な箇所に挿入する（ステップＳ８０３）。併せて、復旧処理部５３２は、融通先ＬＵを特定するＬＵＮと、融通先ＬＵに係るホストを特定する番号とを対応付ける配列も作成する（ステップＳ８０４）。ＬＵ／ホスト番号配列を含む融通先ユニット配列は、例えばＱｏＳ制御域２１３内に作成され、融通先ＬＵを特定するＬＵＮと当該ＬＵにおける融通ユニット数ＮＢとを対応付けて保存している。なお、融通先ユニット配列（ＬＵＮ／ホスト番号配列）の一例については、図１８を参照しながら後述する。また、融通先ユニット配列における要素数は、例えば１５である。対象が「ポートとＬＵＮとの組合せ」である場合、復旧処理部５３２は、ステップＳ８０４において、融通先ＬＵを特定するＬＵＮと、融通先ＬＵに係るポートを特定する情報とを対応付ける配列も作成する。
【０１８７】
ステップＳ８０４の処理後、もしくは、対象ＬＵが融通先ＬＵでない場合（ステップＳ８０２のＮＯルート）、復旧処理部５３２は、全てのＬＵについて融通フラグＦＩの判定を行なったか否かを判定する（ステップＳ８０５）。全てのＬＵについて融通フラグＦＩの判定を行なっていない場合（ステップＳ８０５のＮＯルート）、復旧処理部５３２は、ステップＳ８０２の処理に戻る。全てのＬＵについて融通フラグＦＩの判定を行なった場合（ステップＳ８０５のＹＥＳルート）、復旧処理部５３２は、ステップＳ８０３，Ｓ８０４で作成された融通先ユニット配列を参照しながら、以下の処理（ステップＳ８０６〜Ｓ８１８）を実行する。これにより、復旧処理部５３２は、融通先ＬＵに対し融通された処理量の残量が均等もしくはほぼ均等になるように、当該処理量を融通先ＬＵから融通復旧ＬＵに復帰させる。
【０１８８】
復旧処理部５３２による以下の処理を実行するに際し、融通復旧ＬＵに復旧させるべきユニット数（必要ユニット数）をＡ、復旧残りユニット数をＲとする。復旧残りユニット数Ｒの初期値は、必要ユニット数Ａである。また、融通先ユニット配列数（融通先ユニット配列の要素数）をＭ、配列内ユニット数をＸ0，Ｘ1，Ｘ2，…，ＸM-1（ただしＸ0≧Ｘ1≧Ｘ2≧…≧ＸM-1）、配列内ＬＵをＬ0，Ｌ1，Ｌ2，…，ＬM-1とする（ステップＳ８０６）。
【０１８９】
そして、復旧処理部５３２は、ｉ＝０としてから（ステップＳ８０７）、復旧残りユニット数Ｒが（Ｘi−Ｘi+1）×（ｉ＋１）以下であるか否かを判定する（ステップＳ８０８）。復旧残りユニット数Ｒが（Ｘi−Ｘi+1）×（ｉ＋１）よりも大きい場合（ステップＳ８０８のＮＯルート）、復旧処理部５３２は、ＱｏＳ制御域２１３において、配列内ＬＵのＬ0からＬiまでの融通ユニット数ＮＢから、（Ｘi−Ｘi+1）を減算する。このとき、Ｌ0〜Ｌiのそれぞれの融通フラグＦINMAXがオンであれば、復旧処理部５３２は、融通フラグＦINMAXをオフに設定する。そして、復旧処理部５３２は、復旧残りユニット数ＲをＲ−（Ｘi−Ｘi+1）×（ｉ＋１）に置き換える（ステップＳ８０９）。この後、復旧処理部５３２は、ｉをｉ＋１にインクリメントしてから（ステップＳ８１０）、ｉがＭ−１と一致するか否かを判定する（ステップＳ８１１）。ｉがＭ−１と一致しない場合（ステップＳ８１１のＮＯルート）、復旧処理部５３２は、ステップＳ８０８の処理に戻る。
【０１９０】
一方、復旧残りユニット数Ｒが（Ｘi−Ｘi+1）×（ｉ＋１）以下である場合（ステップＳ８０８のＹＥＳルート）、復旧処理部５３２は、以下の処理（ステップＳ８１２）を実行する。つまり、復旧処理部５３２は、復旧残りユニット数Ｒを（ｉ＋１）個以内の整数値に分割する。そして、復旧処理部５３２は、ＱｏＳ制御域２１３において、配列内ＬＵのＬ0からＬiまでの融通ユニット数ＮＢから、分割して得られた整数値を減算する。このとき、Ｌ0〜Ｌiのそれぞれの融通フラグＦINMAXがオンであれば、復旧処理部５３２は、融通フラグＦINMAXをオフに設定する。そして、復旧処理部５３２は、融通ユニット数ＮＢの減算処理に伴い融通ユニット数ＮＢが０になった場合、融通フラグＦINをオフに設定する。そして、復旧処理部５３２は、復旧残りユニット数Ｒを０に置き換える。
【０１９１】
ステップＳ８１２の処理後、もしくは、ｉがＭ−１と一致した場合（ステップＳ８１１のＹＥＳルート）、復旧処理部５３２は、復旧残りユニット数Ｒが０と一致しているか否かを判定する（ステップＳ８１３）。復旧残りユニット数Ｒが０でない場合（ステップＳ８１３のＮＯルート）、復旧処理部５３２は、融通フラグＦINがオンの全ＬＵの中から、ＬＵＮの最も若いＬＵを選択する（ステップＳ８１４）。この後、復旧処理部５３２は、復旧残りユニット数Ｒが、選択したＬＵの融通ユニット数ＮＢ以下であるか否かを判定する（ステップＳ８１５）。
【０１９２】
復旧残りユニット数Ｒが融通ユニット数ＮＢよりも大きい場合（ステップＳ８１５のＮＯルート）、復旧処理部５３２は、復旧残りユニット数Ｒを、Ｒから融通ユニット数ＮＢを減算した値に置き換える。また、復旧処理部５３２は、ＱｏＳ制御域２１３において、選択したＬＵの融通ユニット数ＮＢを０に設定する。さらに、選択したＬＵの融通フラグＦINMAXがオンであれば、復旧処理部５３２は、融通フラグＦINMAXをオフに設定する。そして、復旧処理部５３２は、融通フラグＦINをオフに設定する（ステップＳ８１６）。
【０１９３】
ステップＳ８１６の処理後、復旧処理部５３２は、ステップＳ８１４に戻り、融通フラグＦINがオンの全ＬＵの中から、ＬＵＮが次に若いＬＵを選択し、同様の処理（ステップＳ８１５，Ｓ８１６）を実行する。
【０１９４】
復旧残りユニット数Ｒが融通ユニット数ＮＢ以下である場合（ステップＳ８１５のＹＥＳルート）、復旧処理部５３２は、ＱｏＳ制御域２１３において、選択したＬＵの融通ユニット数ＮＢから、復旧残りユニット数Ｒを減算する。また、選択したＬＵの融通フラグＦINMAXがオンであれば、復旧処理部５３２は、融通フラグＦINMAXをオフに設定する。さらに、復旧処理部５３２は、融通ユニット数ＮＢの減算処理に伴い融通ユニット数ＮＢが０になった場合、融通フラグＦINをオフに設定する。そして、復旧処理部５３２は、復旧残りユニット数Ｒを０に置き換える（ステップＳ８１７）。
【０１９５】
ステップＳ８１７の処理後、または、復旧残りユニット数Ｒが０である場合（ステップＳ８１３のＹＥＳルート）、復旧処理部５３２は、ＱｏＳ制御域２１３において、融通復旧ＬＵの融通フラグＦOUTおよびＦOUTMAXをいずれもオフに設定する。また、復旧処理部５３２は、ＱｏＳ制御域２１３において、融通復旧ＬＵの融通ユニット数ＮＢを０に設定する（ステップＳ８１８）。この後、復旧処理部５３２は、マクロ融通復旧処理を完了する。
【０１９６】
次に、図１７のステップＳ８０７〜Ｓ８１３の処理について、図１８〜図２０に示す例を参照しながら、具体的に説明する。なお、図１８は、本実施形態に係るマクロ融通復旧処理（図１６のステップＳ８０３，Ｓ８０４）で作成される融通先ユニット配列（ＬＵＮ／ホスト番号配列）の一例を示す図である。また、図１９および図２０は、本実施形態に係るマクロ融通復旧処理（特に図１７のステップＳ８０７〜Ｓ８１３）を具体的に説明する図である。
【０１９７】
図１８に示す融通先ユニット配列では、「ホストとＬＵＮとの組合せ」を特定するホスト番号およびＬＵＮと、当該ＬＵＮに対応する融通先ＬＵの融通ユニット数ＮＢとが、対応付けられ、融通ユニット数ＮＢの大きい順にソートされている。図１８および図１９に示す例において、配列内ＬＵのＬ0は、ホスト＃１およびＬＵＮ＃１に対応し、Ｌ0の融通ユニット数ＮＢ（＝Ｘ0）は、５０である。また、配列内ＬＵのＬ1は、ホスト＃２およびＬＵＮ＃３に対応し、Ｌ1の融通ユニット数ＮＢ（＝Ｘ1）は、２５であり、配列内ＬＵのＬ2は、ホスト＃１およびＬＵＮ＃４に対応し、Ｌ2の融通ユニット数ＮＢ（＝Ｘ2）は、１５である。さらに、配列内ＬＵのＬ3は、ホスト＃２およびＬＵＮ＃２に対応し、Ｌ3の融通ユニット数ＮＢ（＝Ｘ3）は、１０であり、配列内ＬＵのＬ4は、ホスト＃２およびＬＵＮ＃５に対応し、Ｌ4の融通ユニット数ＮＢ（＝Ｘ4）は、８である。なお、融通先ユニット配列数（融通先ユニット配列の要素数）Ｍは１０とする。
【０１９８】
以下では、図１８および図１９に示す融通先ユニット配列に基づき、復旧処理部５３２が、必要ユニット数Ａ＝６４のユニットを融通復旧ＬＵに復旧させる場合の処理手順について具体的に説明する。このとき、復旧残りユニット数Ｒの初期値は、必要ユニット数Ａの６４となる。復旧処理部５３２は、ｉ＝０を設定してから（ステップＳ８０７）、まず、ｉ＝０のときの値（Ｘi−Ｘi+1）×（ｉ＋１）＝（Ｘ0−Ｘ1）×（０＋１）＝２５×１＝２５を算出する。Ｒの値は６４であるので、Ｒ＞２５であり（ステップＳ８０８のＮＯルート）、Ｌ0から融通復旧ユニットに２５ユニット分の性能を復旧させるべく、復旧処理部５３２は、Ｌ0の融通ユニット数ＮＢから２５を減算する。そして、復旧処理部５３２は、復旧残りユニット数Ｒを、６４から、６４−２５＝３９に置き換える（ステップＳ８０９；図２０の最上段の式参照）。
【０１９９】
ついで、復旧処理部５３２は、ｉを１インクリメントしてｉ＝１にする（ステップＳ８１０）。このとき、ｉ＝１≠Ｍ−１＝９であるため（ステップＳ８１１のＮＯルート）、復旧処理部５３２は、ステップＳ８０８に戻り、ｉ＝１のときの値（Ｘi−Ｘi+1）×（ｉ＋１）＝（Ｘ1−Ｘ2）×（１＋１）＝１０×２＝２０を算出する。Ｒの値は３９であるので、Ｒ＞２０であり（ステップＳ８０８のＮＯルート）、Ｌ0およびＬ1から融通復旧ユニットに２０ユニット分の性能を復旧させるべく、復旧処理部５３２は、Ｌ0およびＬ1の融通ユニット数ＮＢからそれぞれ１０を減算する。そして、復旧処理部５３２は、復旧残りユニット数Ｒを、３９から、３９−２０＝１９に置き換える（ステップＳ８０９；図２０の上から２段目の式参照）。
【０２００】
ついで、復旧処理部５３２は、ｉを１インクリメントしてｉ＝２にする（ステップＳ８１０）。このとき、ｉ＝２≠Ｍ−１＝９であるため（ステップＳ８１１のＮＯルート）、復旧処理部５３２は、ステップＳ８０８に戻り、ｉ＝２のときの値（Ｘi−Ｘi+1）×（ｉ＋１）＝（Ｘ2−Ｘ3）×（２＋１）＝５×３＝１５を算出する。Ｒの値は１９であるので、Ｒ＞１５であり（ステップＳ８０８のＮＯルート）、Ｌ0，Ｌ1，Ｌ2から融通復旧ユニットに１５ユニット分の性能を復旧させるべく、復旧処理部５３２は、Ｌ0，Ｌ1，Ｌ2の融通ユニット数ＮＢからそれぞれ５を減算する。そして、復旧処理部５３２は、復旧残りユニット数Ｒを、１９から、１９−１５＝４に置き換える（ステップＳ８０９；図２０の上から３段目の式参照）。
【０２０１】
ついで、復旧処理部５３２は、ｉを１インクリメントしてｉ＝３にする（ステップＳ８１０）。このとき、ｉ＝３≠Ｍ−１＝９であるため（ステップＳ８１１のＮＯルート）、復旧処理部５３２は、ステップＳ８０８に戻り、ｉ＝３のときの値（Ｘi−Ｘi+1）×（ｉ＋１）＝（Ｘ3−Ｘ4）×（３＋１）＝２×４＝８を算出する。Ｒの値は４であるので、Ｒ≦８であり（ステップＳ８０８のＹＥＳルート；図２０の上から４段目の式参照）、復旧処理部５３２は、復旧残りユニット数Ｒ＝４を（ｉ＋１）＝４個以内の整数値に分割する。ここでは、Ｒ＝４は、４つのＬＵであるＬ0〜Ｌ3に分割され、復旧処理部５３２は、４つのＬ0〜Ｌ3の融通ユニット数ＮＢから、それぞれ１を減算し、復旧残りユニット数Ｒを４から０に置き換える（ステップＳ８１２）。このときＲ＝０であるため（ステップＳ８１３のＹＥＳルート）、復旧処理部５３２は、ステップＳ８１８の処理に移行する。
【０２０２】
以上の処理によって、融通復旧ＬＵが他のＬＵに融通した性能（処理量）が、融通先ＬＵから融通復旧ＬＵに復帰される。その際、融通先ＬＵに対し融通された性能（処理量）の残量が均等もしくはほぼ均等になるように、当該性能を融通先ＬＵから融通復旧ＬＵに復帰させることができる。
【０２０３】
〔３〕本実施形態の効果
本実施形態のストレージ装置１００によれば、使用されるホストとＬＵとの組合せの性能レベル（優先度）に従って、ストレージ装置１００の性能を配分し、ストレージのＱｏＳ機能を容易に実現することができる。
【０２０４】
また、本実施形態のストレージ装置１００によれば、ホスト１０からの入出力要求（Ｉ／Ｏ要求，コマンド）の状況やホスト１０の接続環境の変化に応じて、ストレージ性能を最適に制御することができる。特に、本実施形態のマクロ性能融通では、上記優先度についての性能値の最小間隔５ＭＢ／ｓ，６０ＩＯＰＳを「１ユニット」とする単位で、性能融通が行なわれる。したがって、優先度を変更して性能限界値を変更する場合に比べ、性能限界値の変更間隔（融通量）を大幅に小さくすることができ、ホスト１０から要求される処理性能の変動に細かく追従することができ、様々な性能変動に対応することができる。その際、複数ボリューム（ＬＵ）間で、処理性能に余裕のあるＬＵから、性能不足のＬＵに対し、性能が融通されるため、性能融通を確実に行なうことができる。
【０２０５】
さらに、本実施形態のストレージ装置１００では、ミクロ性能融通およびマクロ性能融通の特徴を踏まえ、ミクロ性能融通およびマクロ性能融通のいずれか一方が使用される。ミクロ性能融通およびマクロ性能融通の一方を使用する場合、ストレージ装置１００のストレージＱｏＳを使用する動作環境に応じて、適切な性能融通を選択することができる。また、両方を使用する場合、一時的なスパイク性能などを吸収する際にはミクロ性能融通を使用する一方、継続的な性能変動を吸収する際にはマクロ性能融通を使用するように制御を行なうことで、両方の特徴を有効に利用することができる。
【０２０６】
また、本実施形態のミクロ性能融通では、例えば１秒以下ミクロサイクルで、処理性能が不足するＬＵに、処理性能に余裕のあるＬＵから処理性能が融通される。このときの融通量は、記憶されず、次のミクロサイクルでは性能限界値の調整に反映されない。従って、ストレージ装置１００は、次のミクロサイクルでは、元の処理性能で動作する。このように、ミクロ性能融通は一時的な融通であるため、ミクロ性能融通を用いることで一度に大量の性能融通が可能である。
【０２０７】
さらに、本実施形態のマクロ性能融通では、例えば２秒以上の、より大きなマクロサイクルで処理性能が監視される。そして、所定時間（例えば１マクロサイクル）に亘り連続して性能不足となっているＬＵに対し、前記所定時間に亘り連続して処理性能に余裕のあるＬＵから、処理性能が融通される。このように、マクロ性能融通は、性能融通量を学習により調整するため、ホスト１０から要求される処理性能の継続的な変動に有効に対応することができる。
【０２０８】
またさらに、本実施形態のストレージ装置１００では、融通元ＬＵで処理性能不足が発生した場合、つまり融通復旧ＬＵが存在する場合、融通復旧ＬＵが他のＬＵに融通した性能（処理量）が、融通先ＬＵから融通復旧ＬＵに復帰される。その際、融通先ＬＵに対し融通された性能（処理量）の残量が均等もしくはほぼ均等になるように、当該性能を融通先ＬＵから融通復旧ＬＵに復帰させることができる。つまり、融通復旧ＬＵの性能復旧後の複数の融通先ＬＵにおいて融通量を均等もしくはほぼ均等に残すことができ、複数の融通先ＬＵにおいて融通量の偏りがなくなる。したがって、当該複数の融通先ＬＵを含むストレージ装置１００において、以降の処理を効率よく行なうことができる。
【０２０９】
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０２１０】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、ＳＣＳＩターゲット制御部３０３において、コマンド受信部５０４とスケジュール部５０６とは統合されてもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０２１１】
また、本実施形態において説明した各種処理は、予め用意されたプログラムをストレージ装置が有するコンピュータで実行することによって実現することができる。そこで、以下では、図２１を参照しながら、本実施形態と同様の機能を有するストレージ装置制御プログラムを実行するコンピュータの一例を説明する。図２１は、本実施形態のストレージ装置制御プログラムを実行するコンピュータを示すブロック図である。
【０２１２】
図２１に示すように、コンピュータ１０００は、ホストとのインターフェースであるＦＣ−ＣＡ１０１０と、ホストとのインターフェースであるｉＳＣＳＩ−ＣＡ１０２０と、ディスク装置とのインターフェースであるＳＡＳ１０３０とを有する。また、コンピュータ１０００は、各種情報を一時記憶するＲＡＭ１０４０と、書き換え可能であり、電源を切ってもデータが消えない不揮発性のフラッシュメモリ１０５０とを有する。さらに、コンピュータ１０００は、読み出し専用メモリであるＲＯＭ（Read Only Memory）１０６０と、各種演算処理を実行するＣＰＵ１０７０とを有する。また、コンピュータ１０００が有する各部は、バス１０８０を介して接続される。
【０２１３】
そして、フラッシュメモリ１０５０には、図３および図５に示したＱｏＳ管理テーブル５０１に対応するＱｏＳ管理テーブル１０５１や、図３に示した各ＬＵの性能融通情報などが記憶される。また、ＲＯＭ１０６０には、図３に示した算出部５０５，スケジュール部５０６，実行部５０７，マクロ融通チェック部５１０，マクロ融通処理部５２０，マクロ融通復旧処理部５３０，ミクロ融通処理部５４０と同様の機能を有するストレージ装置制御プログラム１０６１が記憶される。
【０２１４】
そして、ＣＰＵ１０７０は、フラッシュメモリ１０５０から読み出したＱｏＳ管理テーブル１０５１や各ＬＵの性能融通情報を参照し、ＲＯＭ１０６０から読み出したストレージ装置制御プログラム１０６１をストレージ装置制御プロセス１０７１として実行する。
【０２１５】
なお、上記ストレージ装置制御プログラム１０６１は、必ずしもＲＯＭ１０６０に格納されている必要はない。例えば、当該プログラム１０６１は、フレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供されてもよい。この場合、コンピュータ１０００はその記録媒体からプログラム１０６１を読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、公衆回線，インターネット，ＬＡＮ（Local Area Network），ＷＡＮ（Wide Area Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラム１０６１を記憶させておき、コンピュータ１０００がこれらからプログラム１０６１を読み出して実行するようにしてもよい。
【０２１６】
〔５〕付記
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出する算出部と、
情報処理装置から受信した入出力要求に係る処理量と、前記算出部により算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールするスケジュール部と、
前記スケジュール部によりスケジュールされた前記実行順で前記入出力要求に係る処理を実行する実行部と、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定する第１判定部と、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると前記第１判定部により判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する変更部と、
を有する、ストレージ装置。
【０２１７】
（付記２）
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第２所定時間に亘って当該記憶装置の処理性能を下回っているか否かを判定する第２判定部を、さらに有し、
前記複数の記憶装置のうち第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると前記第１判定部により判定され、且つ、前記複数の記憶装置のうち第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると前記第２判定部により判定された場合、前記変更部は、前記上限値を前記所定の性能融通単位で変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
付記１に記載のストレージ装置。
【０２１８】
（付記３）
前記変更部は、前記第１記憶装置について算出された前記上限値に、前記所定の性能融通単位に対応する値を加算するとともに、前記第２記憶装置について算出された前記上限値から、前記所定の性能融通単位に対応する値を減算するように、前記上限値を変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
付記２に記載のストレージ装置。
【０２１９】
（付記４）
前記所定の性能融通単位に対応する値は、前記優先度に基づいて決定される前記入出力処理量の最小間隔以下である、
付記３に記載のストレージ装置。
【０２２０】
（付記５）
前記記憶装置毎に、前記第１所定時間よりも短い時間間隔で、当該記憶装置に対する入出力要求の処理待ち量を取得し、前記第１所定時間内に取得された前記処理待ち量のうち最小のものを最小待ち量として取得する第１取得部を、さらに有し、
前記第１判定部は、前記第１記憶装置について前記第１取得部により取得された前記最小待ち量が０でない場合、前記第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると判定する、
付記２〜付記４のいずれか一項に記載のストレージ装置。
【０２２１】
（付記６）
前記第１取得部は、前記最小待ち量として、前記最小待ち量を前記所定の性能融通単位に換算した最小待ちユニット数を取得する、
付記５に記載のストレージ装置。
【０２２２】
（付記７）
前記記憶装置毎に、前記第２所定時間よりも短い時間間隔で、当該記憶装置に対する入出力要求に係る処理量の、当該記憶装置の処理性能に対する処理余り量を取得し、前記第２所定時間内に取得された前記処理余り量のうち最小のものを最小余り量として取得する第２取得部を、さらに有し、
前記第２判定部は、前記第２取得部により取得された前記最小余り量が０でない場合、前記第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると判定する、
付記２〜付記６のいずれか一項に記載のストレージ装置。
【０２２３】
（付記８）
前記第２取得部は、前記最小余り量として、前記最小余り量を前記所定の性能融通単位に換算した最小余りユニット数を取得する、
付記７に記載のストレージ装置。
【０２２４】
（付記９）
前記記憶装置毎に、当該記憶装置が、一以上の前記第１記憶装置への前記性能融通を行なった前記第２記憶装置であり、且つ、当該記憶装置に対する入出力要求の処理待ちの生じた融通復旧対象であるか否かを判定する第３判定部と、
前記第３判定部により当該記憶装置が前記融通復旧対象であると判定された場合、前記融通復旧対象の記憶装置が他の記憶装置に融通した処理量を、前記一以上の前記第１記憶装置から前記融通復旧対象の記憶装置に復帰させる復旧処理部と、
をさらに有する、付記２〜付記８のいずれか一項に記載のストレージ装置。
【０２２５】
（付記１０）
前記復旧処理部は、前記一以上の前記第１記憶装置に対し融通された処理量の残量が均等もしくはほぼ均等になるように、当該処理量を前記一以上の前記第１記憶装置から前記融通復旧対象の記憶装置に復帰させる、
付記９に記載のストレージ装置。
【０２２６】
（付記１１）
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能の所定数倍以上であるか否かを判定する第４判定部と、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能の所定数倍以上であると前記第４判定部により判定された場合、当該記憶装置に対する入出力要求に係る処理量を超える処理余裕をもつ記憶装置から当該記憶装置への性能融通を行なう融通処理部と、
をさらに有する、付記１〜付記１０のいずれか一項に記載のストレージ装置。
【０２２７】
（付記１２）
前記複数の記憶装置のそれぞれは、一以上の物理記憶装置を論理的に分割した複数の論理ユニットの一つである、
付記１〜付記１１のいずれか一項に記載のストレージ装置。
【０２２８】
（付記１３）
ストレージ装置が、
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出し、
情報処理装置から受信した入出力要求に係る処理量と、算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールし、
スケジュールされた前記実行順で前記入出力要求に係る処理を実行し、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定し、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する、
ことを特徴とするストレージ装置の制御方法。
【０２２９】
（付記１４）
前記ストレージ装置が、さらに、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第２所定時間に亘って当該記憶装置の処理性能を下回っているか否かを判定し、
前記複数の記憶装置のうち第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると前記第１判定部により判定され、且つ、前記複数の記憶装置のうち第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると前記第２判定部により判定された場合、前記上限値を前記所定の性能融通単位で変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
付記１３に記載のストレージ装置の制御方法。
【０２３０】
（付記１５）
前記ストレージ装置が、さらに、
前記第１記憶装置について算出された前記上限値に、前記所定の性能融通単位に対応する値を加算するとともに、前記第２記憶装置について算出された前記上限値から、前記所定の性能融通単位に対応する値を減算するように、前記上限値を変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
付記１４に記載のストレージ装置の制御方法。
【０２３１】
（付記１６）
前記所定の性能融通単位に対応する値は、前記優先度に基づいて決定される前記入出力処理量（性能値）の最小間隔以下である、
付記１５に記載のストレージ装置の制御方法。
【０２３２】
（付記１７）
ストレージ装置に含まれるコンピュータに、
複数の記憶装置に設定された優先度に基づいて決定される入出力処理量の上限値を前記記憶装置毎に算出し、
情報処理装置から受信した入出力要求に係る処理量と、算出された前記上限値とに基づいて、前記入出力要求に係る処理の実行順をスケジュールし、
スケジュールされた前記実行順で前記入出力要求に係る処理を実行し、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第１所定時間に亘って当該記憶装置の処理性能を超えているか否かを判定し、
当該記憶装置に対する入出力要求に係る処理量が当該記憶装置の処理性能を超えていると判定された場合、当該記憶装置についての前記上限値を、所定の性能融通単位で変更する、
処理を実行させる、ストレージ装置制御プログラム。
【０２３３】
（付記１８）
前記コンピュータに、さらに、
前記記憶装置毎に、当該記憶装置に対する入出力要求に係る処理量が第２所定時間に亘って当該記憶装置の処理性能を下回っているか否かを判定し、
前記複数の記憶装置のうち第１記憶装置に対する入出力要求に係る処理量が前記第１所定時間に亘って前記第１記憶装置の処理性能を超えていると前記第１判定部により判定され、且つ、前記複数の記憶装置のうち第２記憶装置に対する入出力要求に係る処理量が前記第２所定時間に亘って前記第２記憶装置の処理性能を下回っていると前記第２判定部により判定された場合、前記上限値を前記所定の性能融通単位で変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
処理を実行させる、付記１７に記載のストレージ装置制御プログラム。
【０２３４】
（付記１９）
前記コンピュータに、さらに、
前記第１記憶装置について算出された前記上限値に、前記所定の性能融通単位に対応する値を加算するとともに、前記第２記憶装置について算出された前記上限値から、前記所定の性能融通単位に対応する値を減算するように、前記上限値を変更することで、前記第２記憶装置から前記第１記憶装置への性能融通を前記所定の性能融通単位で行なう、
付記１８に記載のストレージ装置制御プログラム。
【０２３５】
（付記２０）
前記所定の性能融通単位に対応する値は、前記優先度に基づいて決定される前記入出力処理量の最小間隔以下である、
付記１９に記載のストレージ装置制御プログラム。
【符号の説明】
【０２３６】
１    ストレージシステム
１０ａ，１０ｂ    ホスト（情報処理装置）
１００    ストレージ装置
１０１ａ〜１０１ｄ    ＨＤＤ（一以上の物理記憶装置）
２００ａ，２００ｂ    ＣＭ
２０１ａ，２０１ｂ，１０１０    ＦＣ−ＣＡ（ポート）
２０２ａ，２０２ｂ，１０２０    ｉＳＣＳＩ−ＣＡ（ポート）
２０３ａ，２０３ｂ，１０３０    ＳＡＳ
２１０ａ，２１０ｂ    メモリ
２１１ａ，２１１ｂ    キャッシュ域
２１２ａ，２１２ｂ    制御域
２１３    ＱｏＳ制御域
２２０ａ，２２０ｂ，１０７０    ＣＰＵ（コンピュータ）
３０３    ＳＣＳＩターゲット制御部
３０４    ＳＣＳＩコマンド制御部
５０１    ＱｏＳ管理テーブル
５０２    待ちキュー格納部
５０３    性能設定部
５０４    コマンド受信部
５０５    算出部
５０６    スケジュール部
５０７    実行部
５１０    マクロ融通チェック部
５１１    第１取得部
５１２    第２取得部
５２０    マクロ融通処理部
５２１    第１判定部
５２２    第２判定部
５２３    変更部
５３０    マクロ融通復旧処理部
５３１    第３判定部
５３２    復旧処理部
５４０    ミクロ融通処理部
５４１    第４判定部
５４２    融通処理部
５４３    融通後処理部
１０００    コンピュータ
１０４０    ＲＡＭ
１０５０    フラッシュメモリ
１０６０    ＲＯＭ
１０６１    ストレージ装置制御プログラム
１０７１    ストレージ装置制御プロセス
【図１】
2015084143.tif 000004
【図２】
2015084143.tif 000005
【図３】
2015084143.tif 000006
【図４】
2015084143.tif 000007
【図５】
2015084143.tif 000008
【図６】
2015084143.tif 000009
【図７】
2015084143.tif 000010
【図８】
2015084143.tif 000011
【図９】
2015084143.tif 000012
【図１０】
2015084143.tif 000013
【図１１】
2015084143.tif 000014
【図１２】
2015084143.tif 000015
【図１３】
2015084143.tif 000016
【図１４】
2015084143.tif 000017
【図１５】
2015084143.tif 000018
【図１６】
2015084143.tif 000019
【図１７】
2015084143.tif 000020
【図１８】
2015084143.tif 000021
【図１９】
2015084143.tif 000022
【図２０】
2015084143.tif 000023
【図２１】
2015084143.tif 000024