(57)【特許請求の範囲】
【請求項１】
バスを介して互いに接続された複数のコントローラを備え、
前記各コントローラは、複数の論理ユニットの処理を担当する複数のコアを備え、
前記各コアは、関連する論理ユニットを、ホスト装置のアクセス対象として設定し、前記論理ユニットに対するリード・ライトに伴う、一つ以上のディスクとのデータ授受を制御する、ストレージシステムであって、
前記各コントローラは、
（Ａ）前記複数の論理ユニットと、前記複数の論理ユニットのＬＵ制御権を有する前記複数のコアとの対応関係を定めたＬＵ制御権管理情報を基に、前記各論理ユニットについて、前記論理ユニットに対するＬＵ制御権を有するＬＵ制御権移行元となるコアと、前記論理ユニットに対する前記ＬＵ制御権を移行させるＬＵ制御権移行先候補となるコアであって、前記ＬＵ制御権移行元コア以外のコア、との組み合わせのパターンを抽出し、
（Ｂ）前記各論理ユニットについて、前記コントローラを構成する前記複数のコア及びその他複数のリソースの、前記論理ユニットに対するデータ処理における使用状況を測定し、この測定結果を基に、前記各論理ユニットについて、前記ＬＵ制御権移行先候補コアへの前記ＬＵ制御権の移行後の、前記ＬＵ制御権移行先候補コア及び前記複数のリソースの使用状況の変化を予測し、
（Ｃ）前記ＬＵ制御権移行元コアから前記ＬＵ制御権移行先候補コアへの前記ＬＵ制御権の移行において生じる、前記複数のリソースの使用状況の変化に対応するオーバヘッドを予測し、
（Ｄ）前記（Ｂ）と（Ｃ）に於けるそれぞれの予測結果を基に、前記抽出した各パターンの中から、ユーザが負荷バランスのために設定した一つ以上のポリシーに適合する組み合わせパターンを１つ選択し、当該選択した組み合わせパターンに属する前記ＬＵ制御権移行先候補コアに前記ＬＵ制御権を移行し、前記選択されたコアの組み合わせパターンを前記ＬＵ制御権管理情報に登録する、ものであり、
さらに、前記複数のコントローラは、
前記ＬＵ制御権の移行を、異なるコントローラ内に存在する複数のコア間、及び、同一のコントローラ内に存在する複数のコア間で実行し、
前記複数コントローラ間及び前記同一のコントローラ内に存在する複数のコア間での前記ＬＵ制御権の移行は、前記複数のリソースの使用状況の変化予測が行われる前記ＬＵ制御権の移行に含まれる、ストレージシステム。
【請求項２】
前記各コントローラは、プログラムを記憶するメモリと、前記メモリに格納されたプログラムに従ってデータを処理するための前記複数のコアと、前記各コアの処理に伴うデータを一時的に格納するためのフラッシュメモリと、を備え、
前記各コアは、前記複数の論理ユニットに対するＬＵ制御権を受け取り、前記複数の論理ユニットの処理を担当し、
前記複数のコアのうち前記ＬＵ制御権を有するコアは、前記ＬＵ制御権管理情報を基に、前記ＬＵ制御権を有するコアと前記ＬＵ制御権の移行先の候補となるコアとの関係を示すパターンを、前記各論理ユニット毎に抽出し、前記コントローラを構成する複数のリソースの使用状況を前記各論理ユニット毎に測定し、この測定結果を基に、前記ＬＵ制御権の移行後に生じうる、前記複数のリソースの使用状況の変化を前記各論理ユニット毎に予測するとともに、前記測定結果を基に、前記ＬＵ制御権の移行処理によって発生しうる、前記複数のリソースの使用状況の変化によるオーバヘッドを、前記各論理ユニット毎に予測し、前記各予測結果を基に、前記抽出した各パターンの中から前記ポリシーに適合するパターンを選択し、当該選択したパターンに属するコアに前記ＬＵ制御権を移行する、請求項１に記載のストレージシステム。
【請求項３】
前記複数のコアのそれぞれは、AMP（Asymmetric Multi Processing）方式で動作する、請求項１記載のストレージシステム。
【請求項４】
前記ＬＵ制御権管理情報は、前記論理ユニットを担当する前記コアと前記コアが属する前記コントローラとの対応関係を示す情報である、請求項１に記載のストレージシステム。
【請求項５】
前記複数のリソースの使用状況は、前記複数のリソースの使用率と前記コントローラ間バスの使用率を含む情報である、請求項１に記載のストレージシステム。
【請求項６】
前記ポリシーは、前記各コアの負荷を分散するためのパラメータとして、負荷バランスの優先度と、システム性能の優先度と、許容可能なオーバヘッド許容レベルとを含む、請求項１に記載のストレージシステム。
【請求項７】
前記ポリシーは、前記各コアの負荷を分散するためのパラメータとして、負荷バランスの優先度とシステム性能の優先度で構成され、
前記コントローラは、前記負荷バランスの優先度が前記システム性能の優先度よりも高いときには、前記各リソースの負荷を分散させるためのパターンを前記ポリシーに適合するパターンとして選択し、前記負荷バランスの優先度が前記システム性能の優先度よりも低いときには、前記各リソースの負荷が不均衡となっても、システム性能を高くするためのパターンを前記ポリシーに適合するパターンとして選択する、請求項１に記載のストレージシステム。
【請求項８】
前記ポリシーは、前記各コアの負荷を分散するためのパラメータとして、許容可能なオーバヘッドレベルで構成され、
前記コントローラは、前記使用状況の変化が許容可能なオーバヘッドレベルよりも低くなるパターンを、前記ポリシーに適合するパターンとして選択する、請求項１に記載のストレージシステム。
【請求項９】
バスを介して互いに接続された複数のコントローラのそれぞれが、複数の論理ユニットの処理を担当する複数のコアを備え、各コアが、関連する論理ユニットを、ホスト装置のアクセス対象として設定し、前記論理ユニットに対するリード・ライトに伴う、一つ以上のディスクとのデータ授受を制御する、データ制御方法であって、
前記各コントローラは、
（Ａ）前記複数の論理ユニットと、前記複数の論理ユニットのＬＵ制御権を有する前記複数のコアとの対応関係を定めたＬＵ制御権管理情報を基に、前記各論理ユニットについて、前記論理ユニットに対するＬＵ制御権を有するＬＵ制御権移行元となるコアと、当該論理ユニットに対する前記ＬＵ制御権を移行させるＬＵ制御権移行先候補となるコアであって、前記ＬＵ制御権移行元コア以外のコア、との組み合わせのパターンを抽出し、
（Ｂ）前記各論理ユニットについて、前記コントローラを構成する前記複数のコア及びその他複数のリソースの、前記論理ユニットに対するデータ処理における使用状況を測定し、この測定結果を基に、前記各論理ユニットについて、前記ＬＵ制御権移行先候補コアへの前記ＬＵ制御権の移行後の、前記ＬＵ制御権移行先候補コア及び前記複数のリソースの使用状況の変化を予測し、
（Ｃ）前記ＬＵ制御権移行元コアから前記ＬＵ制御権移行先候補コアへの前記ＬＵ制御権の移行において生じる、前記複数のリソースの使用状況の変化に対応するオーバヘッドを予測し、
（Ｄ）前記（Ｂ）と（Ｃ）に於けるそれぞれの予測結果を基に、前記抽出した各パターンのなかから、ユーザが負荷バランスのために設定した一つ以上のポリシーに適合する組み合わせパターンを１つ選択し、当該選択した組み合わせパターンに属する前記ＬＵ制御権移行先候補コアに前記ＬＵ制御権を移行し、前記選択されたコアの組み合わせパターンを前記ＬＵ制御権管理情報に登録する、ものであり、
さらに、前記複数のコントローラは、
前記ＬＵ制御権の移行を、異なるコントローラ内に存在する複数のコア間、及び、同一のコントローラ内に存在する複数のコア間で実行し、
前記複数のコア間及び前記同一のコントローラ内に存在する複数のコア間での前記ＬＵ制御権の移行は、前記複数のリソースの使用状況の変化予測が行われる前記ＬＵ制御権の移行に含まれる、データ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに係り、特に、マイクロプロセッサをはじめとする複数のリソースから構成されるストレージシステムの性能向上技術に関するものである。
【背景技術】
【０００２】
ストレージシステムは、ホスト計算機から発行されるデータに対して処理を行うストレージ制御部とデータを格納する記憶装置によって構成されている。このストレージ制御部を複数備え、さらに記憶装置にもデータの冗長性を持たせることにより、ストレージシステムの信頼性を向上する技術が知られている（特許文献１参照）。
【０００３】
特許文献１には、複数のストレージ制御部を備えたシステムにおいて、ホスト計算機から発行された入出力要求を、処理すべきプロセッサに高速に渡す技術を用いて負荷を分散し、データ処理速度を向上させるストレージシステムが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１３４７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
既述の公報では、ストレージ制御部内に複数のコアを持つシステムに関して開示している。この場合、同一ストレージ制御部内のコア間と、別ストレージ制御部間のコア間では、データ処理を行う上で使用するリソースが異なるため、負荷分散を行った結果、プロセッサコアの負荷が均一となっても、その他のリソースの負荷が不均一となることがある。
【０００６】
また、負荷分散のためにプロセッサコアが担当する論理ユニットを切り替える際に発生するオーバヘッドがあるため、負荷分散のみを目的とした切り替えは、かえってストレージシステム性能を低下させる可能性があった。
【０００７】
本発明は、非対称性を持つ複数のコアの負荷分散に伴う負荷変動を考慮し、ユーザの設定を踏まえた最適な負荷分散処理を選択して実行することができるストレージシステムおよびその制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
前記目的を達成するために、本発明は、ＬＵ制御権を受けて処理対象の処理を担当するコアとして、非対称性を有する複数のコアを備え、各コアの負荷を分散するに際して、ＬＵ制御権を有するコアとＬＵ制御権の移行先の候補となるコアとの関係を示すパターンを処理対象毎に抽出し、ストレージを構成する各リソースの使用状況を取得し、取得した各リソースの使用状況を基に、各コアの負荷分散の移行に伴って発生すると想定される変化状態を予測し、この予測結果から、設定された条件に適合するパターンを選択し、選択したパターンに従ってＬＵ制御権の変更先を決定することを特徴とするものである。
【発明の効果】
【０００９】
本発明によれば、非対称性を有する複数のコアに対して、設定にあわせた最適な負荷分散を実施することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態におけるストレージシステムのブロック構成図である。
【図２】本発明の実施形態におけるストレージシステムのメモリ構成図である。
【図３】本発明の実施形態におけるストレージシステムのキャッシュメモリ構成図である。
【図４】本発明の実施形態におけるストレージシステムの構成情報構成図である。
【図５】本発明の実施形態におけるストレージシステムの性能情報構成図である。
【図６】本発明の実施形態におけるストレージシステムのリソース使用状況の管理情報構成図である。
【図７】本発明の実施形態におけるストレージシステムのＬＵ制御権移行後のリソース使用状況変化の予測結果を示す情報の構成図である。
【図８】本発明の実施形態におけるストレージシステムのＬＵ制御権移行処理自体で発生するオーバヘッドの予測結果を示す情報の構成図である。
【図９】本発明の実施形態におけるストレージシステムのバランシング処理のフローチャートである。
【図１０】本発明の実施形態におけるストレージシステムの簡易バランシング処理を説明するためのフローチャートである。
【図１１】本発明の実施形態におけるストレージシステムの通常バランシング処理を説明するためのフローチャートである。
【図１２】本発明の実施形態におけるストレージシステムのユーザからの設定方法を説明するための管理画面構成図である。
【図１３】本発明の実施形態におけるストレージシステムのリソース使用状況の管理情報構成図の別形態である。
【図１４】本発明の実施形態におけるストレージシステムの性能情報取得解析処理のフローチャートである。
【図１５】本発明の実施形態におけるストレージシステムのユーザに対する性能情報表示画面構成図である。
【図１６】本発明の実施形態におけるストレージシステムのユーザに対するＬＵ制御権移行処理履歴表示画面構成図である。
【図１７】本発明の実施形態におけるストレージシステムのユーザに対する自動設定管理画面構成図である。
【発明を実施するための形態】
【実施例】
【００１１】
以下、本発明の一実施形態を図面に基づいて説明する。図１は本発明の一実施例を示すストレージシステムの構成図である。図１において、ストレージシステムは、ストレージ１０１、ホスト計算機１０３，１０４、管理ホスト１０５を備える。
【００１２】
ホスト計算機１０３，１０４は、ストレージ１０１に接続するための通信ポート（図示せず）を備えており、この通信ポートを介して、接続経路１８４，１８５を通り、ストレージ１０１に接続される。管理ホスト１０５は、管理用接続経路１８３を介して、ストレージ１０１に接続される。管理ホスト１０５は、ユーザの操作による設定情報、例えば、負荷分散に関するポリシーとしての設定情報を入力する入力部として構成されている。
【００１３】
図１では、ホスト計算機１０３，１０４、管理ホスト１０５とストレージ１０１を直接接続した構成を記載している。ホスト接続についてはＳＡＮ（Storage  Area  Network）と呼ばれるネットワーク、管理ホスト接続についてはＬＡＮ（Local  Area  Network）を構成し、多くのホスト計算機及び管理ホスト接続に対応可能な構成を用いてもよい。ここで、ＳＡＮとして、Fibre  ChannelやiSCSI（Small  Computer  System  Interface  over  Internet）などのプロトコルを使用することができる。また、管理ホスト接続については、ホスト接続と同じ接続経路を用いることもできる。
【００１４】
ストレージ１０１は、内部にコントローラ１１１とコントローラ１５１とディスク１８１を備える。コントローラ１１１，１５１は、それぞれコントローラ番号と呼ばれる、「０」，「１」という番号を持つ。コントローラ１１１，１５１間は、コントローラ間バス１８２によって接続される。コントローラ１１１，１５１とディスク１８１は、ディスク接続経路１２１，１６１によって接続される。
【００１５】
図１では、一般的なストレージの記憶装置として、ディスク１８１を用いている。例えば、ディスク１８１として、ＦＣ（Fibre  Channel）、ＳＡＳ（SAN  Attached  Storage）、ＡＴＡ（AT  Attachment）やＳＳＤ（Solid  State  Drive）用のＨＤＤ（Hard  Disk  Drive）を使用できる。さらに、ディスク１８１以外に、テープやフラッシュメモリ等のディスク以外の記憶媒体を使用することもできる。さらに、単体のディスク１８１や複数のディスク１８１によって、ＲＡＩＤ（Redundant  Array  of  Inexpensive  Disks）を構成し、ＲＡＩＤ構成のディスク１８１をホスト計算機１０３、１０４のアクセス対象とすることもできる。
【００１６】
コントローラ１１１は、ホスト入出力制御部１１９、データ転送制御部１１２、ディスク入出力制御部１１８、キャッシュメモリ１１７、管理Ｉ／Ｆ１１５、ＣＰＵ（Central  Processing  Unit）１１４、ブリッジ１１３、メモリ１１６を備える。
【００１７】
管理Ｉ／Ｆ１１５は、内部バス１３６によってブリッジに接続される。また、管理用接続経路１８３を介して管理ホスト１０５に接続されており、管理ホスト１０５とのデータの授受や通信の制御を行う。
【００１８】
メモリ１１６は、内部バス１３４によってブリッジ１１３に接続されている。ＣＰＵ１１４は、内部バス１３５によってブリッジ１１３に接続されており、また、内部にコア１２２が複数格納されている。
【００１９】
また、図１ではＣＰＵ１１４を単一の部品として記載しているが、ＣＰＵ１１４を複数備えたシステムであってもよい。これらの複数のコアもしくはプロセッサの使用方法には、ＳＭＰ（Symmetric  Multi  Processing）と呼ばれる対称型の処理方式と、ＡＭＰ（Asymmetric   Multi  Processing）と呼ばれる非対称型の処理方式がある。
【００２０】
ＳＭＰ方式では、一般的にＯＳ（Operating  System）が、どのコアもしくはプロセッサが、どの処理を実行するかを決定する。この場合、実際にどのコアもしくはどのプロセッサが処理を実行するかによって、負荷分散の効果が大きく変わる。よって、ＯＳを含む制御プログラムとしては、処理を実行するコアやプロセッサの選定が可能である必要がある。
【００２１】
ＡＭＰ方式の場合は、制御プログラムが、処理を実行するコアやプロセッサを明示的に指示することができる。また、ＳＭＰ方式の場合は、処理を実行するコアやプロセッサの選定が可能な機能を持つＯＳがあるため、この機能を利用することとなる。なお、AMP方式の場合は、コア・プロセッサごとに特定の処理を担当し、単一コア・プロセッサでは全ての処理を実行できないという実装形態がある。
【００２２】
例えば、ホスト入出力制御部１１９は、０番目のコアのみが制御可能という設定としていた場合、このコアを使用せずにストレージ１０１への入出力を処理することは出来ない。
【００２３】
以下では、特に注意のない限り、コアと記載した場合は、ストレージ１０１への入出力を全て処理可能な処理系を意味することとする。すなわち、コア１２２は、メモリ１１６に格納されたプログラムに従って、各種の演算処理を実行し、処理結果を基にコントローラ１１１全体の制御を実行する。
【００２４】
データ転送制御部１１２は、内部バス１３７によってブリッジ１１３に接続される。データ転送制御部１１２は、コントローラ１１１内のデータの転送を制御する。また、データ転送制御部１１２とデータ転送制御部１５２は、コントローラ間バス１８２によって互いに接続されている。このため、コントローラ１１１，１５１は、コントローラ間バス１８２を通じて、互いに通信することができる。
【００２５】
キャッシュメモリ１１７は、内部バス１３３によってデータ転送制御部１１２に接続され、データ転送に伴い移動するデータを一時的に保持する。
【００２６】
ホスト入出力制御部１１９は、接続経路１８４を通じて、ホスト計算機１０３に接続され、ホスト計算機１０３からの入出力の制御を行う。
【００２７】
ディスク入出力制御部１１８は、ディスク接続経路１２１によってディスク１８１に接続され、ディスクに対するデータの入出力を制御する。
【００２８】
また、コントローラ１５１は、コントローラ１１１と同様に、ホスト入出力制御部１５９、データ転送制御部１５２、ディスク入出力制御部１５８、キャッシュメモリ１５７、管理Ｉ／Ｆ１５５、ＣＰＵ１５４、ブリッジ１５３、メモリ１５６を備え、ＣＰＵ１５４は、複数のコア１６２から構成されている。
【００２９】
本実施例で示した各構成部品は必ずしも必須のものでは無い。例えば、ＣＰＵ１１４とブリッジ１１３が一体となったチップを用いたり、さらにデータ転送制御部１１２が一体となったチップを用いたりする構成がある。また、キャッシュメモリ１１７とメモリ１１６を同一メモリにて実現する構成や前記複数プロセッサ構成などがある。
【００３０】
このように構成部品が変化した場合には、後述のリソース使用状況管理情報５０１の内容は、構成に応じて変化する。例えば、メモリ１１６にキャッシュメモリ１１７が含まれるような構成となった場合には、キャッシュメモリ１１７とデータ転送制御部１１２を接続するバス１３３は存在せず、代わりに内部バス１３４に、キャッシュメモリ１１７・データ転送制御部１１２間に相当するデータが流れることとなる。
【００３１】
また、マルチプロセッサ環境においては、プロセッサ間で物理的に異なるメモリを使用する構成がある。この場合、メモリ及びメモリバスのリソース使用状況を個別に測定、評価する必要がある。もちろん、マルチコア構成においても同様の構成を実現することは可能であるため、この場合には、前記の個別評価が必要となる。
【００３２】
メモリ１１６には、図２に示すように、コントローラ内コア間共有領域２０１、コントローラ間共有領域２０２、コア専用領域２０３が格納されている。以下、これらの各領域に格納されている情報について記載するが、全ての情報は必ずしも図２に記載した領域に格納する必要はない。
【００３３】
例えば、制御情報２３１をコントローラ内コア間共有領域２０１に格納すれば使用メモリ量が削減する。一方、制御情報２３１をコア専用領域２０３に格納する場合は、制御情報２３１の重複や無駄領域の増大により、メモリ量が増大するもののコア間の情報へのアクセス時に、排他処理を行う必要がなくなるなどの性能向上の効果がある。
【００３４】
コア専用領域２０３には、制御情報２３１が格納されている。制御情報２３１は、ＣＰＵ１１４のコア１２２が、ストレージ１１１に発行されたＩＯを処理する際に必要となる情報である。制御情報２３１は、コア１２２が管理するメモリ情報や、ホスト入出力制御部１１９，ディスク入出力制御部１１８が参照する情報テーブルなどから構成され、基本的にはコア１２２、１６２が担当する領域について必要となる情報のみが格納される。
【００３５】
ここで、コア１２２、１６２が担当する領域について、以下では、コア１２２、１６２の処理対象である、担当単位を論理ユニットＬＵ（Logical  Unit）とする。論理ユニットＬＵは、ディスク１８１の物理的な記憶領域上に構築される仮想的な論理領域である。もちろん、ＬＵとは異なる範囲を担当範囲とする事も可能である。
【００３６】
コントローラ間共有領域２０２には、構成情報２２１と、性能情報２２２が格納される。
【００３７】
コントローラ内コア間共有領域２０１は、オペレーティングシステム２１１、ディスクアレイ制御プログラム２１２、データ転送制御部制御プログラム２１３、入出力制御部制御プログラム２１４、性能情報測定プログラム２１５、性能情報解析プログラム２１６、ＬＵ制御権変更プログラム２１７が格納されている。各プログラムは、各コア１２２、１６２が実行する。以下では、それを前提に記載する。
【００３８】
ＬＵ制御権変更プログラム２１７は、各コアが担当するＬＵに対して、別のコアにそのＬＵ制御権を変更する動作を行うプログラムである。性能情報測定プログラム２１５は、ストレージ１０１内の各種リソースの使用状況を監視し、各リソースがどの程度使用されているかを測定し、性能情報２２２に格納するプログラムである。性能情報解析プログラム２１６は、性能情報測定プログラム２１５によって測定された性能情報２２２を解析し、ＬＵ制御権変更処理の実施を制御するプログラムである。
【００３９】
データ転送制御部制御プログラム２１３は、データ転送制御部１１２の制御に用いるプログラムであり、入出力制御部制御プログラム２１４は、ホスト入出力制御部１１９，ディスク入出力制御部１１８の制御に用いるプログラムである。オペレーティングシステム２１１は、ＣＰＵ１１４のコアの動作に用いるプログラムであり、ディスクアレイ制御プログラム２１２は、ディスク１８１への入出力位置演算などのディスクアレイ全体の制御に用いるプログラムである。
【００４０】
メモリ１５６もメモリ１１６と同様の構成になっている。また、ＬＵ制御権変更プログラム２１７は、ホスト計算機１０３、１０４から受領した入出力要求の処理担当コアを変更するプログラムであり、入出力要求を受領する物理的なポートを制限するものでは無い。すなわち、ＬＵ制御権変更処理前に、ホスト計算機１０３、１０４から受領していた入出力要求が、ＬＵ制御権変更処理によって処理不可能になるというような事は無く、入出力要求を停止する事無く変更処理を実行可能である。
【００４１】
キャッシュメモリ１１７は、図３に示すように、自系コントローラ領域３０１と他系コントローラ領域３４１が格納されている。自系コントローラ領域３０１とは、キャッシュメモリが存在するコントローラ内のコアが使用する領域を指す。例えばコントローラ番号０のコントローラ１１１内にあるキャッシュメモリ１１７内では、コントローラ１１１内のコア１２２が使用する領域である。
【００４２】
他系コントローラ領域３４１とは、当該キャッシュメモリが存在するコントローラ以外のコントローラ内のコアが使用する領域を指す。例えば、キャッシュメモリ１１７内では、コントローラ１５１内のコア１５７が使用する領域である。これらは、コントローラ１５１内のキャッシュメモリ１５７では、逆の関係となる。
【００４３】
自系コントローラ領域３０１には、自系コントローラ管理情報３１１と、自系コントローラデータ３１２が格納される。自系コントローラ管理情報３１１は、コントローラ１１１内コアが使用する管理情報であり、例えば、自系コントローラデータ３１２の格納状況などが該当する。他系コントローラ領域３４１には、他系コントローラ管理情報３５１と、他系コントローラデータ３５２が格納される。
【００４４】
このように、他系コントローラが使用するデータについてもキャッシュメモリ１１７上に格納することによって、耐障害性を向上している。
【００４５】
これらの情報のうち、コントローラ管理情報３１１，３５１については、コア１２２，１６２が二重書きを実施し、コントローラデータ３１２，３５２については、データ転送制御部１１２，１５２が主に二重書きを実施する。これにより、キャッシュメモリ１１７，１５７には、コントローラ管理情報３１１，３５１とコントローラデータ３１２，３５２の両方が格納されることになる。
【００４６】
もちろん、負荷軽減のため、自系にのみ持てば十分な情報もあるため、これらの情報は完全に二重化しているとは限らない。例えば、キャッシュメモリ１１７を演算のテンポラリ領域に使用するような場合には、自系コントローラ領域３０１にのみデータを一時格納すれば十分であり、自系コントローラ領域３０１とキャッシュメモリ１５７上の他系コントローラ領域は必ずしも完全には一致しなくともよい。
【００４７】
構成情報２２１は、図４に示すように、ＬＵ制御権管理情報４０１と、バランシングパラメータ情報４０２と、データ格納情報４０３から構成されている。
【００４８】
ＬＵ制御権管理情報４０１には、ＬＵ制御権管理テーブルＴ４０１が格納されており、各領域に対するＩＯをどのコアが担当するかという対応関係が管理されている。本実施例では管理領域単位をＬＵとしているため、図４では、ＬＵごとに現在どのコアが処理の担当となっているかが管理されている。
【００４９】
バランシングパラメータ情報４０２には、バランシングパラメータテーブルＴ４０２が格納されている。バランシングパラメータテーブルＴ４０２は、負荷バランスを実行する際のパラメータとして、デフォルトもしくはユーザが設定したパラメータを備えており、負荷バランス制御を実行する際の処理内容を決定する指針を示している。負荷バランスの優先度として設定された数値や、ストレージシステム性能の優先度として設定された数値から、負荷バランスをどの程度実行するかが決定される。
【００５０】
例えば、負荷バランスの優先度が高くストレージシステム性能優先度が低ければ、多少システム性能の低下を招いたとしても、各リソースの負荷を分散し均衡するような制御を実施する。逆に負荷バランスの優先度が低くストレージシステム性能優先度が高ければ、多少負荷が不均衡になっていても、全体的な性能が高くなるような制御を実施する。
【００５１】
移行オーバヘッド許容レベルとは、前述のＬＵ制御権変更プログラム２１７が動作し、ＬＵ制御権変更処理を実行した際に発生するオーバヘッドをどの程度許容するかを示すパラメータである。この数値が低い、すなわち許容レベルが低い場合には、オーバヘッドが小さい移行のみが許可される。これは、例えば、移行前にＩＯがある程度の期間停止しており、キャッシュメモリ１１７，１５７上にデータが存在しないもしくは少ない等の、移行に伴い引き継ぐ情報量が小さい移行が許可されることを示す。
【００５２】
性能情報参照範囲とは、ＬＵ制御権変更を実施する際に参照する性能情報の範囲である。ここに短い時間を設定すると、短時間の負荷変動にも追随可能になるが、一時的かつ突発的な負荷変動によって、本来は不要もしくは性能上有害なＬＵ制御権変更を実行してしまう可能性が高くなる。逆に長い時間を設定すると、前記ＬＵ制御権変更実施による失敗の確率は低くなるが、ＬＵ制御権変更を実施すべき状況において、移行が行われないもしくは移行のタイミングが遅くなる確率が高くなる。
【００５３】
割り当て優先度は、ＬＵ制御権を明示的にユーザが指示しかつそのＬＵ制御権を移行させたくないような場合に設定される。すなわち、性能保証のため等の目的から、あるＬＵに関しては、特定のコアにＬＵ制御権を設定し、ここからの移行を許可しない、また当該コアに別のＬＵ制御権を移すことを許可しないというケースに使用する。
【００５４】
データ格納情報４０３は、データ格納情報テーブルＴ４０３から構成されている。データ格納情報テーブルＴ４０３は、ストレージ１０１が管理しているＬＵへ発行されたデータをどこに格納すればよいかを示した情報であり、データ格納処理に必要な情報を格納している。
【００５５】
性能情報２２２には、図５に示すように、リソース使用状況管理情報５０１と、ＬＵ制御権変更後リソース使用状況変化予測情報５０２と、ＬＵ制御権変更処理オーバヘッド予測情報５０３が格納されている。
【００５６】
リソース使用状況管理情報５０１は、図６に示すように、リソース使用状況管理情報テーブルＴ６０１が格納されている。リソース使用状況管理情報テーブルＴ６０１には、性能情報測定プログラム２１５が測定した、各リソースの使用状況が、ＬＵ制御権管理単位であるＬＵごとに、過去の履歴と共に格納されている。リソース使用状況管理情報テーブルＴ６０１によって、現在のストレージ１０１において、負荷の不均衡の発生有無を判断できる。また、過去の履歴から、前記負荷の不均衡が継続しているのか否か、どの程度の変動が発生しているのかといった情報も取得できる。
【００５７】
なお、リソース使用状況管理情報テーブルＴ６０１に示すように、あるＬＵに関して、担当するコア及びそのコントローラにのみ負荷がかかっているとは限らない。これは、例えば、データ二重書きによって、他系コントローラのキャッシュメモリにデータを格納する場合などには、コントローラ間バス１８２や、キャッシュメモリ１１７，１５７とデータ転送制御部１１，１５２を接続するバス１３３，１７３を使用し、これらのリソースを使用することとなるためである。
【００５８】
また、リソース使用状況管理情報５０１はストレージ１０１の性能に関わる、性能情報測定プログラム２１５が測定したリソースの使用状況全てを表すものであり、前述の項目以外にも多くの情報を含む。
【００５９】
特に、図１３に示すリソース使用状況管理情報１３０１及びリソース使用状況管理情報テーブルＴ１３０１に記載した、キャッシュメモリ１１７及び１５７の使用量は、ＬＵ制御権変更処理における性能に大きな影響を与える。キャッシュメモリ１１７上に存在するデータのうち、ダーティデータはディスク１８１に未反映のデータを示しており、ダーティデータ量が多い場合は、当該ＬＵへ対する未完了の処理が多く残っていることを示している。このため、ダーティデータ量を記録する事により、ダーティデータ量が多いＬＵは、その時点でのＩＯ負荷に加えて、移行後のプロセッサに対して一時的に大きな負荷を与える事を考慮する事が可能となる。
【００６０】
また、ダーティデータ以外にも、非二重書きデータ量もＬＵ制御権変更処理における性能に影響を与える。一般的に、ダーティデータについては停電等の障害に備えて、キャッシュメモリ１１７及び１５７に二重書きするケースが多い。
【００６１】
一方、非ダーティデータや重要性の低いダーティデータに関しては、コントローラ間バス１８２の使用率及びキャッシュの使用量削減の目的から、二重書きを行わない場合がある。二重書きデータについては、既にキャッシュメモリ１１７及び１５７に同一のデータが存在しているため、特にデータの移動等は発生しない。
【００６２】
しかし、非二重書きのデータについては、コントローラを跨るＬＵ制御権変更の際に、当該データを活用する場合にはデータのコピーもしくは移動が発生し、当該データを破棄する場合には、移行元コントローラ上でのデータ破棄処理が必要となる。これらの処理は、コントローラ内のコア間でキャッシュメモリ１１７を共有しており、かつ、コントローラを跨がないＬＵ制御権変更の場合には不要となるものであるので、ＬＵ制御権の変更がコントローラを跨ぐか跨がないかによって、大きな負荷の差が発生する。このため、キャッシュメモリ上のデータの種類及びその量は、どのようなＬＵ制御権変更を行うかを決定するための重要な要素となる。
【００６３】
ＬＵ制御権変更後リソース使用状況変化予測情報５０２は、図７に示すように、ＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１が格納されている。ＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１は、性能情報解析プログラム２１６によって作成され、あるＬＵの制御権をあるコアに移行した場合、移行後に各リソースに対してどのような負荷の変動があるかを予測した情報を格納している。
【００６４】
例えば、図７に記載したケースにおいては、ＬＵ０を各コアに移行した場合に、各コアの負荷がどの程度変動するかを示している。現在コントローラ０，コア０（図7における割り当て用コア“０−０”）にあるＬＵ制御権を、コントローラ１，コア０（図7における割り当て用コア“１−０”）に移行した場合、元々ＬＵ制御権を持っていたコントローラ０，コア０の負荷は−７となるが、ＬＵ制御権を引き継いだコントローラ１，コア０の負荷は＋１０となる事を示している。
【００６５】
この例のように、ＬＵ制御権の移行によって、かえってシステム全体の負荷が高くなってしまうようなケースがある。これは、例えばコントローラ１１１のホスト入出力制御部１１９からホストＩＯを受領した場合には、コントローラ１１１側のコアが一旦コマンドを受領し、担当するコアへと情報を受け渡す必要があり、このとき両コアのプロセッサリソースを若干消費するためである。
【００６６】
また、コントローラ０，コア１（図7における割り当て用コア“０−１”）に移行した場合においては、合計変化量が負となっており、すなわちシステム全体の負荷が下がるという事を意味する。この理由も、前記と同じく、コア間での情報通信による負荷を考慮したものである。ホスト入出力制御部１１９全体、もしくは現在主にコマンドを受領しているポートが、コントローラ０，コア１が担当、制御するホスト入出力制御部もしくはポートであった場合に、このような現象が生じる。
【００６７】
ここで、前記の通りコントローラ０，コア１が担当するホスト入出力制御部もしくはポートにて受領したコマンドであれば、移行前の状態であるＬＵ制御権がコントローラ０，コア０にある状態と、移行後候補であるコントローラ１，コア０にある状態のいずれもコア間の情報通信は発生する。しかし、前記の通りコントローラ０，コア０にＬＵ制御権がある状態の方がシステム負荷は低いとしているのは、この情報通信に要するリソースが異なるためである。これは、コントローラ０内のコア０，１での情報のやり取りは、これらのコアが共有しているメモリ１１６内で完結する処理となる。
【００６８】
一方、コントローラ０，コア１からコントローラ１，コア０に情報を送ろうとした場合には、データ転送制御部１１２，コントローラ間バス１８２，データ転送制御部１５２を経由する必要があり、コアにとっても、経由するバスにとってもリソースを消費する処理となる。
【００６９】
コア１２２から他系コントローラ内のメモリ１５６へのライトのように、長い時間がかかる可能性のあるライトの際には、ポストライトによってコアのリソース消費を抑える方法を取ることが一般的である。しかし、ポストライト用バッファが既に使用中であった場合などを考慮すると、自系コントローラ内メモリ１１６に比べると大きなリソースを消費する処理となる。
【００７０】
以上のように、コントローラ内コア間でのデータのやり取りと、コントローラを跨いだコア間のデータのやり取りでは、前者の方がリソース消費を抑えることが可能である。
【００７１】
ＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１は、前記のような状態変化によって発生する負荷の変動を考慮した情報となっているため、ＬＵ制御権の移行によって発生するシステム性能の変化も把握する事が可能となる。
【００７２】
ＬＵ制御権変更処理オーバヘッド予測情報５０３は、図８に示すように、ＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１が格納されている。ＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１は、あるＬＵがあるコントローラ，コアに移行する際に発生する、移行処理自体のオーバヘッドを予測したものである。ＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１は、その他の性能情報と異なり、移行処理を実行する際に発生する負荷の情報であるため、その単位は例えば処理に要する時間などになる。
【００７３】
ＬＵ制御権変更処理は、データの引き継ぎ量によってその負荷すなわち処理時間が変化する。例えば、コントローラ０，コア０（図８における割り当て用コア“０−０”）からコントローラ１，コア０（図８における割り当て用コア“１−０”）にＬＵ制御権を移行する場合において、キャッシュメモリ１１７内にデータが全く格納されていない場合には、データ引き継ぎ処理は不要である。
【００７４】
一方、キャッシュメモリ１１７にデータが存在する場合には、引き継ぎ処理が必要となる。このとき、管理情報及びデータは自系コントローラ領域３０１内に存在する。これらの情報及びデータのうち、自系キャッシュメモリにのみ所有している管理情報及びデータ、例えばディスク１８１にオリジナルデータが存在し、キャッシュメモリ上での二重化が不要な管理情報及びデータについては、この管理情報及びデータを破棄する処理が必要となる。
【００７５】
自系キャッシュメモリ及び他系キャッシュメモリに管理情報及びデータが存在する場合には、自系コントローラ領域３０１に存在する情報を他系コントローラ領域３４１へ、物理的もしくは論理的に移動する必要がある。コントローラ１５１側でも同様に、キャッシュメモリ１５７内の他系コントローラ領域に存在する管理情報及びデータを、自系コントローラ領域に、物理的もしくは論理的に移動する必要がある。
【００７６】
次に、図９のフローチャートにて、負荷分散処理の実行手順を説明する。以下の処理は、プログラムを基にコア１２２または１６２によって実行される。まず、性能情報解析プログラム２１６によって、バランシングパラメータ情報テーブルＴ４０２の情報を用いた評価関数を決定する（Ｓ９０１）。これによって、負荷バランスやシステム性能等について、どの項目を優先的に考慮するかが決定される。
【００７７】
次に、性能情報測定プログラム２１５によって、性能情報２２２を取得し、性能情報解析プログラム２１６によって、この情報を解析する（Ｓ９０２）。性能情報取得結果は、リソース使用状況管理情報テーブルＴ６０１、性能情報解析結果はＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１及びＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１に書き込まれる。
【００７８】
次に、簡易バランシング処理が可能かどうかの判定を行う（Ｓ９０３）。簡易バランシング処理は、後述の比較的単純なＬＵ制御権変更処理内容決定及び移行処理である。この処理では、まず移行元及び移行先コアを先に決定するという処理を実施している。このため、適用可能条件としては、負荷バランスを優先的に考慮し、システム性能はあまり優先しないという設定が、バランシングパラメータ情報テーブルＴ４０２に設定されていた場合となる。
【００７９】
Ｓ９０３にて可能と判断した場合には、簡易バランシング処理を実行する（Ｓ９０４）。Ｓ９０３にて不可能と判断した場合には、通常バランシング処理を実行する（Ｓ９０５）。
【００８０】
次に、性能情報取得、解析処理（Ｓ９０２）について、図１４を用いて説明する。以下の処理は、プログラムを基にコア１２２または１６２によって実行される。まず、性能情報測定プログラム２１５によって各リソースの使用状況を測定する（Ｓ１４０１）。ここで取得した性能情報は、ＬＵ制御権変更処理の判断に使用するため、単純なリソースの使用率のみではなく、さらに詳細な情報が必要となる。例えば、あるコアのＣＰＵ使用率については、単純な当該コア全体の使用率ではなく、管理単位毎の使用率を測定する。本実施例では、管理単位をＬＵとしているため、各コアについて、ＬＵ毎の使用率を測定することとなる。その他のリソースについても同様である。
【００８１】
また、ＬＵ制御権変更後の状況を判断するための情報も必要となる。これは、例えば、コントローラ間バス１８２の使用率の中でも、前述の通り、どのＬＵがどの程度使用しているのかという情報に加え、バスのホストからのライトデータ二重書きによって発生したものか、もしくはディスク１８１からのリードデータを他方のコントローラに転送するために使用したのか、またそれらがどのような比率となっているか、という情報である。
【００８２】
これは、ライトデータ二重書きであれば、コントローラを跨いだＬＵ制御権変更を実施しても、その前後で負荷の変動は発生しないが、リードデータ転送等のような場合では、ディスク１８１からのリードの際に使用するディスク入出力制御部１１８もしくは１５８と、ホスト入出力制御部１１９もしくは１５９が同一コントローラ上にあるか否かによって、コントローラ間バス１８２の使用要否が変化するためである。バス１３２等の内部バスについても、同様の理由から、データ転送の種類毎の使用状況を測定する。
【００８３】
次に、測定したリソース使用状況をリソース使用状況管理情報テーブルＴ６０１に出力する（Ｓ１４０２）。リソース使用状況管理情報テーブルＴ６０１には代表的な情報のみを記載しているが、前述のデータ転送の種類による使用率等の情報も、リソース使用状況管理情報テーブルＴ６０１に出力する。
【００８４】
次に、ＬＵ制御権変更パターンの抽出を行う（Ｓ１４１１）。ここでは、ＬＵ制御権変更が可能な全パターンの抽出を、管理単位毎に実施する。例えば、ＬＵ制御権管理テーブルＴ４０１にあるように、ＬＵ０の制御権がコントローラ番号０、コア番号０のＣＰＵコアに割り当てられており、コントローラ毎に２つのＣＰＵコアを持つようなシステムの場合では、ＬＵ０の制御権変更候補は（０−１）、（１−０）、（１−１）となる。
【００８５】
ただし、括弧内はコントローラ番号―コア番号を表す。なお、後述のＬＵ制御権変更設定によっては、前述の候補がさらに絞られる事もある。さらに、管理者の設定以外にも、例えばハードウェアもしくはソフトウェア上の障害が発生するなどしてＬＵ制御権変更が不可能なケースがあり、この場合も前述のＬＵ制御権変更候補は絞られる事になる。
【００８６】
次に、全ＬＵ制御権変更パターンの解析が完了したかどうかを判定する（Ｓ１４１２）。ここでは、Ｓ１４１１において抽出した全ＬＵ制御権変更パターンに関して、後述の解析処理（Ｓ１４２２及びＳ１４２３）が完了したかどうかの判定を実施し、実施済みの場合は、出力処理（Ｓ１４３１）を実施し、未実施の場合は、ＬＵ制御権変更パターン選択（Ｓ１４２１）を実行する。
【００８７】
ＬＵ制御権変更パターン選択処理Ｓ１４２１では、Ｓ１４１１にて抽出したＬＵ制御権変更パターンのうち、Ｓ１４２２及びＳ１４２３を未実施のＬＵ制御権変更パターンを検索し、これを次処理の対象として選択する。
【００８８】
次に、Ｓ１４２１にて選択したＬＵ制御権変更パターンについて、ＬＵ制御権変更を実施後にリソース使用状況がどのように変化するかを推測する（Ｓ１４２２）。以下では、例としてコントローラ０コア０に割り当てられているＬＵ０がコントローラ０コア１及びコントローラ１コア０のそれぞれに移行する場合の変化について、どのように推測するかを、ＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１を用いて記載する。
【００８９】
まず、ＬＵ０が現在使用中のリソースに関する情報は、Ｓ１４１１によって、リソース使用状況管理情報テーブルＴ６０１に出力されている。リソース使用状況管理情報テーブルＴ６０１の各リソースの使用率に関する単位は任意であるが、例として、％であるものとする。
【００９０】
このとき、リソース使用状況管理情報テーブルＴ６０１にあるように、ＬＵ０はコントローラ０コア０のＣＰＵコアのリソースを１０％、コントローラ０コア１を２％使用している。ＬＵ制御権を持っていないコントローラ０コア１が２％のリソースを使用している理由は、ディスク入出力制御部１１８の制御をコントローラ０コア１が実施している形態を想定しているためである。
【００９１】
もちろん、コントローラ０コア０及びコア１がそれぞれディスク入出力制御部１１８の全リソースを自由に使用可能とする形態では、上記の様な想定はコア間の通信及び連携処理を増大させることとなる。
【００９２】
しかし、例えばディスク入出力制御部１１８の機能において単一コアのみが使用可能な形態である場合や、ディスク入出力制御部１１８が２つ以上の独立したリソースを持ち、それらのリソースを各コアが占有して使用する事によって、排他制御等のオーバヘッドを低減するという目的においては、上記のように各コアがディスク入出力制御部１１８のリソースの一部を占有するという形態もあり得る。
【００９３】
また、コントローラ間バスは０％、すなわち使用していない。これは、ＬＵ０に関して、二重書きを要するデータのやり取りを実施していないことを意味する。
【００９４】
このＬＵ０の制御権をコントローラ０コア１へ移行した場合の移行後の変化として、リソース使用状況変化予測情報テーブルＴ７０１では、コントローラ０コア０が−８％、コントローラ０コア１が＋６％としている。すなわち、移行後のコントローラ０コア０の使用率は２％となる。
【００９５】
これは、本実施例では、ホスト計算機１０３から発行された入出力要求を受領した場合に、一旦コントローラ０コア０が受領した要求の解析処理を実施し、この解析処理にプロセッサリソースを使用することを想定しているためである。もちろん、ホスト入出力制御部１１９の中でも受領した物理的なポートによってコアを割り当てる形態や、受領時点で適切な、すなわち、ＬＵ制御権を持っているコアもしくはその時のリソース使用率が低いコアへ、受領要求解析処理を割り当てることを、ホスト入出力制御部１１９の機能によって実施する形態もありうる。特に後者の形態においては、コントローラ０コア０のＣＰＵ使用率は０となるようなケースもある。
【００９６】
本実施例では、前述のディスク入出力制御部１１８に対するコアの割り当て処理と同様に、ホスト入出力制御部１１９のリソースの一部をコアに占有させる形態を想定している。コントローラ０コア１については、これまでＬＵ制御権を持っていたコントローラ０コア０が実施していた処理を新たに担当することになるため、ＣＰＵ使用率が増加し、これを６％としている。このときＣＰＵ使用率の合計に着目すると、移行前は１２％、移行後は１０％と、移行前後で一致していない。
【００９７】
これは、前述のディスク入出力制御部１１８をコントローラ０コア１が使用するという想定においては、ＬＵ制御権をコントローラ０コア０が持っている場合に発生する、ディスク１８１に対する入出力要求発行時に発生するコントローラ０コア０―コントローラ０コア１間の通信処理が不要となるため、両コアの使用率合計が低下することを示している。一方、コントローラバスの使用率については、ＬＵ制御権変更がコントローラを跨っていないため、データ転送を実施する必要が無く、０％のままとなる。
【００９８】
ＬＵ０をコントローラ１コア０へ移行した場合の移行後の変化としては、コントローラ０コア０が−７％、コントローラ１コア０が＋１０％としている。前述のコントローラ０コア１への移行と同様の理由によって、コントローラ０コア０のリソース使用率は０％とはならない。また、この移行処理は、コントローラを跨る処理であり、コントローラ間バスも＋５％のリソース使用率増加があると推測している。
【００９９】
これは、本実施例においては、ＬＵ制御権を持つコアは、自コントローラ内のディスク入出力制御部及び自コントローラ内のキャッシュメモリを使用するという形態を想定しているためである。このため、実際にホスト計算機１０３からの入出力要求を受領したコントローラ１１１のホスト入出力制御部１１９を使用してデータをやり取りするためには、コントローラ間バス１８２を使用する必要があり、このリソースの使用率が増加するとしている。
【０１００】
ここで、前述の形態ではなく、他コントローラのリソースのみを使用することでコントローラ間バス１８２を使用しないという形態も取ることは可能である。すなわち、コントローラ１コア０が、コントローラ１１１内のディスク入出力制御部１１８を制御し、キャッシュメモリ１１７を使用してデータのやり取りを実施するという形態である。この場合は、コントローラ間バス１８２の使用状況に変化はないと予測される。
【０１０１】
以上のようにして、ＬＵ制御権変更後のプロセッサ使用率及びコントローラ間バス１８２の使用率変化を推測した。その他のリソースについても同様にＬＵ制御権変更後の変化を推測する。
【０１０２】
次に、Ｓ１４２１にて選択したＬＵ制御権変更パターンについて、ＬＵ制御権変更を実施した場合に移行処理自体によって発生するオーバヘッドを推測する（Ｓ１４２３）。
【０１０３】
ＬＵ制御権の変更処理は、管理情報の移行とデータの移行の二種類がある。管理情報の移行は、ある管理単位（Ｓ１４２２で使用した例におけるＬＵ０）に関する処理を行うための情報を、あるＣＰＵコア（同例ではコントローラ０コア０）から、ＬＵ制御権変更候補（同例ではコントローラ０コア１もしくはコントローラ１コア０）の管理下へ移動させる処理となる。このとき、メモリ１１６からメモリ１１６もしくはメモリ１５６へのデータコピーが発生するかどうかは実装形態に依存する。
【０１０４】
また、管理情報がキャッシュメモリ上にある場合も同様である。データの移行におけるデータとは、キャッシュメモリ上に存在する、ホスト計算機１０３もしくは１０４とでやり取りされるデータを指す。このデータは、ディスク１８１からリードした、もしくはライトする必要のあるデータである。リードしたデータについては、必要となった場合に再度ディスク１８１からリードすることで復旧可能である事から、このデータを破棄する、すなわち前述の管理情報の移行の際に当該データの管理情報を破棄することも可能である。このデータの移行についても、管理情報と同様に、キャッシュメモリ１１７からキャッシュメモリ１１７へのデータコピーが発生するかどうかは実装形態に依存する。
【０１０５】
ＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１では、データ移行の際にコントローラ間バス１８２を使用するという前提で、コントローラ間バスの使用率が上昇すると推測している。
【０１０６】
なお、ＬＵ制御権変更処理オーバヘッド予測情報５０３は、リソース使用状況管理情報５０１やＬＵ制御権変更後リソース使用状況変化予測情報５０２と異なり、ある処理（ＬＵ制御権変更処理）を実行する際に発生するオーバヘッドを表しているため、数値の単位は異なる。例えば、ＬＵ制御権変更処理を１秒間で実施するとした場合に発生する各リソースの使用率等で表される。このような形式で表現することで、使用率が１００％を超えていると１秒間での移行が不可能であるという判断が可能となる。
【０１０７】
Ｓ１４２３が完了すると、全ＬＵ制御権変更パターンの解析完了判定処理（Ｓ１４１２）へ戻る。
【０１０８】
Ｓ１４１２にて、Ｓ１４１１で抽出した全制御解析パターンの解析処理（Ｓ１４２１、Ｓ１４２２、Ｓ１４２３）が完了したと判断した場合には、ＬＵ制御権変更後リソース使用状況変化予測情報５０２及びＬＵ制御権変更処理オーバヘッド予測情報５０３の出力を行う（Ｓ１４３１）。
【０１０９】
次に、図１０のフローチャートを用いて、Ｓ９０４簡易バランシング処理を説明する。以下の処理は、プログラムを基にコア１２２または１６２によって実行される。まず、ストレージ１０１内の全てのコアを移行元コア候補として登録する（Ｓ１００１）。次に、ストレージ１０１内の全てのコアを移行先コア候補として登録する（Ｓ１００２）。次に、移行元コア候補のうち、最も負荷の高いコアを、移行元コアとして選択する（Ｓ１００３）。次に、移行先コア候補のうち、最も負荷の低いコアを、移行先コアとして選択する（Ｓ１００４）。
【０１１０】
選択した移行元コアから移行先コアへ１つもしくは複数のＬＵを移行する事を考えた場合、負荷バランス上適切なＬＵが存在するかどうかを判定する（Ｓ１００５）。適切なＬＵが存在しないケースとしては、例えば、高負荷なコアが担当するＬＵが１つだけというケースがある。
【０１１１】
この場合、当該ＬＵの負荷が極めて高く、どのコアに移行しても負荷アンバランスが発生することが予想されるため、移行に適しているとはいえない。他には、バランシングパラメータ情報テーブルＴ４０２にて、移行を禁止もしくは禁止に準ずる設定のＬＵしか存在しない場合などが該当する。
【０１１２】
Ｓ１００５にて、移行に適したＬＵが１つもしくは複数存在した場合は、当該ＬＵのＬＵ制御権を現在選択中の移行元コアから移行先コアへと移行し（Ｓ１００６）、簡易バランシング処理は完了する。
【０１１３】
Ｓ１００５にて、移行に適したＬＵが存在しないと判定した場合は、他に移行先候補コアが存在するかを判定する（Ｓ１０１１）。移行先コア候補が他に存在した場合は、まず現在移行先コアとして選択中のコアを、移行先候補から外し（Ｓ１０１２）、Ｓ１００４から処理を継続する。Ｓ１０１１にて、他に移行先候補コアが存在しない場合には、続いて移行元候補のコアが存在するかどうかを判定する（Ｓ１０１３）。
【０１１４】
Ｓ１０１３にて移行元候補のコアが存在すると判定した場合は、現在移行元コアとして選択中のコアを、移行元候補から外し（Ｓ１０１４）、Ｓ１００２の処理に戻る。Ｓ１０１３にて、移行元コア候補が選択中コア以外に存在しないと判定した場合は、全ての移行元、移行先コアの組み合わせについて、移行に適したＬＵが存在しなかったこととなるため、簡易バランシング処理を終了する。
【０１１５】
なお、さらに簡易な判定方法としては、Ｓ１００１〜Ｓ１００４の処理の代わりに、移行元コアとして最大負荷のコアを、移行先コアとして最小負荷のコアを選択し、かつ、他の候補は存在しないという状態から処理を開始させる方法がある。この場合、必ず最大負荷のコアから最小負荷のコアへのＬＵ制御権変更のみが候補となるため、容易かつ低負荷にロードバランス実行要否の判定が可能となる。
【０１１６】
次に、通常バランシング処理を図１１のフローチャートを用いて説明する。以下の処理は、プログラムを基にコア１２２または１６２によって実行される。まず、未選択のパターンの中から、移行元コア、移行先コア、移行対象ＬＵをそれぞれ選択する（Ｓ１１０１）。次に、選択した条件について、評価関数を用いて評価を実施する（Ｓ１１０２）。
【０１１７】
この評価関数はＳ９０１にて設定した関数であり、ユーザの設定によって、どの項目を優先的に考慮するかが反映されている。次に、未選択パターンが存在するかどうかを判定する（Ｓ１１０３）。未選択パターンがある場合はＳ１１０１に戻る。
【０１１８】
すなわち、全てのパターンについて、Ｓ１１０２を実行することに相当する。Ｓ１１０３にて、未選択パターンが存在しなくなった場合は、得られた評価結果のうち、最も良い結果となったパターンに基づいてＬＵ制御権変更処理を実施する（Ｓ１１０４）。
【０１１９】
この方法により、移行後に変化するリソースの使用状況や、その際のコントローラ跨りによる負荷変化や、また移行処理自体によって発生するオーバヘッドを含めた、ユーザの設定、目的に沿った最適な移行処理を実現可能となる。
【０１２０】
次に、ユーザからの負荷バランスに関する指示を受け付ける、管理画面について、図１２を用いて説明する。管理画面１２０１は管理ホスト１０５にて表示される、負荷バランスの際にどのような優先度で各項目を評価するかを設定するための画面であり、自動移行設定部１２０２と、ＬＵ単位自動移行設定部１２０３と、ＯＫボタン１２０４と、キャンセルボタン１２０５からなる。
【０１２１】
自動変更設定部位１２０２には自動移行設定パラメータテーブルＴ１２１２がある。自動移行設定パラメータテーブルＴ１２１２にて、自動移行処理自体の可否、性能バランス、ストレージ全体性能の各優先度を設定する。また、移行オーバヘッドについて、どの程度優先的に考慮し、ＬＵ制御権変更を行うかという設定や、移行の際に参照する性能情報の範囲として、過去の性能履歴をどの程度参照して移行を判断するかといった情報を設定する。
【０１２２】
ＬＵ単位自動変更設定１２０３には、ＬＵ単位自動変更設定テーブルＴ１２０３がある。ＬＵ単位自動変更設定テーブルＴ１２０３は、本実施例でＬＵ制御権利を管理する単位としているＬＵ毎に、現在どのコントローラ、コアが担当しているかという情報と、ユーザ設定によってどのコアに割り当てるかという設定内容と、当該ＬＵを自動移行の対象とするか否か、また自動移行の対象となった場合の優先度をどの程度とするかという設定内容からなる。
【０１２３】
ＯＫボタン１２０４と、キャンセルボタン１２０５は、管理画面１２０１にて設定した内容を、それぞれ有効とするか、破棄するかを決定するボタンである。
【０１２４】
次に、ユーザから負荷バランスに関する指示を受け付ける別の方法を、管理画面を表す図１７を用いて説明する。管理画面１７０１は、管理ホスト１０５に表示される、負荷バランス処理の際の優先度をある程度自動で設定するための画面である。自動設定部１７０２とＯＫボタン１７０３と、キャンセルボタン１７０４からなる。
【０１２５】
自動設定部１７０２には、自動設定を有効にするためのラジオボタン１７１１と、自動設定を無効にするための１７１２があり、どちらか一方のみを設定可能である。文字列１７３１、１７３２は、それぞれラジオボタン１７１１、１７１２の意味を説明した文字列である。ラジオボタン１７１２を有効、すなわち自動設定を無効に設定した場合は、管理画面１２０１で示したような、ユーザがある程度自由かつ詳細に負荷バランス処理に関するパラメータを設定する。
【０１２６】
一方、ラジオボタン１７１１を有効、すなわち自動設定を有効に設定した場合は、さらにラジオボタン１７２１、１７２２、１７２３等から設定方法を選択する。文字列１７４１、１７４２、１７４３は、ラジオボタン１７２１、１７２２、１７２３の意味を説明した文字列である。
【０１２７】
ラジオボタン１７２１を有効、すなわち完全自動設定を有効とした場合には、完全に自動的に、負荷バランス処理に関するパラメータであるバランシングパラメータ情報４０２を設定する。この時、以下のラジオボタン１７２２や１７２３を設定した場合のように、ユーザが追随困難な動的な負荷変動や、周期的な特徴のある負荷変動に対して有効となるようなパラメータ設定を自動的に選択する。
【０１２８】
ラジオボタン１７２２を設定、すなわち、ＩＯ負荷に応じてパラメータを変更するという設定を選択した場合には、ストレージ１０１に対して発行されるＩＯ全体の負荷を考慮したバランシングパラメータ情報４０２を設定する。
【０１２９】
これは、例えば、ストレージ１０１に対して発行されるＩＯ負荷が高い場合には、ストレージ１０１が性能ネックとなる可能性があることから、性能バランスよりも出来るだけ全体性能を高くするようなバランシングパラメータ４０２を設定することを意味する。一方、ストレージ１０１に対して発行されるＩＯ負荷が低い場合には、ストレージ１０１を使用するアプリケーションで性能差が発生しないように、また突発的なＩＯ負荷上昇に備え、性能バランスを優先するようなバランシングパラメータ４０２を設定することを意味する。つまり、ストレージ１０１のＩＯ負荷状況に応じて、バランシングパラメータ４０２を動的に変更するような設定である。
【０１３０】
ラジオボタン１７２３を設定、すなわち、１日単位の周期的な負荷変動に対応するという設定を選択した場合には、ストレージ１０１に対して１日単位で周期的な負荷が発行されると仮定し、その周期的な変動を記録し活用する。すなわち、夜間に実行されるバックアップやバッチ処理のような高負荷処理の特徴を記録し、これに速やかに追随可能なようにバランシングパラメータ４０２を動的に変更する。
【０１３１】
ＯＫボタン１７０３と、キャンセルボタン１７０４は、管理画面１７０１にて設定した内容を、それぞれ有効とするか、破棄するかを決定するボタンである。
【０１３２】
次に、ユーザに対して、ストレージ１０１の内部性能情報を伝える画面について、図１５を用いて説明する。内部性能情報は、管理画面１５０１上のリソース使用状況１５１１、リソース使用状況変化予測１５２１、ＬＵ制御権変更処理オーバヘッド予測１５３１、ＯＫボタン１５４１、更新ボタン１５４２からなる。
【０１３３】
リソース使用状況１５１１は、現時点及び過去のリソース使用状況をリソース使用状況テーブルＴ１５１２にて表している。ここで表示する情報は、リソース使用状況管理情報テーブルＴ６０１と同等である。もちろん、ユーザが視覚的に状況を捉えやすいように、グラフ表示する等の表現方法もあり得る。
【０１３４】
リソース使用状況変化予測１５２１は、リソース使用状況変化予測テーブルＴ１５２２からなる。ここで表示する情報は、ＬＵ制御権変更後リソース使用状況変化予測情報テーブルＴ７０１と同等である。ここでもＴ１５１２と同じく、ユーザが状況を捉えやすいように、ＬＵ制御権変更後の使用状況としてリソース使用状況１５１１と同様の表現を行うなどの形態もあり得る。また、過去のリソース使用状況の変化予測履歴もあわせて表示するなどの形態もあり得る。
【０１３５】
ＬＵ制御権変更処理オーバヘッド予測１５３１は、ＬＵ制御権変更処理オーバヘッド予測テーブルＴ１５３２からなる。ここで表示する情報は、ＬＵ制御権変更処理オーバヘッド予測情報テーブルＴ８０１と同等である。ここでもＴ１５１２と同じく、ユーザが状況を捉えやすいように、例えば全リソースを使用して移行処理を行った場合の時間にするなどの表現方法を変更する形態もあり得る。
【０１３６】
ＯＫボタン１５４１は、表示処理を終了するボタンである。更新ボタン１５４２は、表示している情報を最新のものに更新するボタンである。
【０１３７】
次に、ＬＵ制御権変更処理の履歴をユーザに伝えるための画面について、図１６を用いて説明する。ＬＵ制御権変更処理履歴情報は、管理画面１６０１上のＬＵ制御権変更処理実行履歴１６１１、ＯＫボタン１６２１、更新ボタン１６２２からなる。
【０１３８】
ＬＵ制御権変更処理実行履歴１６１１は、ＬＵ制御権変更処理実行履歴テーブルＴ１６１２からなる。ＬＵ制御権変更処理実行履歴テーブルＴ１６１２は、過去に実施したＬＵ制御権変更処理の時刻、対象ＬＵ、移行前ＣＰＵコア、移行後ＣＰＵコアからなり、どのようなＬＵ制御権変更処理を実施してきたかをユーザに伝えることが出来、ユーザは、図１２で設定した際の意図と合致した移行がなされているかどうかの確認が可能となる。
【０１３９】
ＯＫボタン１６２１は、表示処理を終了するボタンである。更新ボタン１６２２は、表示している履歴情報を最新のものに更新するボタンである。
【０１４０】
本実施例においては、ＬＵ制御権を受けてＬＵの処理を担当するコアであって、非対称性を有する各コア１２２、１６２の負荷を分散するに際して、ＬＵ制御権を有するコアは、ＬＵ制御権管理情報Ｔ４０１を基にＬＵ制御権を有するコアとＬＵ制御権の移行先の候補となるコアとの関係を示すパターンをＬＵ毎に抽出し、ストレージ１０１を構成する複数のリソースの使用状況をＬＵ毎に測定し、この測定結果を基にＬＵ制御権の移行後に生じると想定される、複数のリソースの使用状況の変化をＬＵ毎に予測するとともに、測定結果を基にＬＵ制御権の移行処理自体によって発生すると想定されるオーバヘッドをＬＵ毎に予測し、各予測結果を基に、抽出した各パターンのうち設定情報（バランシングパラメータ情報４０２）に適合するパターンを選択し、選択したパターンに属するコアにＬＵ制御権を移行することとしている。
【０１４１】
本実施例によれば、非対称性を有する複数のコアに対して、設定にあわせた最適な負荷分散を実施することができる。
【符号の説明】
【０１４２】
１０１・・・ストレージ、１０３，１０４・・・ホスト計算機、１１４，１５４・・・ＣＰＵ、１１６，１５６・・・メモリ、１１７，１５７・・・キャッシュメモリ、１８２・・・コントローラ間バス、２１５・・・性能情報測定プログラム、２１６・・・性能情報解析プログラム、２１７・・・ＬＵ制御権変更プログラム、２２１・・・構成情報、２２２・・・性能情報、４０１・・・ＬＵ制御権管理情報、４０２・・・バランシングパラメータ情報、５０１・・・リソース使用状況管理情報、５０２・・・ＬＵ制御権変更後リソース使用状況変化予測情報、５０３・・・ＬＵ制御権変更処理オーバヘッド予測情報、
【図１】
0005490093.tif 000002
【図２】
0005490093.tif 000003
【図３】
0005490093.tif 000004
【図４】
0005490093.tif 000005
【図５】
0005490093.tif 000006
【図６】
0005490093.tif 000007
【図７】
0005490093.tif 000008
【図８】
0005490093.tif 000009
【図９】
0005490093.tif 000010
【図１０】
0005490093.tif 000011
【図１１】
0005490093.tif 000012
【図１２】
0005490093.tif 000013
【図１３】
0005490093.tif 000014
【図１４】
0005490093.tif 000015
【図１５】
0005490093.tif 000016
【図１６】
0005490093.tif 000017
【図１７】
0005490093.tif 000018