(57)【要約】【課題】少なくとも一つの記憶デバイスが複数の冗長構成グループに所属するケースにおいて、記憶デバイス単位又は冗長構成グループ単位で消費電力が制御されると、Ｉ／Ｏ性能が低下し、結果として、Ｉ／Ｏ性能と省電力との両立が損なわれるおそれがある。【解決手段】記憶制御システムは、複数の冗長構成グループの基になる複数の記憶デバイスが分類された複数の電力制御グループの各々について当該電力制御グループのＩ／Ｏ（Input/Output）量を取得する。複数の電力制御グループの各々について、記憶制御システムは、当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループに属する各記憶デバイスの消費電力を、電力制御グループ単位で制御する。複数の冗長構成グループのいずれも、複数の電力制御グループのうちの二つ以上の電力制御グループに跨らず、複数の電力制御グループのいずれかに含まれている。【選択図】図１
2019215759.tif 000002
【特許請求の範囲】
【請求項１】
複数の冗長構成グループの基になる複数の記憶デバイスが分類された複数の電力制御グループの各々について当該電力制御グループのＩ／Ｏ（Input/Output）量を取得するＩ／Ｏ量取得部と、
前記複数の電力制御グループの各々について、当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループに属する各記憶デバイスの消費電力を、電力制御グループ単位で制御する電力制御部と
を備え、
前記複数の冗長構成グループのいずれも、冗長化されたデータを格納する記憶デバイスグループであり、
前記複数の冗長構成グループのいずれも、前記複数の電力制御グループのうちの二つ以上の電力制御グループに跨らず、前記複数の電力制御グループのいずれかに含まれている、
記憶制御システム。
【請求項２】
前記複数の記憶デバイスの少なくとも一部は、Ｉ／Ｏ性能と消費電力との関係が異なる二つ以上の記憶デバイスであり、
前記電力制御部は、前記複数の電力制御グループの各々について、
当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループについて関連付ける省電力レベルを複数段階の省電力レベルから選択し、
当該電力制御グループに含まれる各記憶デバイスについて、マッピング情報を基に、当該記憶デバイスに対応した複数の指定値のうち、前記決定された省電力レベルに対応した指定値を決定し、当該指定値を当該記憶デバイスに指定し、
前記複数段階の省電力レベルの各々は、電力制御グループ単位での省電力のレベルであり、
前記マッピング情報は、前記複数段階の省電力レベルの各々に、前記二つ以上の記憶デバイスの各々について、当該記憶デバイスに対応した複数の指定値のうち該当の指定値が関連付けられた情報であり、
前記複数段階の省電力レベルの各々について、前記二つ以上の記憶デバイスの各々についての前記該当の指定値は、当該省電力レベルに対応したＩ／Ｏ性能を当該記憶デバイスが発揮するために当該記憶デバイスに指定される値である、
請求項１に記載の記憶制御システム。
【請求項３】
前記複数段階の省電力レベルの各々について、前記二つ以上の記憶デバイスの各々についての前記該当の指定値は、当該記憶デバイスが属する冗長構成グループの数に依存する、
請求項２に記載の記憶制御システム。
【請求項４】
前記電力制御部は、前記複数の電力制御グループの各々について、当該電力制御グループである対象電力制御グループに関し取得されたＩ／Ｏ量が、複数段階の省電力レベルのうちの当該対象電力制御グループに関連付けられている現在の省電力レベルに対応したＩ／Ｏ性能要件に従うＩ／Ｏ量よりも多い場合、
当該対象電力制御グループの前記現在の省電力レベルを下げたと仮定した場合の見積もられる全体消費電力が、前記全体消費電力の上限値を超えるか否かの判断である第１の判断を行い、
前記第１の判断の結果が真であれば、当該現在の省電力レベルを下げる変更を行い、当該変更の後の省電力レベルに従い、当該対象電力制御グループに属する各記憶デバイスを制御し、
前記全体消費電力は、前記複数の記憶デバイスを含む全体についての消費電力である、
請求項１に記載の記憶制御システム。
【請求項５】
前記電力制御部は、
前記第１の判断の結果が真であれば、前記対象電力制御グループのプライオリティよりも低いプライオリティの電力制御グループが存在するか否かの判断である第２の判断を行い、
前記第２の判断の結果が偽であれば、前記現在の省電力レベルを維持する、
請求項４に記載の記憶制御システム。
【請求項６】
前記電力制御部は、
前記第１の判断の結果が真であれば、前記対象電力制御グループのプライオリティよりも低いプライオリティの電力制御グループが少なくとも一つ存在するか否かの第２の判断を行い、
前記第２の判断の結果が真であれば、当該少なくとも一つの電力制御グループの現在の省電力レベルを上げ前記対象電力制御グループの前記現在の省電力レベルを下げたと仮定した場合の見積もられる全体消費電力が、前記全体消費電力の上限値以下か否かの判断である第３の判断を行い、
前記第３の判断の結果が真であれば、
前記少なくとも一つの電力制御グループの現在の省電力レベルを上げる変更を行い、当該変更の後の省電力レベルに従い、当該少なくとも一つの電力制御グループに属する各記憶デバイスを制御し、
前記対象電力制御グループの現在の省電力レベルを下げる変更を行い、当該変更の後の省電力レベルに従い、当該対象電力制御グループに属する各記憶デバイスを制御する、
請求項４に記載の記憶制御システム。
【請求項７】
前記複数の記憶デバイスの各々は、それぞれがＩ／Ｏ可能な状態である複数段階の省電力状態のいずれにも遷移可能な記憶デバイスである、
請求項１に記載の記憶制御システム。
【請求項８】
前記複数の記憶デバイスの各々は、ＮＶＲＡＭ（Non-Volatile RAM）である、
請求項７に記載の記憶制御システム。
【請求項９】
複数の冗長構成グループの基になる複数の記憶デバイスが分類された複数の電力制御グループの各々について当該電力制御グループのＩ／Ｏ（Input/Output）量を取得し、
前記複数の冗長構成グループのいずれも、冗長化されたデータを格納する記憶デバイスグループであり、
前記複数の冗長構成グループのいずれも、前記複数の電力制御グループのうちの二つ以上の電力制御グループに跨らず、前記複数の電力制御グループのいずれかに含まれており、
前記複数の電力制御グループの各々について、当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループに属する各記憶デバイスの消費電力を、電力制御グループ単位で制御する、
消費電力制御方法。
【請求項１０】
複数の冗長構成グループの基になる複数の記憶デバイスが分類された複数の電力制御グループの各々について当該電力制御グループのＩ／Ｏ（Input/Output）量を取得し、
前記複数の冗長構成グループのいずれも、冗長化されたデータを格納する記憶デバイスグループであり、
前記複数の冗長構成グループのいずれも、前記複数の電力制御グループのうちの二つ以上の電力制御グループに跨らず、前記複数の電力制御グループのいずれかに含まれており、
前記複数の電力制御グループの各々について、当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループに属する各記憶デバイスの消費電力を、電力制御グループ単位で制御する、
ことをコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、複数の記憶デバイスの記憶制御、特に、消費電力制御に関する。
【背景技術】
【０００２】
複数の記憶デバイスの消費電力制御に関する技術として、例えば特許文献１に開示の技術が知られている。特許文献１によれば、ＨＤＤ（Hard Disk Drive）単位、又は、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループ単位で、消費電力の制御が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2013-097635号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、記憶デバイス単体の記憶容量は増大しており、少なくとも一つの記憶デバイスが複数のＲＡＩＤグループに所属することがある。このようなケースにおいて、ＨＤＤ単位又はＲＡＩＤグループ単位で消費電力が制御されると、Ｉ／Ｏ性能が低下し、結果として、Ｉ／Ｏ性能と省電力との両立が損なわれるおそれがある。具体的には、例えば、或るＨＤＤ又は或るＲＡＩＤグループのＩ／Ｏ量（例えばＩ／Ｏ頻度）が小さいことを理由に、当該ＨＤＤ又は当該ＲＡＩＤグループの消費電力が下げられたとする。しかし、当該ＨＤＤ、又は、当該ＲＡＩＤグループに属する少なくとも一つのＨＤＤが、Ｉ／Ｏ量が大きいＲＡＩＤグループに属している場合、Ｉ／Ｏ量が大きいＲＡＩＤグループのＩ／Ｏ性能が低下し得る。
【０００５】
このような課題は、ＲＡＩＤグループに代えて又は加えて他種の冗長構成グループ（例えばＲＡＩＮ（Redundant Array of Independent (or Inexpensive) Nodes））が採用されるケースについてもあり得る。
【課題を解決するための手段】
【０００６】
記憶制御システムは、複数の冗長構成グループの基になる複数の記憶デバイスが分類された複数の電力制御グループの各々について当該電力制御グループのＩ／Ｏ（Input/Output）量を取得する。複数の電力制御グループの各々について、記憶制御システムは、当該電力制御グループに関し取得されたＩ／Ｏ量を基に、当該電力制御グループに属する各記憶デバイスの消費電力を、電力制御グループ単位で制御する。複数の冗長構成グループのいずれも、複数の電力制御グループのうちの二つ以上の電力制御グループに跨らず、複数の電力制御グループのいずれかに含まれている。
【発明の効果】
【０００７】
本発明によれば、少なくとも一つの記憶デバイスが複数の冗長構成グループに所属しても、Ｉ／Ｏ性能と省電力との両立を維持することができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１の概要を模式的に示す。
【図２】記憶システムを含むシステム全体の構成を示す。
【図３】ＰＳＮＧ管理テーブルの構成を示す。
【図４】Ｉ／Ｏ性能要件テーブルの構成を示す。
【図５】マッピングテーブルの構成を示す。
【図６】電力管理テーブルの構成を示す。
【図７】或るＮＶＲＡＭの電力特性を示す。
【図８】ＰＳＮＧ構築処理のフローを示す。
【図９】消費電力制御全体のフローを示す。
【図１０】対象ＰＳＮＧについての消費電力制御のフローを示す。
【図１１】対象ＰＳＮＧについてのレベル上げの処理のフローを示す。
【図１２】対象ＰＳＮＧについてのレベル下げの処理のフローを示す。
【図１３】実施例２に係るマッピングテーブルの構成を示す。
【発明を実施するための形態】
【０００９】
以下の説明では、「インターフェース部」は、一つ以上のインターフェースでよい。当該一つ以上のインターフェースは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１０】
また、以下の説明では、「メモリ部」は、一つ以上のメモリであり、典型的には主記憶デバイスでよい。
【００１１】
また、以下の説明では、「ＰＤＥＶ部」は、一つ以上のＰＤＥＶであり、典型的には補助記憶デバイスでよい。「ＰＤＥＶ」は、記憶デバイスの一例であり、特に、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイスである。
【００１２】
また、以下の説明では、「記憶部」は、メモリ部とＰＤＥＶ部の少なくとも一部とのうちの少なくとも一つ（典型的には少なくともメモリ部）である。
【００１３】
また、以下の説明では、「プロセッサ部」は、一つ以上のプロセッサである。少なくとも一つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも一つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【００１４】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、この種の情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１５】
また、以下の説明では、「ｋｋｋ部」（インターフェース部、記憶部及びプロセッサ部を除く）の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、一つ以上のハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））によって実現されてもよい。プログラムがプロセッサ部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部及び／又はインターフェース部等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００１６】
また、以下の説明では、「冗長構成グループ」は、二つ以上の記憶デバイスで構成され冗長化されたデータを格納する記憶デバイスグループである。冗長構成の例としては、Erasure Coding、ＲＡＩＮ（Redundant Array of Independent Nodes）、ノード間ミラーリング、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）などがあり、いずれの冗長構成が採用されてもよい。従って、「記憶デバイス」は、ＮＶＲＡＭ（Non-Volatile RAM）のような記憶媒体でもよいし、スケールアウト型の記憶システムの構成要素としてのノード（例えば汎用計算機）でもよい。また、「記憶システム」は、複数の記憶媒体を複数の記憶デバイスとして有する記憶システムでもよいし、複数のノードを複数の記憶デバイスとして有する記憶システム（例えば分散記憶システム）でもよい。以下の実施例では、記憶システムは、前者の記憶システムであり、前者の記憶システムについて、記憶制御システムは、記憶システム内のコントローラでよい。後者の記憶システムについて、記憶制御システムは、各ノードにおいて所定のプログラムを実行するプロセッサ部でよい。具体的には、例えば、「記憶システム」は、一つ以上の物理的な計算機を含んだシステムでよい。物理的な計算機は、汎用計算機でも専用計算機でもよい。少なくとも一つの物理的な計算機において、一つ以上の仮想的な計算機（例えばＶＭ（Virtual Machine））が実行されてもよい。仮想的な計算機は、Ｉ／Ｏ要求を発行する計算機でもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機でもよい。物理的な計算機が所定のソフトウェアを実行することにより、当該物理的な計算機、又は、当該物理的な計算機を含んだシステムに、ＳＤｘ（Software-Defined anything）が構築されてもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、ＳＤＳとしての記憶システムが構築されてもよい。また、少なくとも一つの物理的な計算機（例えばストレージ装置）が、ホスト計算機としての一つ以上の仮想的な計算機と、記憶システムの記憶制御システム（典型的には、Ｉ／Ｏ要求に応答してデータをＰＤＥＶ部に対して入出力する装置）としての仮想的な計算機とが実行されてもよい。言い換えれば、当該少なくとも一つの物理的な計算機は、ホスト計算機の少なくとも一部として機能と、記憶システムの少なくとも一部としての機能の両方を有してもよい。
【００１７】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、要素のＩＤを使用することがある。例えば、ＮＶＲＡＭを特に区別しないで説明する場合には、「ＮＶＲＡＭ１１０」と記載し、個々のＮＶＲＡＭを区別して説明する場合には、「ＮＶＲＡＭ１」、「ＮＶＲＡＭ２」のように記載することがある。なお、以下の説明では、参照符号は３桁以上であり、ＩＤは３桁未満である。
【００１８】
以下、幾つかの実施例を説明する。
【実施例１】
【００１９】
図１は、実施例１の概要を模式的に示す。
【００２０】
記憶システム１００は、複数のＮＶＲＡＭ１１０と、複数のＮＶＲＡＭ１１０に対するデータのＩ／Ｏ（Input/Output）を制御する記憶制御システム１０１とを有する。ＮＶＲＡＭ１１０は、不揮発性の半導体メモリを有するデバイスである。当該メモリは、フラッシュメモリ、ＰＲＡＭ（Phase-change Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）又はＦｅＲＡＭ（Ferroelectric Random Access Memory）でよい。
【００２１】
記憶制御システム１０１は、後述の管理ＰＣからの指示、又は、予め設定されたポリシーに従って、ＲＡＩＤグループ（冗長構成グループの一例）１２０の上位のＮＶＲＡＭグループ１３０を作成する。上位のＮＶＲＡＭグループ１３０は、電力制御グループの一例である。以下、上位のＮＲＡＭグループ１３０を、ＰＳＮＧ（Power Saving NVRAM Group）１３０と言う。記憶制御システム１０１は、ＮＶＲＡＭ１１０の消費電力制御をＰＳＮＧ単位で行う。いずれのＲＡＩＤグループ１２０も、いずれかのＰＳＮＧ１３０に含まれている。別の言い方をすれば、いずれのＲＡＩＤグループ１２０も、二つ以上のＰＳＮＧ１３０に跨らない。つまり、一つのＲＡＩＤグループ１２０に属する全てのＮＶＲＡＭ１１０は、いずれか一つのＰＳＮＧ１３０に含まれており、二つ以上のＰＳＮＧ１３０に跨ることは無い。具体的には、例えば、図示の通り、１つのＮＶＲＡＭ１１０（ＮＶＲＡＭ３〜５の各々）が複数のＲＡＩＤグループ１２０（ＲＡＩＤグループ１及び２）に属し得るが、いずれのＲＡＩＤグループ１１０も、二つ以上のＰＳＮＧ１３０に跨らない。
【００２２】
記憶制御システム１０１は、Ｉ／Ｏ量取得部１４１と、電力制御部１４２とを有する。
【００２３】
Ｉ／Ｏ量取得部１４１は、Ｉ／Ｏ量を、複数のＰＳＮＧ１３０の各々について取得する。Ｉ／Ｏ量は、定期的に又は不定期的に取得されてよい。取得されるＩ／Ｏ量は、Ｉ／Ｏ量取得部１４１（又は記憶制御システム１０１とは別のシステム）により計測されたＩ／Ｏ量でよい。「Ｉ／Ｏ量」として、「Ｉ／Ｏ数」及び「Ｉ／Ｏサイズ」の少なくとも一つを採用することができる。「Ｉ／Ｏ数」は、Ｉ／Ｏコマンドの数（例えば、単位時間当たりのＩ／Ｏコマンドの数（つまり、ＩＯＰＳのようなＩ／Ｏ頻度））である。「Ｉ／Ｏサイズ」は、Ｉ／Ｏ対象のデータのサイズ（例えば、単位時間当たりに入出力されるデータのサイズ（転送速度のようなＩ／Ｏスループット））である。各ＰＳＮＧ１３０について、当該ＰＳＮＧ１３０のＩ／Ｏ量は、当該ＰＳＮＧ１３０に属する全ＮＶＲＡＭ１１０のＩ／Ｏ量に従うＩ／Ｏ量（例えば、合計又は平均）である。
【００２４】
電力制御部１４２は、複数のＰＳＮＧ１３０の各々について、当該ＰＳＮＧ１３０に関し取得されたＩ／Ｏ量を基に、当該ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０の消費電力を、ＰＳＮＧ単位で制御する。
【００２５】
これにより、少なくとも一つのＮＶＲＡＭ１１０が複数のＲＡＩＤグループ１２０に所属しても、Ｉ／Ｏ性能と省電力との両立を維持することができる。
【００２６】
ＰＳＮＧ単位での省電力のレベルとして、複数段階の省電力レベルが設けられている。例えば、下記のうちの少なくとも一つは、ＰＳＮＧ１３０によって異なっていてもよいし、全てのＰＳＮＧ１３０に共通でもよい。
・省電力レベルの数（段階の数）。
・省電力レベルとしての値。例えば、図示の“Ｎｏｒｍａｌ”、“Ｌｅｖｅｌ１”、“Ｌｅｖｅｌ２”。本実施例では、“Ｎｏｒａｍｌ”が最も省電力レベルが低く（省電力が弱い、言い換えれば、消費電力が大きい）、“Ｌｅｖｅｌα”におけるαの数値が大きい程、省電力レベルが高い（省電力が強い、言い換えれば、消費電力が小さい）。
・省電力レベル毎のＩ／Ｏ性能要件。具体的には、各省電力レベルについて、当該省電力レベルに従う省電力状態において必要とされるＩ／Ｏ性能。Ｉ／Ｏ性能要件は、Ｉ／Ｏ量の閾値範囲と言うこともできる。別の言い方をすれば、「Ｉ／Ｏ性能」も、「Ｉ／Ｏ量」と同様、「Ｉ／Ｏ数」及び「Ｉ／Ｏサイズ」の少なくとも一つで表現される。
【００２７】
各省電力レベルに、Ｉ／Ｏ性能要件（Ｉ／Ｏ量の上限及び下限の閾値）が関連付けられる。Ｉ／Ｏ性能要件は、例えばユーザ（例えば管理者）により手動設定されるが、所定のポリシーを基に自動設定されてもよい。電力制御部１４２は、各ＰＳＮＧ１３０について、下記（ａ）〜（ｄ）を行う。
（ａ）当該ＰＳＮＧ１３０について取得されたＩ／Ｏ量が、当該ＰＳＮＧ１３０の現在の省電力レベルに対応したＩ／Ｏ性能要件（Ｉ／Ｏ量の閾値範囲）を満たすか否かを判断する。
（ｂ）（ａ）の判断結果が真の場合、当該ＰＳＮＧ１３０の省電力レベルを、現在の省電力レベルに維持する（例えば、ＰＳＮＧ１についてのＣａｓｅ１及びＣａｓｅ２を参照）。
（ｃ）（ａ）の判断結果が偽であり、且つ、当該ＰＳＮＧ１３０のＩ／Ｏ量が、当該ＰＳＮＧ１３０の現在の省電力レベルに対応した下限閾値未満の場合、現在の省電力レベルを上げる、つまり、省電力を強める（例えば、ＰＳＮＧ２についてのＣａｓｅ３、及び、ＰＳＮＧ３についてのＣａｓｅ５及び６を参照）。
（ｄ）（ａ）の判断結果が偽であり、且つ、当該ＰＳＮＧ１３０のＩ／Ｏ量が、当該ＰＳＮＧ１３０の現在の省電力レベルに対応した上限閾値以上の場合、現在の省電力レベルを下げる、つまり、省電力を弱める（例えば、ＰＳＮＧ２についてのＣａｓｅ４を参照）。
【００２８】
以上の処理により、各ＰＳＮＧ１１０について、設定される省電力レベルは、取得されたＩ／Ｏ量に適した省電力レベルに維持される。具体的には、例えば、次の通りである。すなわち、Ｉ／Ｏ量の変化が小さいままであれば、省電力レベルの変更はない（Ｃａｓｅ１及びＣａｓｅ２を参照）。Ｉ／Ｏ量が減った後に増えたならば、省電力レベルは上がった後に下がる（Ｃａｓｅ３及び４を参照）。Ｉ／Ｏ量が減った後に更に減ったならば、省電力レベルは上がった後に更に上がる（Ｃａｓｅ５及び６を参照）。なお、設定される省電力レベル（現在の省電力レベル）は、取得されたＩ／Ｏ量とＩ／Ｏ性能要件との関係に関わらずに１段ずつ変更されてもよいし、取得されたＩ／Ｏ量が満たすＩ／Ｏ性能要件に対応した省電力レベルに変更されてもよい。
【００２９】
ＰＳＮＧ１３０の電力制御には、ＮＶＲＡＭ１１０の省電力機能が利用される。ＮＶＲＡＭ１１０は、Ｉ／Ｏ可能な状態である複数段階の省電力状態のいずれにも遷移可能な（Ｉ／Ｏ可能な複数段階の省電力レベルのいずれも設定され得る）記憶デバイスの一例である。具体的には、例えば、ＮＶＲＡＭ１１０は、複数段階の省電力レベルを有する。以下、混同を避けるため、適宜、ＰＳＮＧ１３０についての省電力レベルを、「ＰＳＮＧ省電力レベル」と言い、ＮＶＲＡＭ１１０についての省電力レベルを、「ＮＶＲＡＭ省電力レベル」と言うことがある。ＮＶＲＡＭ省電力レベルとして、図１には、“Ｎ”（Ｎｏｒｍａｌ）、“Ｌｖ１”、“Ｌｖ２”が例示されている。“Ｌｖβ”におけるβの数値が大きい程、省電力レベルが高い（省電力が強い、言い換えれば、消費電力が小さい）。ＮＶＲＡＭ１１０のＩ／Ｏ性能は、ＮＶＲＡＭ省電力レベルに応じて異なる。複数のＮＶＲＡＭ１１０の少なくとも一部は、電力特性（Ｉ／Ｏ性能と消費電力との関係）が異なる二つ以上のＮＶＲＡＭ１１０を含む。具体的には、例えば、ＮＶＲＡＭ１１０の電力特性は、ＮＶＲＡＭ１１０によって（又は、ＮＶＲＡＭ１１０の型名等の種別によって）異なる。そこで、本実施例では、各ＰＳＮＧ省電力レベルに、各ＮＶＲＡＭ１１０について、当該ＮＶＲＡＭ１１０に対応した複数段階のＮＶＲＡＭ省電力レベルのうち該当のＮＶＲＡＭ省電力レベルが関連付けられる。ＰＳＮＧ単位の消費電力制御では、各ＰＳＮＧ１３０について、当該ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０のＮＶＲＡＭ省電力レベルは、当該ＰＳＮＧ１３０の現在の省電力レベルに関連付けられているＮＶＲＡＭ省電力レベルとされる。このため、一つのＰＳＮＧ１３０において、設定されるＮＶＲＡＭ省電力レベルの値にばらつきが生じ得る（Ｃａｓｅ６参照）。電力特性の異なるＮＶＲＡＭ１１０が一つのＰＳＮＧ１３０に混在しても、当該一つのＰＳＮＧ１３０において、全ＮＶＲＡＭ１１０のＩ／Ｏ性能が平準（均一）になることが期待できる。なお、ＮＶＲＡＭ省電力レベルの設定とは、ＮＶＲＡＭ１１０の後述の省電力設定レジスタに、ＮＶＲＡＭ省電力レベルに従う指定値を設定することである。ＮＶＲＡＭ１１０は、設定された指定値に従い、当該ＮＶＲＡＭ１１０の消費電力を制御する。指定値は、ＮＶＲＡＭ省電力レベル相当である。従って、ＮＶＲＡＭ省電力レベルをＰＳＮＧ省電力レベルに関連付けることは、指定値をＰＳＮＧ省電力レベルに関連付けることに相当する。言い換えれば、ＮＶＲＡＭ省電力レベルの有無に関わらず、ＮＶＲＡＭ１１０用の指定値は、ＰＳＮＧ省電力レベルに関連付けられる。
【００３０】
電力制御部１４２は、全体消費電力をパワーキャッピング値（全体消費電力の上限値）以下に維持するためにＰＳＮＧ１３０間の省電力レベルを調整する。具体的には、例えば、電力制御部１４２は、第１のＰＳＮＧ１３０の省電力レベルを下げる際に、当該或るＰＳＮＧ１３０の省電力レベルを下げたと仮定した場合の見積もられる全体消費電力が、パワーキャッピング値を超えるか否かを判断する。「全体省電力」は、複数のＮＶＲＡＭ１１０を含む全体（例えば記憶システム１００）についての消費電力である。その判断の結果が真であれば、電力制御部１４２は、第２のＰＳＮＳ１３０の省電力レベルを上げることで、見積もられる全体消費電力をパワーキャッピング値以下に維持する。「第２のＰＳＮＧ」は、第１のＰＳＮＧよりもＱｏＳ（Quality of Service）プライオリティ（プライオリティの一例）の低いＰＳＮＧである。これにより、ＱｏＳプライオリティを満たしつつＩ／Ｏ性能と省電力との両立を維持することができる。なお、パワーキャッピング値は、ユーザ（例えば管理者）により後述の管理ＰＣ経由で設定（変更）されてよい。
【００３１】
以下、本実施例を詳細に説明する。
【００３２】
図２は、記憶システムを含むシステム全体の構成を示す。
【００３３】
ネットワーク２８０に、記憶システム１００、ホストサーバ２６０及び管理ＰＣ（Personal Computer）２７０が接続される。ホストサーバ２６０は、ホスト計算機の一例であり、記憶システム１００から提供されるボリューム（アドレス空間）に対してＩ／Ｏ要求を発行する。管理ＰＣ２７０は、管理計算機の一例であり、記憶システム１００を管理する。ユーザ（典型的には管理者）は、管理ＰＣ２７０（又はホストサーバ２６０）経由で、ＰＳＮＧ１３０の設定や、ＲＡＩＤグループ１２０の設定や、パワーキャッピング値の設定を、記憶制御システム１０１に対して行うことができる。ネットワーク２８０は、ファイバチャネル（Fibre Channel）、イーサネット（登録商標）、InfiniBand又はＬＡＮ（Local Area Network）などから構成される一つ以上のネットワークでよい。
【００３４】
記憶システム１００は、複数のＮＶＲＡＭ１１０と、複数のＮＶＲＡＭ１１０に対するＩ／Ｏを制御する記憶制御システム１０１と、商用電源（交流電源）を直流電源に変えて記憶システム１００内の各種ハードウェア資源に供給する電源装置２５０とを備える。電源装置２５０は、全体消費電力を計測する電源モニタ部２５１を有する。
【００３５】
各ＮＶＲＡＭ１１０は、消費電力制御のための指定値が設定されるレジスタである省電力設定レジスタ２２０を有する。各ＮＶＲＡＭ１１０は、当該ＮＶＲＡＭ１１０の省電力設定レジスタ２２０に設定された指定値に従い、当該ＮＶＲＡＭ１１０の消費電力制御を制御する。
【００３６】
記憶制御システム１０１は、例えば、冗長化されたストレージコントローラ２１０である。ストレージコントローラ２１０は、ＦＥ（フロントエンド）インターフェース２１１、ＢＥ（バックエンド）インターフェース２１２、メモリ２１３、及び、それらに接続されたＣＰＵ２１４を有する。ＦＥインターフェース２１１及びＢＥインターフェース２１２は、インターフェース部の一例である。メモリ２１３は、メモリ部の一例である。ＣＰＵ２１４は、プロセッサ部の一例である。
【００３７】
ＦＥインターフェース２１１は、ネットワーク２８０に接続され、記憶システム１００の外部の装置（ホストサーバ２６０及び管理ＰＣ２７０）と通信するためのインターフェースデバイスである。ＢＥインターフェース２１２は、ＮＶＲＡＭ１１０と通信するためのインターフェースデバイスである。
【００３８】
メモリ２１３は、ＳＲＡＭ（Static RAM(Random Access Memory)）やＤＲＡＭ（Dynamic RAM）などの揮発性の半導体メモリから構成されてよい。メモリ２１３は、制御プログラム２９１を含む複数のプログラムや、一つ以上のテーブルであるテーブル群２９２（管理情報の一例）を記憶する。テーブル群２９２は、後述のＰＳＮＧ管理テーブル、Ｉ／Ｏ性能要件テーブル、マッピングテーブル及び電力管理テーブルを含む。
【００３９】
ＣＰＵ２１４は、メモリ２１３内のプログラムを実行することでストレージコントローラ２１０全体の動作制御を司る。例えば、ＣＰＵ２１４が制御プログラム２９１を実行することで、Ｉ／Ｏ制御部２９５、Ｉ／Ｏ量取得部１４１、電力制御部１４２、構成管理部２９６及び電力モニタ部２９７といった機能が実現される。Ｉ／Ｏ制御部２９５は、ホストサーバ２６０からのＩ／Ｏ要求に従い（又は所定の内部処理において）ＮＶＲＡＭ１１０に対するＩ／Ｏを制御する。Ｉ／Ｏ量取得部１４１及び電力制御部１４２については上述の通りである。構成管理部２９６は、ＰＳＮＧ１３０の設定等を行う。電力モニタ部２９７は、全体消費電力を電源装置２５０の電源モニタ部２５１から取得する。
【００４０】
以下、テーブル群２９２に含まれるＰＳＮＧ管理テーブル、Ｉ／Ｏ性能要件テーブル、マッピングテーブル及び電力管理テーブルを説明する。
【００４１】
図３は、ＰＳＮＧ管理テーブルの構成を示す。
【００４２】
ＰＳＮＧ管理テーブル３００は、各ＰＳＮＧ１３０の構成に関する情報を保持する。具体的には、例えば、ＰＳＮＧ管理テーブル３００は、ＮＶＲＡＭ１１０毎にエントリを有する。各エントリは、ＰＳＮＧ＃３０１、ＰＳＮＧ省電力レベル３０２、ＱｏＳ３０３、ＮＶＲＡＭ＃３０４、ＲＧ＃３０５、スタートアドレス３０６及び容量３０７といった情報を格納する。ＰＳＮＧ省電力レベル３０２は、現在レベル３１１、下限３１２及び上限３１３を含む。以下、一つのＮＶＲＡＭ１１０を例に取る（図３の説明において「対象ＮＶＲＡＭ１１０」）。
【００４３】
ＰＳＮＧ＃３０１は、対象ＮＶＲＡＭ１１０を含むＰＳＮＧ１３０のＩＤ（例えば識別番号）を示す。図３の説明において、対象ＮＶＲＡＭ１１０を含むＰＳＮＧ１３０を、「対象ＰＳＮＧ１３０」と言う。現在レベル３１１は、対象ＰＳＮＧ１３０について設定されている現在のＰＳＮＧ省電力レベルを示す。下限３１２は、対象ＰＳＮＧ１３０について設定され得るＰＳＮＧ省電力レベルのうちの下限を示す。上限３１３は、対象ＰＳＮＧ１３０について設定され得るＰＳＮＧ省電力レベルのうちの上限を示す。ＱｏＳ３０３は、対象ＰＳＮＧ１３０について設定されているＱｏＳプライオリティを示す。ＮＶＲＡＭ＃３０４は、対象ＮＶＲＡＭ１１０のＩＤを示す。ＲＧ＃３０５は、対象ＮＶＲＡＭ１１０を含むＲＡＩＤグループ１２０のＩＤを示す。図３の説明において、対象ＮＶＲＡＭ１１０を含むＲＡＩＤグループ１２０を、「対象ＲＧ１２０」と言う。スタートアドレス３０６は、対象ＲＧ１２０が提供する論理アドレス空間のうち対象ＮＶＲＡＭ１１０が提供する論理アドレス空間の先頭アドレスを示す。容量３０７は、対象ＮＶＲＡＭ１１０の記憶容量を示す。
【００４４】
本実施例では、ＱｏＳ３０３の値が小さい程、ＱｏＳプライオリティは高い（すなわち、“１ｓｔ”が最もＱｏＳプライオリティが高い）。
【００４５】
図４は、Ｉ／Ｏ性能要件テーブルの構成を示す。
【００４６】
Ｉ／Ｏ性能要件テーブル４００は、Ｉ／Ｏ性能要件に関する情報を保持する。具体的には、例えば、Ｉ／Ｏ性能要件テーブル４００は、各ＰＳＮＧ１３０のＰＳＮＧ省電力レベル毎にエントリを有する。各エントリは、ＰＳＮＧ＃４０１、省電力レベル４０２及びＩ／Ｏ性能要件４０３といった情報を保持する。Ｉ／Ｏ性能要件４０３は、上限４１１及び下限４１２を含む。以下、一つのＰＳＮＧ１３０の一つの省電力レベルを例に取る（図４の説明において「対象ＰＳＮＧ１３０」及び「対象ＰＳＮＧ省電力レベル」と言う）。
【００４７】
ＰＳＮＧ＃４０１は、対象ＰＳＮＧ１３０のＩＤである。省電力レベル４０２は、対象ＰＳＮＧ省電力レベルを示す。上限４１１は、対象ＰＳＮＧ省電力レベルに対応したＩ／Ｏ性能要件（Ｉ／Ｏ量の閾値範囲）のうちの上限を示す。下限４１２は、対象ＰＳＮＧ省電力レベルに対応したＩ／Ｏ性能要件のうちの下限を示す。
【００４８】
Ｉ／Ｏ量の閾値は、単位時間）例えば１分）当たりのＩ／Ｏ数とＩ／Ｏサイズの両方である。対象ＰＳＮＧ１３０について取得されたＩ／Ｏ量が上限４１１以上又は下限４１２未満であるとは、対象ＰＳＮＧ１３０について取得されたＩ／Ｏ量としての単位時間当たりのＩ／Ｏ数及びＩ／Ｏサイズの両方（又は一方）が、上限４１１以上又は下限４１２未満であることである。
【００４９】
なお、複数段階のＰＳＮＧ省電力レベルは、全てのＰＳＮＧ１３０に共通でもよい。
【００５０】
図５は、マッピングテーブルの構成を示す。
【００５１】
マッピングテーブル５００は、ＰＳＮＧ１３０のＰＳＮＧ省電力レベルと当該ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０のＮＶＲＡＭ省電力レベルとの対応関係を示す情報を保持する。ＰＳＮＧ１３０毎にＰＳＮＧ省電力レベルの段階数やＩ／Ｏ性能要件等が違っていれば、マッピングテーブル５００はＰＳＮＧ１３０毎に用意されてよいし、全てのＰＳＮＧ１３０にＰＳＮＧ省電力レベルの段階数やＩ／Ｏ性能要件等が共通であれば、マッピングテーブル５００は全てのＰＳＮＧ１３０について共通でよい。
【００５２】
一つのＰＳＮＧ１３０を例に取る（図５の説明において「対象ＰＳＮＧ１３０」）。マッピングテーブル５００では、具体的には、例えば、対象ＰＳＮＧ１３０の複数段階の省電力レベルの各々に、対象ＰＳＮＧ１３０に属する各ＮＶＲＡＭ（又は、ＮＶＲＡＭ種別）について、当該ＮＶＲＡＭ１１０に対応した複数段階のＮＶＲＡＭ省電力レベルのうち該当のＮＶＲＡＭ省電力レベルが関連付けられている。一つのＰＳＮＧ省電力レベルと一つのＮＶＲＡＭ１１０を例に取ると、「該当のＮＶＲＡＭ省電力レベル」とは、当該ＰＳＮＧ省電力レベルに対応したＩ／Ｏ性能（例えば、当該ＰＳＮＧ省電力レベルについて図５に例示の「性能指標」が示すＩ／Ｏ性能）を当該ＮＶＲＡＭ１１０が発揮するためのＮＶＲＡＭ省電力レベルのうち最も高いＮＶＲＡＭ省電力レベル（つまり、最も省電力が強い）である。このため、対象ＰＳＮＧ１３０に電力特性が異なる二つ以上のＮＶＲＡＭ１１０が混在する場合、それら二つ以上のＮＶＲＡＭ１１０については、同一のＰＳＮＧ省電力レベルに関連付けられるＮＶＲＡＭ省電力レベルは異なる。図５の例によれば、ＰＳＮＧ省電力レベル“Ｌｅｖｅｌ２”に、ＮＶＲＡＭ１については、ＮＶＲＡＭ省電力レベル“ＬＶ２”が関連付けられているが、ＮＶＲＡＭ３については、ＮＶＲＡＭ１の省電力レベルとは異なる省電力レベル“ＬＶ１”が関連付けられている。なお、各ＰＳＮＧ省電力レベルについて、図５に示す「性能指標」は、当該ＰＳＮＧ省電力レベルに対応したＩ／Ｏ性能要件でもよい。
【００５３】
マッピングテーブル５００は、更に、各ＮＶＲＡＭ１１０の各ＮＶＲＡＭ省電力レベルについて、発揮可能なＩ／Ｏ性能（ライト性能及びリード性能）と、消費電力とを示す情報も保持している。
【００５４】
マッピングテーブル５００は、例えば次のようにして用意されてよい。すなわち、構成管理部２９６が、各ＮＶＲＡＭ１１０について、当該ＮＶＲＡＭ１１０の電力特性（Ｉ／Ｏ性能と消費電力の関係）を当該ＮＶＲＡＭ１１０からスキャンし、各ＮＶＲＡＭ１１０からスキャンされた情報を基にマッピングテーブル５００を作成してよい。又は、制御プログラム２９１をコーディングする際にＮＶＲＡＭ１１０の各種型名について電力特性を辞書としてコードに埋め込んでおき、構成管理部２９６が、ＮＶＲＡＭ１１０の認識の際に型名をスキャンし当該型名をキーに辞書を引いて、マッピングテーブル５００を作成してもよい。
【００５５】
図６は、電力管理テーブルの構成を示す。
【００５６】
電力管理テーブル６００は、現在の全体消費電力を示す値である現在値と、パワーキャッピング値とを保持する。現在値は、電力モニタ部２９７により電源装置２５０から定期的又は不定期的に取得され電力管理テーブル６００に登録される。パワーキャッピング値は、ユーザから管理ＰＣ２７０（又はホストサーバ２６０）経由で入力され構成管理部２９６により電力管理テーブル６００に登録されてよい。
【００５７】
図７は、或るＮＶＲＡＭ１１０の電力特性を示す。
【００５８】
図７に示すように、複数段階のＮＶＲＡＭ省電力レベルの各々について、消費電力とＩ／Ｏ性能が異なる。また、複数段階のＮＶＲＡＭ省電力レベルの各々について、省電力設定レジスタ２２０に設定される指定値がある。なお、同一のＮＶＲＡＭ１１０について、二つ以上のＮＶＲＡＭ省電力レベルの各々が、省電力状態であってもＩ／Ｏ可能である省電力レベルである。図７に例示の電力特性、ＮＶＲＡＭ省電力レベル及び指定値の関係は、当該ＮＶＲＡＭ１１０に設定されているが、更にテーブルとしてストレージコントローラ２１０のメモリ２１３に格納されていてもよい。
【００５９】
以下、本実施例で行われる処理の一例を説明する。
【００６０】
図８は、ＰＳＮＧ構築処理のフローを示す。
【００６１】
構成管理部２９６は、各ＮＶＲＡＭ１１０から型名や電力特性を示す情報を取得（スキャン）し、当該情報を基にマッピングテーブル５００を作成する（Ｓ８０１）。
【００６２】
構成管理部２９６は、ＰＳＮＧ１３０を作成し、作成したＰＳＮＧ１３０に関する情報をＰＳＮＧ管理テーブル３００に登録する（Ｓ８０２）。ＰＳＮＧ１３０は、所定のポリシーに基づいて自動で作成されてもよいし、ユーザからの指示に従って作成されてもよい。
【００６３】
構成管理部２９６は、作成された各ＰＳＮＧ１３０について、ＱｏＳプライオリティやＰＳＮＧ省電力レベルの下限及び上限を、ＰＳＮＧ管理テーブル３００に登録する（Ｓ８０３）。各ＰＳＮＧ１３０について、ＱｏＳプライオリティやＰＳＮＧ省電力レベルの下限及び上限は、所定のポリシーに基づいて自動で決定されてもよいし、ユーザからの指示通りであってもよい。
【００６４】
構成管理部２９６は、ＲＡＩＤグループ１２０を作成し、作成したＲＡＩＤグループ１２０に関する情報をＰＳＮＧ管理テーブル３００に登録する（Ｓ８０４）。その際、構成管理部２９６は、ＰＳＮＧ１３０内に一つ以上のＲＡＩＤグループ１２０を作成することを許可する（実行する）が、二つ以上のＰＳＮＧ１３０にＲＡＩＤグループ１２０が跨ることを禁止する（非実行とする）。ＲＡＩＤグループ１２０は、所定のポリシーに基づいて自動で作成されてもよいし、ユーザからの指示に従って作成されてもよい。
【００６５】
構成管理部２９６は、パワーキャッピング値を電力管理テーブル６００に登録する（Ｓ８０５）。パワーキャッピング値は、所定のポリシーに基づいて自動で決定されてもよいし、ユーザからの指示通りであってもよい。
【００６６】
図９は、消費電力制御全体のフローを示す。
【００６７】
Ｉ／Ｏ量取得部１４１が、ＰＳＮＧ管理テーブル３００を参照し、ＱｏＳ３０３の値の昇順に（ＱｏＳプライオリティが高い順に）、消費電力制御を起動する（Ｓ９０１、Ｓ９０２、Ｓ９０３、…）。
【００６８】
以下、図１０〜図１２を参照して、一つのＰＳＮＧ１３０を例に取り、消費電力制御を説明する（図１０〜図１２の説明において、「対象ＰＳＮＧ１３０」）。
【００６９】
図１０は、対象ＰＳＮＧ１３０についての消費電力制御のフローを示す。
【００７０】
Ｉ／Ｏ量取得部１４１が、対象ＰＳＮＧ１３０のＩ／Ｏ量を取得する（Ｓ１００１）。なお、本実施例では、各ＰＳＮＧ１３０について、取得されるＩ／Ｏ量は、当該ＰＳＮＧ１３０に属する全ＮＶＲＡＭ１１０のＩ／Ｏ量の合計とする。具体的には、例えば、各ＮＶＲＡＭ１１０のＩ／Ｏ量がＩ／Ｏ量取得部１４１により計測（監視）されていて、その計測結果を基に、各ＰＳＮＧ１３０についてＩ／Ｏ量の取得が可能である。
【００７１】
電力制御部１４２が、Ｉ／Ｏ性能要件テーブル４００を参照し、取得されたＩ／Ｏ量（Xc）が、対象ＰＳＮＧ１３０に対応した下限４１２未満か否かを判断する（Ｓ１００２）。
【００７２】
Ｓ１００２の判断結果が真の場合（Ｓ１００２：Ｙｅｓ）、対象ＰＳＮＧ１３０についてのレベル上げの処理（図１１）が行われる（Ｓ１００３）。対象ＰＳＮＧ１３０についての現在の省電力レベルは、取得されたＩ／Ｏ量が相対的に少ないためより省電力を強くすることが望ましいからである。
【００７３】
Ｓ１００２の判断結果が偽の場合（Ｓ１００２：Ｎｏ）、電力制御部１４２が、Ｉ／Ｏ性能要件テーブル４００を参照し、取得されたＩ／Ｏ量が、対象ＰＳＮＧ１３０に対応した上限４１１以上か否かを判断する（Ｓ１００４）。
【００７４】
Ｓ１００４の判断結果が偽の場合（Ｓ１００４：Ｎｏ）、処理が終了する。言い換えれば、電力制御部１４２が、対象ＰＳＮＧ１３０についての現在の省電力レベルを維持する。取得されたＩ／Ｏ量が、対象ＰＳＮＧ１３０についての現在の省電力レベルに対応したＩ／Ｏ性能要件を満たすからである。
【００７５】
Ｓ１００４の判断結果が真の場合（Ｓ１００２：Ｙｅｓ）、対象ＰＳＮＧ１３０についてのレベル下げの処理（図１２）が行われる（Ｓ１００５）。対象ＰＳＮＧ１３０についての現在の省電力レベルは、取得されたＩ／Ｏ量が相対的に多いためより省電力を弱くしＩ／Ｏ性能をより発揮できるようにすることが望ましいからである。
【００７６】
図１１は、対象ＰＳＮＧ１３０についてのレベル上げの処理のフローを示す。
【００７７】
電力制御部１４２が、ＰＳＮＧ管理テーブル３００を参照し、対象ＰＳＮＧ１３０の現在レベル３１１が上限３１３に到達しているか否かを判断する（Ｓ１１０１）。
【００７８】
Ｓ１１０１の判断結果が真の場合（Ｓ１１０１：Ｙｅｓ）、処理が終了する。言い換えれば、電力制御部１４２が、対象ＰＳＮＧ１３０についての現在の省電力レベルを維持する。対象ＰＳＮＧ１３０についての現在の省電力レベルをこれ以上上げることができないからである。
【００７９】
Ｓ１１０１の判断結果が偽の場合（Ｓ１１０１：Ｎｏ）、電力制御部１４２が、対象ＰＳＮＧ１３０についての現在の省電力レベルを一段階上げる（Ｓ１１０２）。具体的には、電力制御部１４２は、対象ＰＳＮＧ１３０についての現在レベル３１１を一段階上げ、且つ、マッピングテーブル５００を参照し、対象ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０のレジスタ２２０に、必要があれば、変更後の現在レベル３１１に対応したＮＶＲＡＭ省電力レベルに対応した指定値を設定する。
【００８０】
図１２は、対象ＰＳＮＧ１３０についてのレベル下げの処理のフローを示す。
【００８１】
電力制御部１４２が、ＰＳＮＧ管理テーブル３００を参照し、対象ＰＳＮＧ１３０の現在レベル３１１が下限３１２に到達しているか否かを判断する（Ｓ１２０１）。
【００８２】
Ｓ１２０１の判断結果が真の場合（Ｓ１２０１：Ｙｅｓ）、処理が終了する。言い換えれば、電力制御部１４２が、対象ＰＳＮＧ１３０についての現在の省電力レベルを維持する。対象ＰＳＮＧ１３０についての現在の省電力レベルをこれ以上下げることができないからである。
【００８３】
Ｓ１２０１の判断結果が偽の場合（Ｓ１２０１：Ｎｏ）、対象ＰＳＮＧ１３０の現在の省電力レベルを下げたと仮定した場合の全体消費電力の見積りが行われる。具体的には、電力制御部１４２が、電力モニタ部２９７に、対象ＰＳＮＧ１３０の現在の省電力レベルを一段階下げたと仮定した場合の全体消費電力の見積りを依頼する（Ｓ１２０２）。当該依頼に応答して、電力モニタ部２９７が、現在の全体消費電力の値を取得し（例えば、電力管理テーブル６００から取得し、又は、電源装置２５０の電源モニタ部２５１に記録されている全体消費電力の値を取得し）、当該全体消費電力の値と、マッピングテーブル５００を基に、対象ＰＳＮＧ１３０の現在の省電力レベルを一段階下げたと仮定した場合の全体消費電力を見積る（Ｓ１２０３）。例えば、電力モニタ部２９７は、対象ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０について、現在のＰＳＮＧ省電力レベルを一段階下げた後のＰＳＮＧ省電力レベルに対応した消費電力（ＮＶＲＡＭの消費電力）をマッピングテーブル５００から特定し、現在の全体消費電力の値と、特定された消費電力とを基に、現在のＰＳＮＧ省電力レベルを一段階下げたと仮定した場合の全体消費電力を見積り、見積られた全体消費電力（見積値）を、電力制御部１４２に応答する。電力制御部１４２は、見積値を電力モニタ部２９７から受ける（Ｓ１２０４）。なお、全体消費電力の見積りは、電力モニタ部２９７に代えて、現在の全体消費電力の値を基に電力制御部１４２により行われてもよい。
【００８４】
電力制御部１４２は、電力管理テーブル６００を参照し、Ｓ１２０４で得られた見積値（Ｅ１）がパワーキャッピング値（Ｐ）を超えるか否かを判断する（Ｓ１２０５）。
【００８５】
Ｓ１２０５の判断結果が偽の場合（Ｓ１２０５：Ｎｏ）、電力制御部１４２が、対象ＰＳＮＧ１３０についての現在の省電力レベルを一段階下げる（Ｓ１２１２）。具体的には、電力制御部１４２は、対象ＰＳＮＧ１３０についての現在レベル３１１を一段階下げ、且つ、マッピングテーブル５００を参照し、対象ＰＳＮＧ１３０に属する各ＮＶＲＡＭ１１０のレジスタ２２０に、必要があれば、変更後の現在レベル３１１に対応したＮＶＲＡＭ省電力レベルに対応した指定値を設定する。
【００８６】
Ｓ１２０５の判断結果が真の場合（Ｓ１２０５：Ｙｅｓ）、全体消費電力をパワーキャッピング値以下に維持するためにＰＳＮＧ１３０間で省電力レベルを調整することの試みがされる。具体的には、電力制御部１４２が、ＰＳＮＧ管理テーブル３００を参照し、対象ＰＳＮＧ１３０のＱｏｓ３０３よりも大きい（ＱｏＳプライオリティが低い）ＰＳＮＧ１３０が存在するか否かを判断する（Ｓ１２０６）。Ｓ１２０６の判断結果が偽の場合（Ｓ１２０６：Ｎｏ）、処理が終了する。ＱｏＳプライオリティが低いＰＳＮＧ１３０の省電力レベルを上げることで生じる余剰電力を対象ＰＳＮＧ１３０について消費するといったＰＳＮＧ１３０間での省電力レベル調整ができないからである。
【００８７】
Ｓ１２０６の判断結果が真の場合（Ｓ１２０６：Ｙｅｓ）、見つかったＰＳＮＧ１３０のうちＱｏＳ３０３が最も大きいＰＳＮＧ１３０（ＱｏＳプライオリティが最も低いＰＳＮＧ１３０）の現在の省電力レベルを一段階上げたと仮定した場合の全体消費電力の見積りが行われる。具体的には、電力制御部１４２が、電力モニタ部２９７に、ＱｏＳプライオリティが低いＰＳＮＧ１３０の現在の省電力レベルを一段階上げ対象ＰＳＮＧ１３０の現在の省電力レベルを一段階下げたと仮定した場合の全体消費電力の見積りを依頼する（Ｓ１２０７）。当該依頼に応答して、電力モニタ部２９７が、Ｓ１２０３と同様の方法で、ＱｏＳプライオリティが低いＰＳＮＧ１３０の現在の省電力レベルを一段階上げ対象ＰＳＮＧ１３０の現在の省電力レベルを一段階下げたと仮定した場合の全体消費電力を見積る（Ｓ１２０７）。電力モニタ部２９７は、見積られた全体消費電力の値である見積値を、電力制御部１４２に応答する。電力制御部１４２は、全体消費電力の見積値を電力モニタ部２９７から受ける（Ｓ１２０８）。なお、ここでも、全体消費電力の見積りは、電力モニタ部２９７に代えて、現在の全体消費電力の値を基に電力制御部１４２により行われてもよい。
【００８８】
電力制御部１４２は、電力管理テーブル６００を参照し、Ｓ１２０８で得られた見積値がパワーキャッピング値を超えるか否かを判断する（Ｓ１２０９）。Ｓ１２０９の判断結果が真の場合（Ｓ１２０９：Ｙｅｓ）、対象ＰＳＮＧ１３０よりもＱｏＳプライオリティが低いＰＳＮＧ１３０が一つもなければ、処理が終了する。言い換えれば、対象ＰＳＮＧ１３０よりもＱｏＳプライオリティが低いＰＳＮＧ１３０が未だ存在する限り、ＱｏＳプライオリティが低い程優先的に、Ｓ１２０７〜Ｓ１２０９が行われる。対象ＰＳＮＧ１３０よりもＱｏＳプライオリティが低いＰＳＮＧ１３０がゼロになるまで、Ｓ１２０７〜Ｓ１２０９の処理が繰り返される。
【００８９】
Ｓ１２０９の判断結果が偽の場合（Ｓ１２０９：Ｎｏ）、電力制御部１４２が、ＱｏＳプライオリティが低い当該ＰＳＮＧ１３０の現在の省電力レベル（現在レベル３１１）を一段階上げて（Ｓ１２１１）、対象ＰＳＮＧ１３０についての現在の省電力レベルを一段階下げる（Ｓ１２１２）。このようにして、ＱｏＳプライオリティが低いＰＳＮＧ１３０の省電力レベルを上げることで生じる余剰電力を対象ＰＳＮＧ１３０について消費することが可能となり、Ｉ／Ｏ性能と省電力との両立を維持することができる。
【実施例２】
【００９０】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。また、以下、一つのＰＳＮＧ１３０を例に取る（実施例２の説明において「対象ＰＳＮＧ１３０」）。
【００９１】
図１３は、実施例２に係るマッピングテーブルの構成を示す。
【００９２】
本実施例では、対象ＰＳＮＧ１３０の各ＰＳＮＧ省電力レベルについて、各ＮＶＲＡＭ１１０について該当するＮＶＲＡＭ省電力レベルは、当該ＮＶＲＡＭ１１０が属するＲＡＩＤグループの数に依存する。図１３の例によれば、ＰＳＮＧ省電力レベル“Ｌｅｖｅｌ１”の場合、ＮＶＲＡＭ１が属するＲＡＩＤグループ１２０の数が１以上３未満であれば、ＮＶＲＡＭ１の省電力レベルは“Ｌｖ１”であるが、ＮＶＲＡＭ１が属するＲＡＩＤグループ１２０の数が３以上であれば、ＮＶＲＡＭ１の省電力レベルは“Ｎｏｒｍａｌ”である。
【００９３】
本実施例によれば、Ｉ／Ｏ性能と省電力との一層の両立が期待できる。
【００９４】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【００９５】
１０１：記憶制御システム
【図１】
2019215759.tif 000003
【図２】
2019215759.tif 000004
【図３】
2019215759.tif 000005
【図４】
2019215759.tif 000006
【図５】
2019215759.tif 000007
【図６】
2019215759.tif 000008
【図７】
2019215759.tif 000009
【図８】
2019215759.tif 000010
【図９】
2019215759.tif 000011
【図１０】
2019215759.tif 000012
【図１１】
2019215759.tif 000013
【図１２】
2019215759.tif 000014
【図１３】
2019215759.tif 000015